From a148ecab8081bd0394b8ff9c24757fecbc77e4e8 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Tue, 25 Apr 2023 01:32:48 -0400 Subject: [PATCH] Add King's Rock and more berry types --- public/images/items.json | 2316 ++++++++++++++------------ public/images/items.png | Bin 19900 -> 21434 bytes public/images/items/apicot_berry.png | Bin 0 -> 290 bytes public/images/items/enigma_berry.png | Bin 0 -> 295 bytes public/images/items/ganlon_berry.png | Bin 0 -> 336 bytes public/images/items/lansat_berry.png | Bin 0 -> 322 bytes public/images/items/liechi_berry.png | Bin 0 -> 347 bytes public/images/items/petaya_berry.png | Bin 0 -> 375 bytes public/images/items/salac_berry.png | Bin 0 -> 345 bytes public/images/items/starf_berry.png | Bin 0 -> 320 bytes src/battle-phases.ts | 16 +- src/battle-scene.ts | 2 +- src/data/battler-tag.ts | 27 +- src/data/berry.ts | 72 +- src/data/move.ts | 13 +- src/data/pokemon-evolutions.ts | 6 +- src/modifier/modifier-type.ts | 28 +- src/modifier/modifier.ts | 33 +- src/pokemon.ts | 8 + 19 files changed, 1417 insertions(+), 1104 deletions(-) create mode 100644 public/images/items/apicot_berry.png create mode 100644 public/images/items/enigma_berry.png create mode 100644 public/images/items/ganlon_berry.png create mode 100644 public/images/items/lansat_berry.png create mode 100644 public/images/items/liechi_berry.png create mode 100644 public/images/items/petaya_berry.png create mode 100644 public/images/items/salac_berry.png create mode 100644 public/images/items/starf_berry.png diff --git a/public/images/items.json b/public/images/items.json index b5f778fdc..cb5cd289f 100644 --- a/public/images/items.json +++ b/public/images/items.json @@ -4,8 +4,8 @@ "image": "items.png", "format": "RGBA8888", "size": { - "w": 248, - "h": 248 + "w": 256, + "h": 256 }, "scale": 1, "frames": [ @@ -136,7 +136,7 @@ } }, { - "filename": "scanner", + "filename": "salac_berry", "rotated": false, "trimmed": true, "sourceSize": { @@ -157,7 +157,7 @@ } }, { - "filename": "silk_scarf", + "filename": "scanner", "rotated": false, "trimmed": true, "sourceSize": { @@ -178,7 +178,7 @@ } }, { - "filename": "sun_stone", + "filename": "silk_scarf", "rotated": false, "trimmed": true, "sourceSize": { @@ -198,6 +198,27 @@ "h": 24 } }, + { + "filename": "sun_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 147, + "y": 0, + "w": 24, + "h": 24 + } + }, { "filename": "big_root", "rotated": false, @@ -213,7 +234,7 @@ "h": 24 }, "frame": { - "x": 147, + "x": 171, "y": 0, "w": 23, "h": 24 @@ -234,7 +255,7 @@ "h": 23 }, "frame": { - "x": 170, + "x": 194, "y": 0, "w": 24, "h": 23 @@ -254,27 +275,6 @@ "w": 24, "h": 23 }, - "frame": { - "x": 194, - "y": 0, - "w": 24, - "h": 23 - } - }, - { - "filename": "scope-lens", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, "frame": { "x": 218, "y": 0, @@ -388,7 +388,7 @@ } }, { - "filename": "silver_powder", + "filename": "max_revive", "rotated": false, "trimmed": true, "sourceSize": { @@ -396,16 +396,37 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, - "y": 11, - "w": 24, - "h": 15 + "x": 5, + "y": 4, + "w": 22, + "h": 24 }, "frame": { "x": 0, "y": 232, - "w": 24, - "h": 15 + "w": 22, + "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": 22, + "y": 232, + "w": 21, + "h": 24 } }, { @@ -472,7 +493,7 @@ } }, { - "filename": "twisted_spoon", + "filename": "scope-lens", "rotated": false, "trimmed": true, "sourceSize": { @@ -492,6 +513,27 @@ "h": 23 } }, + { + "filename": "twisted_spoon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 23 + }, + "frame": { + "x": 64, + "y": 24, + "w": 24, + "h": 23 + } + }, { "filename": "berry_pouch", "rotated": false, @@ -507,7 +549,7 @@ "h": 23 }, "frame": { - "x": 64, + "x": 88, "y": 24, "w": 23, "h": 23 @@ -528,7 +570,7 @@ "h": 22 }, "frame": { - "x": 87, + "x": 111, "y": 24, "w": 24, "h": 22 @@ -549,7 +591,7 @@ "h": 22 }, "frame": { - "x": 111, + "x": 135, "y": 24, "w": 24, "h": 22 @@ -570,7 +612,7 @@ "h": 22 }, "frame": { - "x": 135, + "x": 159, "y": 24, "w": 23, "h": 22 @@ -591,33 +633,12 @@ "h": 23 }, "frame": { - "x": 158, + "x": 182, "y": 24, "w": 22, "h": 23 } }, - { - "filename": "max_revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 24 - }, - "frame": { - "x": 180, - "y": 23, - "w": 22, - "h": 24 - } - }, { "filename": "rare_candy", "rotated": false, @@ -633,14 +654,14 @@ "h": 23 }, "frame": { - "x": 202, + "x": 204, "y": 23, "w": 23, "h": 23 } }, { - "filename": "rarer_candy", + "filename": "dragon_fang", "rotated": false, "trimmed": true, "sourceSize": { @@ -648,15 +669,15 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, + "x": 5, "y": 5, - "w": 23, + "w": 21, "h": 23 }, "frame": { - "x": 225, + "x": 227, "y": 23, - "w": 23, + "w": 21, "h": 23 } }, @@ -681,6 +702,27 @@ "h": 24 } }, + { + "filename": "rarer_candy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 49, + "y": 47, + "w": 23, + "h": 23 + } + }, { "filename": "fire_stone", "rotated": false, @@ -696,12 +738,159 @@ "h": 23 }, "frame": { - "x": 49, + "x": 72, "y": 47, "w": 22, "h": 23 } }, + { + "filename": "focus_sash", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 94, + "y": 47, + "w": 22, + "h": 23 + } + }, + { + "filename": "never_melt_ice", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 116, + "y": 46, + "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": 138, + "y": 46, + "w": 22, + "h": 23 + } + }, + { + "filename": "reaper_cloth", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 160, + "y": 46, + "w": 22, + "h": 23 + } + }, + { + "filename": "charcoal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 182, + "y": 47, + "w": 22, + "h": 22 + } + }, + { + "filename": "dire_hit", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 204, + "y": 46, + "w": 22, + "h": 22 + } + }, + { + "filename": "electirizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 226, + "y": 46, + "w": 22, + "h": 22 + } + }, { "filename": "max_elixir", "rotated": false, @@ -724,7 +913,7 @@ } }, { - "filename": "oval_charm", + "filename": "shiny_charm", "rotated": false, "trimmed": true, "sourceSize": { @@ -745,91 +934,7 @@ } }, { - "filename": "dragon_fang", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 71, - "y": 47, - "w": 21, - "h": 23 - } - }, - { - "filename": "focus_sash", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 92, - "y": 46, - "w": 22, - "h": 23 - } - }, - { - "filename": "never_melt_ice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 114, - "y": 46, - "w": 22, - "h": 23 - } - }, - { - "filename": "reaper_cloth", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 136, - "y": 46, - "w": 22, - "h": 23 - } - }, - { - "filename": "charcoal", + "filename": "enigma_berry", "rotated": false, "trimmed": true, "sourceSize": { @@ -842,116 +947,32 @@ "w": 22, "h": 22 }, - "frame": { - "x": 158, - "y": 47, - "w": 22, - "h": 22 - } - }, - { - "filename": "dire_hit", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 180, - "y": 47, - "w": 22, - "h": 22 - } - }, - { - "filename": "electirizer", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 202, - "y": 46, - "w": 22, - "h": 22 - } - }, - { - "filename": "sacred_ash", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 24, - "h": 20 - }, - "frame": { - "x": 224, - "y": 46, - "w": 24, - "h": 20 - } - }, - { - "filename": "soft_sand", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 24, - "h": 20 - }, - "frame": { - "x": 224, - "y": 66, - "w": 24, - "h": 20 - } - }, - { - "filename": "shiny_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 21, - "h": 24 - }, "frame": { "x": 72, "y": 70, - "w": 21, - "h": 24 + "w": 22, + "h": 22 + } + }, + { + "filename": "ganlon_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 94, + "y": 70, + "w": 22, + "h": 22 } }, { @@ -969,7 +990,7 @@ "h": 22 }, "frame": { - "x": 93, + "x": 116, "y": 69, "w": 22, "h": 22 @@ -990,7 +1011,7 @@ "h": 22 }, "frame": { - "x": 115, + "x": 138, "y": 69, "w": 22, "h": 22 @@ -1011,7 +1032,7 @@ "h": 22 }, "frame": { - "x": 137, + "x": 160, "y": 69, "w": 22, "h": 22 @@ -1032,12 +1053,33 @@ "h": 22 }, "frame": { - "x": 159, + "x": 182, "y": 69, "w": 22, "h": 22 } }, + { + "filename": "lansat_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 21, + "h": 23 + }, + "frame": { + "x": 204, + "y": 68, + "w": 21, + "h": 23 + } + }, { "filename": "leaf_stone", "rotated": false, @@ -1053,96 +1095,12 @@ "h": 23 }, "frame": { - "x": 181, - "y": 69, + "x": 225, + "y": 68, "w": 21, "h": 23 } }, - { - "filename": "protector", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 202, - "y": 68, - "w": 22, - "h": 22 - } - }, - { - "filename": "choice_specs", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 24, - "h": 18 - }, - "frame": { - "x": 224, - "y": 86, - "w": 24, - "h": 18 - } - }, - { - "filename": "deep_sea_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 20 - }, - "frame": { - "x": 202, - "y": 90, - "w": 22, - "h": 20 - } - }, - { - "filename": "dragon_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 24, - "h": 18 - }, - "frame": { - "x": 224, - "y": 104, - "w": 24, - "h": 18 - } - }, { "filename": "moon_stone", "rotated": false, @@ -1164,6 +1122,27 @@ "h": 21 } }, + { + "filename": "protector", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 18, + "y": 119, + "w": 22, + "h": 22 + } + }, { "filename": "sharp_beak", "rotated": false, @@ -1180,34 +1159,13 @@ }, "frame": { "x": 18, - "y": 119, + "y": 141, "w": 21, "h": 23 } }, { - "filename": "mystic_water", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 18, - "y": 142, - "w": 20, - "h": 23 - } - }, - { - "filename": "dubious_disc", + "filename": "binding_band", "rotated": false, "trimmed": true, "sourceSize": { @@ -1216,15 +1174,15 @@ }, "spriteSourceSize": { "x": 5, - "y": 7, - "w": 22, - "h": 19 + "y": 6, + "w": 23, + "h": 20 }, "frame": { "x": 18, - "y": 165, - "w": 22, - "h": 19 + "y": 164, + "w": 23, + "h": 20 } }, { @@ -1290,6 +1248,279 @@ "h": 21 } }, + { + "filename": "starf_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 40, + "y": 119, + "w": 22, + "h": 22 + } + }, + { + "filename": "mystic_water", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 20, + "h": 23 + }, + "frame": { + "x": 39, + "y": 141, + "w": 20, + "h": 23 + } + }, + { + "filename": "hyper_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 41, + "y": 164, + "w": 17, + "h": 23 + } + }, + { + "filename": "potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 41, + "y": 187, + "w": 17, + "h": 23 + } + }, + { + "filename": "metal_coat", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 19, + "h": 22 + }, + "frame": { + "x": 41, + "y": 210, + "w": 19, + "h": 22 + } + }, + { + "filename": "pp_max", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 43, + "y": 232, + "w": 16, + "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": 59, + "y": 232, + "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": 61, + "y": 94, + "w": 16, + "h": 24 + } + }, + { + "filename": "sacred_ash", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 24, + "h": 20 + }, + "frame": { + "x": 77, + "y": 92, + "w": 24, + "h": 20 + } + }, + { + "filename": "full_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 15, + "h": 23 + }, + "frame": { + "x": 62, + "y": 118, + "w": 15, + "h": 23 + } + }, + { + "filename": "soft_sand", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 24, + "h": 20 + }, + "frame": { + "x": 77, + "y": 112, + "w": 24, + "h": 20 + } + }, + { + "filename": "sitrus_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 20, + "h": 22 + }, + "frame": { + "x": 59, + "y": 141, + "w": 20, + "h": 22 + } + }, + { + "filename": "zinc", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 101, + "y": 92, + "w": 16, + "h": 24 + } + }, { "filename": "thunder_stone", "rotated": false, @@ -1305,8 +1536,8 @@ "h": 22 }, "frame": { - "x": 39, - "y": 119, + "x": 117, + "y": 91, "w": 22, "h": 22 } @@ -1326,8 +1557,8 @@ "h": 22 }, "frame": { - "x": 61, - "y": 94, + "x": 139, + "y": 91, "w": 22, "h": 22 } @@ -1347,33 +1578,12 @@ "h": 22 }, "frame": { - "x": 61, - "y": 116, + "x": 161, + "y": 91, "w": 22, "h": 22 } }, - { - "filename": "pp_max", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 83, - "y": 94, - "w": 16, - "h": 24 - } - }, { "filename": "tm_dragon", "rotated": false, @@ -1389,7 +1599,7 @@ "h": 22 }, "frame": { - "x": 99, + "x": 183, "y": 91, "w": 22, "h": 22 @@ -1410,7 +1620,7 @@ "h": 22 }, "frame": { - "x": 121, + "x": 205, "y": 91, "w": 22, "h": 22 @@ -1431,117 +1641,12 @@ "h": 22 }, "frame": { - "x": 143, + "x": 227, "y": 91, "w": 22, "h": 22 } }, - { - "filename": "pp_up", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 165, - "y": 91, - "w": 16, - "h": 24 - } - }, - { - "filename": "dusk_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 181, - "y": 92, - "w": 21, - "h": 21 - } - }, - { - "filename": "deep_sea_tooth", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 202, - "y": 110, - "w": 22, - "h": 21 - } - }, - { - "filename": "poison_barb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 181, - "y": 113, - "w": 21, - "h": 21 - } - }, - { - "filename": "binding_band", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 23, - "h": 20 - }, - "frame": { - "x": 83, - "y": 118, - "w": 23, - "h": 20 - } - }, { "filename": "tm_fighting", "rotated": false, @@ -1557,12 +1662,33 @@ "h": 22 }, "frame": { - "x": 106, - "y": 113, + "x": 79, + "y": 132, "w": 22, "h": 22 } }, + { + "filename": "super_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 101, + "y": 116, + "w": 17, + "h": 23 + } + }, { "filename": "tm_fire", "rotated": false, @@ -1578,75 +1704,12 @@ "h": 22 }, "frame": { - "x": 128, + "x": 118, "y": 113, "w": 22, "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": 150, - "y": 113, - "w": 15, - "h": 23 - } - }, - { - "filename": "protein", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 165, - "y": 115, - "w": 16, - "h": 24 - } - }, - { - "filename": "black_glasses", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 23, - "h": 17 - }, - "frame": { - "x": 224, - "y": 122, - "w": 23, - "h": 17 - } - }, { "filename": "tm_flying", "rotated": false, @@ -1662,75 +1725,12 @@ "h": 22 }, "frame": { - "x": 202, - "y": 131, + "x": 140, + "y": 113, "w": 22, "h": 22 } }, - { - "filename": "shiny_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 181, - "y": 134, - "w": 21, - "h": 21 - } - }, - { - "filename": "shell_bell", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 23, - "h": 20 - }, - "frame": { - "x": 224, - "y": 139, - "w": 23, - "h": 20 - } - }, - { - "filename": "prism_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 15, - "h": 15 - }, - "frame": { - "x": 24, - "y": 232, - "w": 15, - "h": 15 - } - }, { "filename": "tm_ghost", "rotated": false, @@ -1746,159 +1746,12 @@ "h": 22 }, "frame": { - "x": 202, - "y": 153, + "x": 162, + "y": 113, "w": 22, "h": 22 } }, - { - "filename": "wise_glasses", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 23, - "h": 17 - }, - "frame": { - "x": 224, - "y": 159, - "w": 23, - "h": 17 - } - }, - { - "filename": "hyper_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 38, - "y": 142, - "w": 17, - "h": 23 - } - }, - { - "filename": "lum_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 20, - "h": 19 - }, - "frame": { - "x": 40, - "y": 165, - "w": 20, - "h": 19 - } - }, - { - "filename": "metal_coat", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 19, - "h": 22 - }, - "frame": { - "x": 41, - "y": 184, - "w": 19, - "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": 41, - "y": 206, - "w": 20, - "h": 22 - } - }, - { - "filename": "gb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 41, - "y": 228, - "w": 20, - "h": 20 - } - }, - { - "filename": "zinc", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 55, - "y": 141, - "w": 16, - "h": 24 - } - }, { "filename": "tm_grass", "rotated": false, @@ -1914,33 +1767,12 @@ "h": 22 }, "frame": { - "x": 71, - "y": 138, + "x": 184, + "y": 113, "w": 22, "h": 22 } }, - { - "filename": "leftovers", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 15, - "h": 22 - }, - "frame": { - "x": 93, - "y": 138, - "w": 15, - "h": 22 - } - }, { "filename": "tm_ground", "rotated": false, @@ -1956,54 +1788,12 @@ "h": 22 }, "frame": { - "x": 108, - "y": 135, + "x": 206, + "y": 113, "w": 22, "h": 22 } }, - { - "filename": "magnet", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 130, - "y": 135, - "w": 20, - "h": 20 - } - }, - { - "filename": "potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 60, - "y": 165, - "w": 17, - "h": 23 - } - }, { "filename": "tm_ice", "rotated": false, @@ -2019,14 +1809,14 @@ "h": 22 }, "frame": { - "x": 77, - "y": 160, + "x": 228, + "y": 113, "w": 22, "h": 22 } }, { - "filename": "everstone", + "filename": "apicot_berry", "rotated": false, "trimmed": true, "sourceSize": { @@ -2035,15 +1825,15 @@ }, "spriteSourceSize": { "x": 6, - "y": 8, - "w": 20, - "h": 17 + "y": 6, + "w": 19, + "h": 20 }, "frame": { - "x": 60, - "y": 188, - "w": 20, - "h": 17 + "x": 101, + "y": 139, + "w": 19, + "h": 20 } }, { @@ -2061,75 +1851,12 @@ "h": 22 }, "frame": { - "x": 61, - "y": 205, + "x": 120, + "y": 135, "w": 22, "h": 22 } }, - { - "filename": "zoom_lens", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 61, - "y": 227, - "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": 82, - "y": 227, - "w": 19, - "h": 21 - } - }, - { - "filename": "super_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 80, - "y": 182, - "w": 17, - "h": 23 - } - }, { "filename": "tm_poison", "rotated": false, @@ -2145,33 +1872,12 @@ "h": 22 }, "frame": { - "x": 83, - "y": 205, + "x": 142, + "y": 135, "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": 99, - "y": 160, - "w": 17, - "h": 22 - } - }, { "filename": "tm_psychic", "rotated": false, @@ -2187,8 +1893,8 @@ "h": 22 }, "frame": { - "x": 97, - "y": 182, + "x": 164, + "y": 135, "w": 22, "h": 22 } @@ -2208,8 +1914,8 @@ "h": 22 }, "frame": { - "x": 105, - "y": 204, + "x": 186, + "y": 135, "w": 22, "h": 22 } @@ -2229,8 +1935,8 @@ "h": 22 }, "frame": { - "x": 105, - "y": 226, + "x": 208, + "y": 135, "w": 22, "h": 22 } @@ -2250,12 +1956,201 @@ "h": 22 }, "frame": { - "x": 116, - "y": 157, + "x": 230, + "y": 135, "w": 22, "h": 22 } }, + { + "filename": "deep_sea_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 20 + }, + "frame": { + "x": 79, + "y": 154, + "w": 22, + "h": 20 + } + }, + { + "filename": "black_glasses", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 23, + "h": 17 + }, + "frame": { + "x": 101, + "y": 159, + "w": 23, + "h": 17 + } + }, + { + "filename": "choice_specs", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 24, + "h": 18 + }, + "frame": { + "x": 124, + "y": 157, + "w": 24, + "h": 18 + } + }, + { + "filename": "dragon_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 24, + "h": 18 + }, + "frame": { + "x": 148, + "y": 157, + "w": 24, + "h": 18 + } + }, + { + "filename": "shell_bell", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 23, + "h": 20 + }, + "frame": { + "x": 172, + "y": 157, + "w": 23, + "h": 20 + } + }, + { + "filename": "deep_sea_tooth", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 195, + "y": 157, + "w": 22, + "h": 21 + } + }, + { + "filename": "liechi_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 217, + "y": 157, + "w": 22, + "h": 21 + } + }, + { + "filename": "metronome", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 17, + "h": 22 + }, + "frame": { + "x": 239, + "y": 157, + "w": 17, + "h": 22 + } + }, + { + "filename": "dusk_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 58, + "y": 164, + "w": 21, + "h": 21 + } + }, { "filename": "water_stone", "rotated": false, @@ -2271,8 +2166,8 @@ "h": 22 }, "frame": { - "x": 119, - "y": 179, + "x": 58, + "y": 185, "w": 22, "h": 22 } @@ -2292,12 +2187,54 @@ "h": 22 }, "frame": { - "x": 127, - "y": 201, + "x": 60, + "y": 207, "w": 22, "h": 22 } }, + { + "filename": "poison_barb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 80, + "y": 174, + "w": 21, + "h": 21 + } + }, + { + "filename": "dubious_disc", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 19 + }, + "frame": { + "x": 101, + "y": 176, + "w": 22, + "h": 19 + } + }, { "filename": "x_attack", "rotated": false, @@ -2313,8 +2250,8 @@ "h": 22 }, "frame": { - "x": 127, - "y": 223, + "x": 82, + "y": 195, "w": 22, "h": 22 } @@ -2334,12 +2271,33 @@ "h": 22 }, "frame": { - "x": 138, - "y": 155, + "x": 104, + "y": 195, "w": 22, "h": 22 } }, + { + "filename": "silver_powder", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 24, + "h": 15 + }, + "frame": { + "x": 82, + "y": 217, + "w": 24, + "h": 15 + } + }, { "filename": "x_sp_atk", "rotated": false, @@ -2355,12 +2313,33 @@ "h": 22 }, "frame": { - "x": 141, - "y": 177, + "x": 75, + "y": 232, "w": 22, "h": 22 } }, + { + "filename": "everstone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 17 + }, + "frame": { + "x": 106, + "y": 217, + "w": 20, + "h": 17 + } + }, { "filename": "x_sp_def", "rotated": false, @@ -2376,8 +2355,8 @@ "h": 22 }, "frame": { - "x": 149, - "y": 199, + "x": 97, + "y": 234, "w": 22, "h": 22 } @@ -2397,14 +2376,14 @@ "h": 22 }, "frame": { - "x": 149, - "y": 221, + "x": 119, + "y": 234, "w": 22, "h": 22 } }, { - "filename": "oval_stone", + "filename": "revive", "rotated": false, "trimmed": true, "sourceSize": { @@ -2412,16 +2391,100 @@ "h": 32 }, "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 19 + "x": 10, + "y": 8, + "w": 12, + "h": 17 }, "frame": { - "x": 163, - "y": 139, - "w": 18, - "h": 19 + "x": 242, + "y": 0, + "w": 12, + "h": 17 + } + }, + { + "filename": "wise_glasses", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 23, + "h": 17 + }, + "frame": { + "x": 124, + "y": 175, + "w": 23, + "h": 17 + } + }, + { + "filename": "shiny_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 126, + "y": 192, + "w": 21, + "h": 21 + } + }, + { + "filename": "zoom_lens", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 126, + "y": 213, + "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": 141, + "y": 234, + "w": 15, + "h": 22 } }, { @@ -2439,12 +2502,75 @@ "h": 19 }, "frame": { - "x": 160, - "y": 158, + "x": 147, + "y": 175, "w": 22, "h": 19 } }, + { + "filename": "gb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 147, + "y": 194, + "w": 20, + "h": 20 + } + }, + { + "filename": "magnet", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 147, + "y": 214, + "w": 20, + "h": 20 + } + }, + { + "filename": "lum_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 169, + "y": 177, + "w": 20, + "h": 19 + } + }, { "filename": "mb", "rotated": false, @@ -2460,33 +2586,12 @@ "h": 20 }, "frame": { - "x": 182, - "y": 155, + "x": 167, + "y": 196, "w": 20, "h": 20 } }, - { - "filename": "candy_jar", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 - }, - "frame": { - "x": 163, - "y": 177, - "w": 19, - "h": 20 - } - }, { "filename": "pb", "rotated": false, @@ -2502,8 +2607,8 @@ "h": 20 }, "frame": { - "x": 182, - "y": 175, + "x": 167, + "y": 216, "w": 20, "h": 20 } @@ -2523,8 +2628,29 @@ "h": 20 }, "frame": { - "x": 202, - "y": 175, + "x": 156, + "y": 236, + "w": 20, + "h": 20 + } + }, + { + "filename": "ub", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 176, + "y": 236, "w": 20, "h": 20 } @@ -2544,35 +2670,14 @@ "h": 19 }, "frame": { - "x": 222, - "y": 176, + "x": 189, + "y": 178, "w": 20, "h": 19 } }, { - "filename": "golden_egg", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 17, - "h": 20 - }, - "frame": { - "x": 171, - "y": 197, - "w": 17, - "h": 20 - } - }, - { - "filename": "ub", + "filename": "candy_jar", "rotated": false, "trimmed": true, "sourceSize": { @@ -2582,16 +2687,37 @@ "spriteSourceSize": { "x": 6, "y": 6, - "w": 20, + "w": 19, "h": 20 }, "frame": { - "x": 188, - "y": 195, - "w": 20, + "x": 209, + "y": 178, + "w": 19, "h": 20 } }, + { + "filename": "spell_tag", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 19, + "h": 21 + }, + "frame": { + "x": 187, + "y": 197, + "w": 19, + "h": 21 + } + }, { "filename": "hard_stone", "rotated": false, @@ -2607,14 +2733,14 @@ "h": 20 }, "frame": { - "x": 208, - "y": 195, + "x": 206, + "y": 198, "w": 19, "h": 20 } }, { - "filename": "lucky_egg", + "filename": "prism_scale", "rotated": false, "trimmed": true, "sourceSize": { @@ -2622,16 +2748,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 17, - "h": 20 + "x": 9, + "y": 8, + "w": 15, + "h": 15 }, "frame": { - "x": 171, - "y": 217, - "w": 17, - "h": 20 + "x": 187, + "y": 218, + "w": 15, + "h": 15 } }, { @@ -2649,12 +2775,33 @@ "h": 19 }, "frame": { - "x": 188, - "y": 215, + "x": 202, + "y": 218, "w": 19, "h": 19 } }, + { + "filename": "oval_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, + "h": 19 + }, + "frame": { + "x": 196, + "y": 237, + "w": 18, + "h": 19 + } + }, { "filename": "razor_fang", "rotated": false, @@ -2670,14 +2817,14 @@ "h": 20 }, "frame": { - "x": 207, - "y": 215, + "x": 228, + "y": 179, "w": 18, "h": 20 } }, { - "filename": "revive", + "filename": "golden_egg", "rotated": false, "trimmed": true, "sourceSize": { @@ -2685,16 +2832,37 @@ "h": 32 }, "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 12, - "h": 17 + "x": 7, + "y": 6, + "w": 17, + "h": 20 }, "frame": { - "x": 150, - "y": 136, - "w": 12, - "h": 17 + "x": 225, + "y": 199, + "w": 17, + "h": 20 + } + }, + { + "filename": "lucky_egg", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 17, + "h": 20 + }, + "frame": { + "x": 221, + "y": 219, + "w": 17, + "h": 20 } } ] @@ -2703,6 +2871,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:b6805cfc15896d75dbfaf0817c2b16ed:fb72ca38a99466642275b1256b378b18:110e074689c9edd2c54833ce2e4d9270$" + "smartupdate": "$TexturePacker:SmartUpdate:d9fed6b45a0ede021dc0e0f8ffebf257:0d52b1a17d46f9faa1086dd8feb3b9eb:110e074689c9edd2c54833ce2e4d9270$" } } diff --git a/public/images/items.png b/public/images/items.png index a369477d00bc9c9b5e7f87ee4d798d8a76d00749..1f37d8214b4b68f463cfc4a869f0518783c0b2fd 100644 GIT binary patch literal 21434 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 diff --git a/public/images/items/apicot_berry.png b/public/images/items/apicot_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..2cfa66acdfa66ec4347db53b2de05488f858e782 GIT binary patch literal 290 zcmV+-0p0$IP)D`Y46QVO3TJFFszLzPG#c#WN(h1|;T()t4Zg zV8T&5%|U_!hik7V!C56dB>*_U5Kvtq_w_jel@;&;08)1^1t_tbOn~oCYkh$joDu+B zT|mN8@Zti$;1mFq5-I}m3b{%FoYe)k_8hK3Rp6ThfIQh^0+c`r%SouiV-X3A%N2_L oA>%b9y!!7s)hh6omKLqN0Vyjg;r=*#iU0rr07*qoM6N<$g1nA&yZ`_I literal 0 HcmV?d00001 diff --git a/public/images/items/enigma_berry.png b/public/images/items/enigma_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..26c7f11ee9c7f3b6e1303397e03f634b1f8c7ba6 GIT binary patch literal 295 zcmV+?0oeYDP) zK?=hl5Jhto&*QaR_8K`twpn)BD|DG7WScU=FP~vj0{z-W9T+eMe9zGsr)k895no11 z>G0VVyzkqwJ?}Li>s+(B1i%dE=cW=2H&7|1rkAijxr7a9P{5aEsTm36ob?i)1kjIn zCSWNOuz?I@Ky0=Mj`Bl5Ccy##M{u5f6M+cKUjv}1l0<;v9vscw+I%+11bn#x;57&Q zy-((wMgRk!Z8R3(wru^cz`clM_7J!VmzLg_KY}w5Df=sO>HXTCL8T`jz+C>O&`1EE t6b_kg7Y~%550h@U9hUeBc*KamiWlr|j~!;$M{)oF002ovPDHLkV1fnLdQJcU literal 0 HcmV?d00001 diff --git a/public/images/items/ganlon_berry.png b/public/images/items/ganlon_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..81aecd83011a1f8dafbefd672e3ebc2c573dc119 GIT binary patch literal 336 zcmV-W0k8gvP) zu?@m75JfXeR-t7CMxf0ItdNp2B`Z);Qo3afTF|%jrH^w_LVR}RlfDpE;(PvgcHDI> zTC~^^ecykUR3-6sd`3O)@0p5%Fu5iqjEW%cD?c8FS+e0g{fN)HLFlSOxJ3w+Lxz literal 0 HcmV?d00001 diff --git a/public/images/items/lansat_berry.png b/public/images/items/lansat_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..6b2a8fb47601d96e5a665bf3ddf9646a3577b75b GIT binary patch literal 322 zcmV-I0lof-P) zu?@m75JfYJSD<8tj6s=}l9DoOxMYQtDOrJ%5onD*=vzOhC_>5w3*?i&94pcNcjt?e zrm0cm*CK?Fikip!kcvUTxWC5o0L8m-h^Gue5MEoknNquBn+Sn!@JJrx<*gyUbnCly z0BXv_ND57M Upc`pgx&QzG07*qoM6N<$g6~d;<^TWy literal 0 HcmV?d00001 diff --git a/public/images/items/liechi_berry.png b/public/images/items/liechi_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..492ef7e86f1a5c1e8b0a08f32b61512a76a2b9c2 GIT binary patch literal 347 zcmV-h0i^zkP) zu?@mN3`H{nBistCLCGqNzzUR^BzB=N$B>l^#f?%bpX{B z3qS{45MuxoV~+=s=do1r*wsS|76VXRhfpCX$i6f6bhsRt1DLX$CxZ670PLVmLA==h zNQh<`LR~NxV6N|Ky=xcH1&UF~_I#}GuIlX^P*4|+o&a4|6wd-+x1oyCa(mvhiqEZN twcOgi+E21pXe-WM_1FC)DpBHZ;|`ya7#B7{t(^b>002ovPDHLkV1mFcksJU3 literal 0 HcmV?d00001 diff --git a/public/images/items/petaya_berry.png b/public/images/items/petaya_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..e1dae467187c346db760ccfe29c39b7eeb108f1d GIT binary patch literal 375 zcmV--0f_#IP) zu?>ST5JfXWMqmZjNSP5RSs`Ug+Kj*&lo^3FQl@qEQJ!@=K_bN`()gs4!NC3R{}03A zP@_hTplF&VF_OE252tnkou^wGhc2J*vSL8H_L#vn7f!%~`W2JRg%Yqb0}L3W5*4fs zKNGPJYeZ&_S#g^0n>G|#0g(6E%C7VK<(!`5C12;BVk`8Zid$b*Tr1YGof842?FFnT z>IGClW>$>!5bzC%6~&E+`~p(~hU^yDHX%fdS1%C2NehZHcI7BU7WKdy0h^HUR#;-; z1T?3@G@g=%wfBTrfY%gVOYZX-(ts4>J>MeXJrCQ4RcL9f$B?d5|B(cqhkgqd72e?e zc+Rhx1x6*!Glp$K9-JM{`^~n@x1!hv4{nQk(6DXS6A&=q{@S+;A+Y zu?>ST6hs-tZOW{{C}}AvQ)Z2fkTxTvq)nL-XdPW~=<;P0LB3;wZ0Q6T$@hG=KQv8k zwQZ$^5Tag-LKHI}##<}`0n_Vno&`XkRThB$-hDvO?D0Is*VxDQ(oR=b2u*+hG=^YE zp&t-`Nr9#WgA~NYR0VS;p~i&5JM<$JHvkNN><*JSbDcHKvjD&p5GwTPaxfX1y8v+Z zb0UO_>A1$v!BY@0OWi}ZCM<@sn@$HOl zu?@m75JfYJTSiFf6(}hwvjS_Rq@-kpl#GxzC1q9!`oOo2lMRK>L;|1m6}zzCzwn{%*PiIZf@WcSi;BU zVrzh1{SFKPOkr+f02^Q { const result = !isProtected ? target.apply(user, this.move) : MoveResult.NO_EFFECT; ++user.turnData.hitCount; - user.getMoveHistory().push({ move: this.move.moveId, result: result, virtual: this.move.virtual }); + user.pushMoveHistory({ move: this.move.moveId, result: result, virtual: this.move.virtual }); if (result !== MoveResult.NO_EFFECT && result !== MoveResult.FAILED) { applyMoveAttrs(MoveEffectAttr, user, target, this.move.getMove()); + if (result < MoveResult.NO_EFFECT) { + const flinched = new Utils.BooleanHolder(false); + user.scene.applyModifiers(FlinchChanceModifier, user.isPlayer(), user, flinched); + if (flinched.value) + target.addTag(BattlerTagType.FLINCHED, undefined, this.move.moveId, user.id); + } // Charge attribute with charge effect takes all effect attributes and applies them to charge stage, so ignore them if this is present if (!isProtected && target.hp && !this.move.getMove().getAttrs(ChargeAttr).filter(ca => (ca as ChargeAttr).chargeEffect).length) applyMoveAttrs(MoveHitEffectAttr, user, target, this.move.getMove()); diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 39f5d4137..a6715f5af 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -470,7 +470,7 @@ export default class BattleScene extends Phaser.Scene { this.arenaBgTransition.setPosition(0, 0); this.arenaPlayer.setPosition(340, 20); - this.arenaPlayerTransition.setPosition(40, 2); + this.arenaPlayerTransition.setPosition(40, 20); this.arenaEnemy.setPosition(-240, 13); this.arenaNextEnemy.setPosition(-240, 13); diff --git a/src/data/battler-tag.ts b/src/data/battler-tag.ts index 3ef76ef72..38fd5e62d 100644 --- a/src/data/battler-tag.ts +++ b/src/data/battler-tag.ts @@ -5,7 +5,7 @@ import Pokemon from "../pokemon"; import { Stat } from "./pokemon-stat"; import { StatusEffect } from "./status-effect"; import * as Utils from "../utils"; -import { Moves, allMoves } from "./move"; +import { LapseBattlerTagAttr, Moves, allMoves } from "./move"; import { Type } from "./type"; export enum BattlerTagType { @@ -30,6 +30,7 @@ export enum BattlerTagType { PROTECTED, FLYING, UNDERGROUND, + CRIT_BOOST, NO_CRIT, BYPASS_SLEEP, IGNORE_FLYING @@ -462,6 +463,28 @@ export class HideSpriteTag extends BattlerTag { } } +export class CritBoostTag extends BattlerTag { + constructor(tagType: BattlerTagType, sourceMove: Moves) { + super(tagType, BattlerTagLapseType.TURN_END, 1, sourceMove); + } + + onAdd(pokemon: Pokemon): void { + super.onAdd(pokemon); + + pokemon.scene.queueMessage(getPokemonMessage(pokemon, ' is getting\npumped!')); + } + + lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { + return lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); + } + + onRemove(pokemon: Pokemon): void { + super.onRemove(pokemon); + + pokemon.scene.queueMessage(getPokemonMessage(pokemon, ' relaxed.')); + } +} + export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourceMove: Moves, sourceId: integer): BattlerTag { switch (tagType) { case BattlerTagType.RECHARGING: @@ -501,6 +524,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc case BattlerTagType.FLYING: case BattlerTagType.UNDERGROUND: return new HideSpriteTag(tagType, turnCount, sourceMove); + case BattlerTagType.CRIT_BOOST: + return new CritBoostTag(tagType, sourceMove); case BattlerTagType.NO_CRIT: return new BattlerTag(tagType, BattlerTagLapseType.AFTER_MOVE, turnCount, sourceMove); case BattlerTagType.BYPASS_SLEEP: diff --git a/src/data/berry.ts b/src/data/berry.ts index 34546f767..c346c92c8 100644 --- a/src/data/berry.ts +++ b/src/data/berry.ts @@ -1,21 +1,26 @@ -import { MessagePhase, PokemonHealPhase } from "../battle-phases"; +import { PokemonHealPhase, StatChangePhase } from "../battle-phases"; import { getPokemonMessage } from "../messages"; -import Pokemon from "../pokemon"; +import Pokemon, { MoveResult } from "../pokemon"; +import { getBattleStatName } from "./battle-stat"; +import { BattleStat } from "./battle-stat"; import { BattlerTagType } from "./battler-tag"; import { getStatusEffectHealText } from "./status-effect"; export enum BerryType { SITRUS, - LUM + LUM, + ENIGMA, + LIECHI, + GANLON, + SALAC, + PETAYA, + APICOT, + LANSAT, + STARF } export function getBerryName(berryType: BerryType) { - switch (berryType) { - case BerryType.SITRUS: - return 'SITRUS BERRY'; - case BerryType.LUM: - return 'LUM BERRY'; - } + return `${BerryType[berryType]} BERRY`; } export function getBerryEffectDescription(berryType: BerryType) { @@ -24,6 +29,19 @@ export function getBerryEffectDescription(berryType: BerryType) { return 'Restores 25% HP if HP is below 50%'; case BerryType.LUM: return 'Cures any non-volatile status condition and confusion'; + case BerryType.ENIGMA: + return 'Restores 25% HP if hit by a super effective move'; + case BerryType.LIECHI: + case BerryType.GANLON: + case BerryType.SALAC: + case BerryType.PETAYA: + case BerryType.APICOT: + const stat = (berryType - BerryType.LIECHI) as BattleStat; + return `Raises ${getBattleStatName(stat)} if HP is below 25%`; + case BerryType.LANSAT: + return 'Raises critical hit ratio if HP is below 25%'; + case BerryType.STARF: + return 'Sharply raises a random stat if HP is below 25%'; } } @@ -35,6 +53,26 @@ export function getBerryPredicate(berryType: BerryType): BerryPredicate { return (pokemon: Pokemon) => pokemon.getHpRatio() < 0.5; case BerryType.LUM: return (pokemon: Pokemon) => !!pokemon.status || !!pokemon.getTag(BattlerTagType.CONFUSED); + case BerryType.ENIGMA: + return (pokemon: Pokemon) => { + const opponent = pokemon.isPlayer() ? pokemon.scene.getEnemyPokemon() : pokemon.scene.getPlayerPokemon(); + const opponentLastMove = opponent ? opponent.getLastXMoves(1).find(() => true) : null; // TODO: Update so this works even if opponent has fainted + + return opponentLastMove && opponentLastMove.turn === pokemon.scene.currentBattle?.turn - 1 && opponentLastMove.result === MoveResult.SUPER_EFFECTIVE; + }; + case BerryType.LIECHI: + case BerryType.GANLON: + case BerryType.SALAC: + case BerryType.PETAYA: + case BerryType.APICOT: + return (pokemon: Pokemon) => { + const battleStat = (berryType - BerryType.LIECHI) as BattleStat; + return pokemon.getHpRatio() < 0.25 && pokemon.summonData.battleStats[battleStat] < 6; + }; + case BerryType.LANSAT: + return (pokemon: Pokemon) => pokemon.getHpRatio() < 0.25 && !pokemon.getTag(BattlerTagType.CRIT_BOOST); + case BerryType.STARF: + return (pokemon: Pokemon) => pokemon.getHpRatio() < 0.25; } } @@ -43,6 +81,7 @@ export type BerryEffectFunc = (pokemon: Pokemon) => void; export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { switch (berryType) { case BerryType.SITRUS: + case BerryType.ENIGMA: return (pokemon: Pokemon) => { pokemon.scene.unshiftPhase(new PokemonHealPhase(pokemon.scene, pokemon.isPlayer(), Math.floor(pokemon.getMaxHp() / 4), getPokemonMessage(pokemon, `'s ${getBerryName(berryType)}\nrestored its HP!`), true)); }; @@ -55,5 +94,20 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { } else if (pokemon.getTag(BattlerTagType.CONFUSED)) pokemon.lapseTag(BattlerTagType.CONFUSED); }; + case BerryType.LIECHI: + case BerryType.GANLON: + case BerryType.SALAC: + case BerryType.PETAYA: + case BerryType.APICOT: + return (pokemon: Pokemon) => { + const battleStat = (berryType - BerryType.LIECHI) as BattleStat; + pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.isPlayer(), [ battleStat ], 1)); + }; + case BerryType.LANSAT: + return (pokemon: Pokemon) => { + pokemon.addTag(BattlerTagType.CRIT_BOOST); + }; + case BerryType.STARF: + return (pokemon: Pokemon) => pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.isPlayer(), [ BattleStat.RAND ], 2)); } } \ No newline at end of file diff --git a/src/data/move.ts b/src/data/move.ts index dc049f6c4..9d7de0e8c 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -9,6 +9,7 @@ import { Type } from "./type"; import * as Utils from "../utils"; import { WeatherType } from "./weather"; import { ArenaTagType, ArenaTrapTag } from "./arena-tag"; +import { FlinchChanceModifier } from "../modifier/modifier"; export enum MoveCategory { PHYSICAL, @@ -1037,7 +1038,7 @@ export class ChargeAttr extends OverrideMoveEffectAttr { user.addTag(this.tagType, 1, move.id, user.id); if (this.chargeEffect) applyMoveAttrs(MoveEffectAttr, user, target, move); - user.getMoveHistory().push({ move: move.id, result: MoveResult.OTHER }); + user.pushMoveHistory({ move: move.id, result: MoveResult.OTHER }); user.getMoveQueue().push({ move: move.id, ignorePP: true }); resolve(true); }); @@ -1427,7 +1428,8 @@ export class AddBattlerTagAttr extends MoveEffectAttr { if (!super.apply(user, target, move, args)) return false; - if (move.chance < 0 || move.chance === 100 || Utils.randInt(100) < move.chance) { + const chance = this.getTagChance(user, target, move); + if (chance < 0 || chance === 100 || Utils.randInt(100) < chance) { (this.selfTarget ? user : target).addTag(this.tagType, this.turnCount, move.id, user.id); return true; } @@ -1435,6 +1437,10 @@ export class AddBattlerTagAttr extends MoveEffectAttr { return false; } + getTagChance(user: Pokemon, target: Pokemon, move: Move): integer { + return move.chance; + } + getCondition(): MoveCondition { return this.failOnOverlap ? (user: Pokemon, target: Pokemon, move: Move) => !(this.selfTarget ? user : target).getTag(this.tagType) @@ -1925,7 +1931,8 @@ export const allMoves = [ new SelfStatusMove(Moves.LIGHT_SCREEN, "Light Screen (N)", Type.PSYCHIC, -1, 30, 75, "Halves damage from Special attacks for 5 turns.", -1, 0, 1), new SelfStatusMove(Moves.HAZE, "Haze (N)", Type.ICE, -1, 30, -1, "Resets all stat changes.", -1, 0, 1), new SelfStatusMove(Moves.REFLECT, "Reflect (N)", Type.PSYCHIC, -1, 20, 74, "Halves damage from Physical attacks for 5 turns.", -1, 0, 1), - new SelfStatusMove(Moves.FOCUS_ENERGY, "Focus Energy (N)", Type.NORMAL, -1, 30, -1, "Increases critical hit ratio.", -1, 0, 1), + new SelfStatusMove(Moves.FOCUS_ENERGY, "Focus Energy", Type.NORMAL, -1, 30, -1, "Increases critical hit ratio.", -1, 0, 1) + .attr(AddBattlerTagAttr, BattlerTagType.CRIT_BOOST, true, undefined, true), new AttackMove(Moves.BIDE, "Bide (N)", Type.NORMAL, MoveCategory.PHYSICAL, -1, -1, 10, -1, "User takes damage for two turns then strikes back double.", -1, 0, 1), new SelfStatusMove(Moves.METRONOME, "Metronome", Type.NORMAL, -1, 10, 80, "User performs almost any move in the game at random.", -1, 0, 1) .attr(RandomMoveAttr), diff --git a/src/data/pokemon-evolutions.ts b/src/data/pokemon-evolutions.ts index 816ca7ed8..663d04b6f 100644 --- a/src/data/pokemon-evolutions.ts +++ b/src/data/pokemon-evolutions.ts @@ -1,5 +1,5 @@ import { Gender } from "./gender"; -import { AttackTypeBoosterModifier } from "../modifier/modifier"; +import { AttackTypeBoosterModifier, FlinchChanceModifier } from "../modifier/modifier"; import { AttackTypeBoosterModifierType } from "../modifier/modifier-type"; import { Moves } from "./move"; import { PokeballType } from "./pokeball"; @@ -167,7 +167,7 @@ export const pokemonEvolutions: PokemonEvolutions = { ], [Species.SLOWPOKE]: [ new SpeciesEvolution(Species.SLOWBRO, 37, null, null), - new SpeciesEvolution(Species.SLOWKING, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition((p: Pokemon) => true /* King's rock*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.SLOWKING, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition((p: Pokemon) => !!p.scene.findModifier(m => (m instanceof FlinchChanceModifier) && (m as FlinchChanceModifier).pokemonId === p.id, true)), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.MAGNEMITE]: [ new SpeciesEvolution(Species.MAGNETON, 30, null, null) @@ -779,7 +779,7 @@ export const pokemonEvolutions: PokemonEvolutions = { ], [Species.POLIWHIRL]: [ new SpeciesEvolution(Species.POLIWRATH, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesEvolution(Species.POLITOED, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition((p: Pokemon) => true /* King's rock*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.POLITOED, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition((p: Pokemon) => !!p.scene.findModifier(m => (m instanceof FlinchChanceModifier) && (m as FlinchChanceModifier).pokemonId === p.id, true)), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.WEEPINBELL]: [ new SpeciesEvolution(Species.VICTREEBEL, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index b27b3f936..6f33f92fa 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -35,7 +35,7 @@ export class ModifierType { constructor(name: string, description: string, newModifierFunc: NewModifierFunc, iconImage?: string, group?: string, soundName?: string) { this.name = name; this.description = description; - this.iconImage = iconImage || name?.replace(/[ \-]/g, '_')?.toLowerCase(); + this.iconImage = iconImage || name?.replace(/[ \-]/g, '_')?.replace(/'/g, '')?.toLowerCase(); this.group = group || ''; this.soundName = soundName || 'restore'; this.newModifierFunc = newModifierFunc; @@ -497,7 +497,14 @@ const modifierTypes = { BERRY: () => new ModifierTypeGenerator((party: Pokemon[]) => { const berryTypes = Utils.getEnumValues(BerryType); - const randBerryType = berryTypes[Utils.randInt(berryTypes.length)]; + let randBerryType; + let rand = Utils.randInt(10); + if (rand < 2) + randBerryType = BerryType.SITRUS; + else if (rand < 4) + randBerryType = BerryType.LUM; + else + randBerryType = berryTypes[Utils.randInt(berryTypes.length - 2) + 2]; return new PokemonHeldItemModifierType(getBerryName(randBerryType), getBerryEffectDescription(randBerryType), (type, args) => new Modifiers.BerryModifier(type, (args[0] as Pokemon).id, randBerryType), null, 'berry'); @@ -521,6 +528,7 @@ const modifierTypes = { GOLDEN_EXP_CHARM: () => new ExpBoosterModifierType('GOLDEN EXP CHARM', 100), LUCKY_EGG: () => new PokemonExpBoosterModifierType('LUCKY EGG', 50), + GOLDEN_EGG: () => new PokemonExpBoosterModifierType('GOLDEN EGG', 200), HEALING_CHARM: () => new ModifierType('HEALING CHARM', 'Doubles the effectiveness of HP restoring moves and items (excludes revives)', (type, _args) => new Modifiers.HealingBoosterModifier(type, 2), 'healing_charm'), @@ -536,6 +544,9 @@ const modifierTypes = { FOCUS_BAND: () => new PokemonHeldItemModifierType('FOCUS BAND', 'Adds a 10% chance to survive with 1 HP after being damaged enough to faint', (type, args) => new Modifiers.SurviveDamageModifier(type, (args[0] as Pokemon).id)), + KINGS_ROCK: () => new PokemonHeldItemModifierType('KING\'S ROCK', 'Adds a 10% chance an attack move will cause the opponent to flinch', + (type, args) => new Modifiers.FlinchChanceModifier(type, (args[0] as Pokemon).id)), + LEFTOVERS: () => new PokemonHeldItemModifierType('LEFTOVERS', 'Heals 1/16 of a POKéMON\'s maximum HP every turn', (type, args) => new Modifiers.TurnHealModifier(type, (args[0] as Pokemon).id)), SHELL_BELL: () => new PokemonHeldItemModifierType('SHELL BELL', 'Heals 1/8 of a POKéMON\'s dealt damage', @@ -570,7 +581,7 @@ const modifierPool = { return thresholdPartyMemberCount; }), new WeightedModifierType(modifierTypes.TEMP_STAT_BOOSTER, 4), - new WeightedModifierType(modifierTypes.BERRY, 2) + new WeightedModifierType(modifierTypes.BERRY, 20) ].map(m => { m.setTier(ModifierTier.COMMON); return m; }), [ModifierTier.GREAT]: [ new WeightedModifierType(modifierTypes.GREAT_BALL, 6), @@ -617,6 +628,7 @@ const modifierPool = { //new WeightedModifierType(modifierTypes.OVAL_CHARM, 1), new WeightedModifierType(modifierTypes.HEALING_CHARM, 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), @@ -644,13 +656,15 @@ const enemyModifierPool = { new WeightedModifierType(modifierTypes.BASE_STAT_BOOSTER, 1) ].map(m => { m.setTier(ModifierTier.GREAT); return m; }), [ModifierTier.ULTRA]: [ - new WeightedModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, 5), + new WeightedModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, 10), new WeightedModifierType(modifierTypes.FOCUS_BAND, 2), - new WeightedModifierType(modifierTypes.LUCKY_EGG, 2), + new WeightedModifierType(modifierTypes.LUCKY_EGG, 4), + 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.LEFTOVERS, 4), - new WeightedModifierType(modifierTypes.SHELL_BELL, 4), + new WeightedModifierType(modifierTypes.GOLDEN_EGG, 1), new WeightedModifierType(modifierTypes.MINI_BLACK_HOLE, 1) ].map(m => { m.setTier(ModifierTier.MASTER); return m; }) }; diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index eb43dfe7a..f8ca381fd 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -370,7 +370,7 @@ export class SurviveDamageModifier extends PokemonHeldItemModifier { const pokemon = args[0] as Pokemon; const surviveDamage = args[1] as Utils.BooleanHolder; - if (!surviveDamage.value && (this.getStackCount() === this.getMaxStackCount() || Utils.randInt(10) < this.getStackCount())) { + if (!surviveDamage.value && Utils.randInt(10) < this.getStackCount()) { surviveDamage.value = true; pokemon.scene.queueMessage(getPokemonMessage(pokemon, ` hung on\nusing its ${this.type.name}!`)); @@ -384,6 +384,37 @@ export class SurviveDamageModifier extends PokemonHeldItemModifier { } } +export class FlinchChanceModifier extends PokemonHeldItemModifier { + constructor(type: ModifierType, pokemonId: integer, stackCount?: integer) { + super(type, pokemonId, stackCount); + } + + matchType(modifier: Modifier) { + return modifier instanceof FlinchChanceModifier; + } + + clone() { + return new FlinchChanceModifier(this.type, this.pokemonId, this.stackCount); + } + + shouldApply(args: any[]): boolean { + return super.shouldApply(args) && args.length === 2 && args[1] instanceof Utils.BooleanHolder; + } + + apply(args: any[]): boolean { + const flinched = args[1] as Utils.BooleanHolder; + + if (!flinched.value && Utils.randInt(10) < this.getStackCount()) + flinched.value = true; + + return true; + } + + getMaxStackCount(): number { + return 3; + } +} + export class TurnHealModifier extends PokemonHeldItemModifier { constructor(type: ModifierType, pokemonId: integer, stackCount?: integer) { super(type, pokemonId, stackCount); diff --git a/src/pokemon.ts b/src/pokemon.ts index 791fd761a..06706e255 100644 --- a/src/pokemon.ts +++ b/src/pokemon.ts @@ -491,6 +491,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const critLevel = new Utils.IntegerHolder(0); applyMoveAttrs(HighCritAttr, source, this, move, critLevel); this.scene.applyModifiers(TempBattleStatBoosterModifier, source.isPlayer(), TempBattleStat.CRIT, critLevel); + if (source.getTag(BattlerTagType.CRIT_BOOST)) + critLevel.value += 2; const critChance = Math.ceil(16 / Math.pow(2, critLevel.value)); let isCritical = !source.getTag(BattlerTagType.NO_CRIT) && (critChance === 1 || !Utils.randInt(critChance)); const sourceAtk = source.getBattleStat(isPhysical ? Stat.ATK : Stat.SPATK); @@ -642,6 +644,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return this.summonData.moveHistory; } + pushMoveHistory(turnMove: TurnMove) { + turnMove.turn = this.scene.currentBattle?.turn; + this.getMoveHistory().push(turnMove); + } + getLastXMoves(turnCount?: integer): TurnMove[] { const moveHistory = this.getMoveHistory(); return moveHistory.slice(turnCount >= 0 ? Math.max(moveHistory.length - (turnCount || 1), 0) : 0, moveHistory.length).reverse(); @@ -1035,6 +1042,7 @@ export interface TurnMove { move: Moves; result: MoveResult; virtual?: boolean; + turn?: integer; } export interface QueuedMove {