diff --git a/public/images/items.json b/public/images/items.json index 2a0ea464c..6c67b50c5 100644 --- a/public/images/items.json +++ b/public/images/items.json @@ -2971,7 +2971,7 @@ } }, { - "filename": "hyper_potion", + "filename": "soothe_bell", "rotated": false, "trimmed": true, "sourceSize": { @@ -2982,13 +2982,13 @@ "x": 8, "y": 5, "w": 17, - "h": 23 + "h": 22 }, "frame": { "x": 151, "y": 147, "w": 17, - "h": 23 + "h": 22 } }, { @@ -3118,7 +3118,7 @@ } }, { - "filename": "mystic_water", + "filename": "hyper_potion", "rotated": false, "trimmed": true, "sourceSize": { @@ -3126,15 +3126,15 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, + "x": 8, "y": 5, - "w": 20, + "w": 17, "h": 23 }, "frame": { "x": 300, "y": 150, - "w": 20, + "w": 17, "h": 23 } }, @@ -3264,27 +3264,6 @@ "h": 22 } }, - { - "filename": "potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 132, - "y": 169, - "w": 17, - "h": 23 - } - }, { "filename": "tm_ghost", "rotated": false, @@ -3300,8 +3279,8 @@ "h": 22 }, "frame": { - "x": 149, - "y": 170, + "x": 132, + "y": 169, "w": 22, "h": 22 } @@ -3321,7 +3300,7 @@ "h": 22 }, "frame": { - "x": 171, + "x": 154, "y": 170, "w": 22, "h": 22 @@ -3342,33 +3321,12 @@ "h": 22 }, "frame": { - "x": 193, + "x": 176, "y": 170, "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": 215, - "y": 170, - "w": 17, - "h": 23 - } - }, { "filename": "tm_ice", "rotated": false, @@ -3384,8 +3342,8 @@ "h": 22 }, "frame": { - "x": 232, - "y": 171, + "x": 198, + "y": 170, "w": 22, "h": 22 } @@ -3405,7 +3363,7 @@ "h": 22 }, "frame": { - "x": 254, + "x": 220, "y": 171, "w": 22, "h": 22 @@ -3426,8 +3384,8 @@ "h": 22 }, "frame": { - "x": 276, - "y": 172, + "x": 242, + "y": 171, "w": 22, "h": 22 } @@ -3447,8 +3405,8 @@ "h": 22 }, "frame": { - "x": 298, - "y": 173, + "x": 264, + "y": 172, "w": 22, "h": 22 } @@ -3467,6 +3425,27 @@ "w": 22, "h": 22 }, + "frame": { + "x": 286, + "y": 173, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_steel", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, "frame": { "x": 0, "y": 187, @@ -3475,7 +3454,7 @@ } }, { - "filename": "tm_steel", + "filename": "tm_water", "rotated": false, "trimmed": true, "sourceSize": { @@ -3496,7 +3475,7 @@ } }, { - "filename": "tm_water", + "filename": "water_stone", "rotated": false, "trimmed": true, "sourceSize": { @@ -3517,7 +3496,7 @@ } }, { - "filename": "water_stone", + "filename": "x_accuracy", "rotated": false, "trimmed": true, "sourceSize": { @@ -3538,7 +3517,7 @@ } }, { - "filename": "x_accuracy", + "filename": "x_attack", "rotated": false, "trimmed": true, "sourceSize": { @@ -3559,7 +3538,7 @@ } }, { - "filename": "x_attack", + "filename": "x_defense", "rotated": false, "trimmed": true, "sourceSize": { @@ -3580,7 +3559,7 @@ } }, { - "filename": "x_defense", + "filename": "x_sp_atk", "rotated": false, "trimmed": true, "sourceSize": { @@ -3595,13 +3574,13 @@ }, "frame": { "x": 132, - "y": 192, + "y": 191, "w": 22, "h": 22 } }, { - "filename": "x_sp_atk", + "filename": "x_sp_def", "rotated": false, "trimmed": true, "sourceSize": { @@ -3622,7 +3601,7 @@ } }, { - "filename": "x_sp_def", + "filename": "x_speed", "rotated": false, "trimmed": true, "sourceSize": { @@ -3643,7 +3622,7 @@ } }, { - "filename": "x_speed", + "filename": "black_belt", "rotated": false, "trimmed": true, "sourceSize": { @@ -3652,15 +3631,15 @@ }, "spriteSourceSize": { "x": 5, - "y": 5, + "y": 4, "w": 22, - "h": 22 + "h": 23 }, "frame": { "x": 198, - "y": 193, + "y": 192, "w": 22, - "h": 22 + "h": 23 } }, { @@ -3684,69 +3663,6 @@ "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": 243, - "y": 193, - "w": 22, - "h": 23 - } - }, - { - "filename": "clefairy_doll", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 265, - "y": 194, - "w": 24, - "h": 23 - } - }, - { - "filename": "coin_case", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 289, - "y": 195, - "w": 24, - "h": 23 - } - }, { "filename": "dragon_fang", "rotated": false, @@ -3762,50 +3678,8 @@ "h": 23 }, "frame": { - "x": 0, - "y": 209, - "w": 21, - "h": 23 - } - }, - { - "filename": "expert_belt", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 23 - }, - "frame": { - "x": 21, - "y": 210, - "w": 24, - "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": 45, - "y": 210, + "x": 243, + "y": 193, "w": 21, "h": 23 } @@ -3825,12 +3699,33 @@ "h": 23 }, "frame": { - "x": 66, - "y": 212, + "x": 264, + "y": 194, "w": 22, "h": 23 } }, + { + "filename": "clefairy_doll", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 23 + }, + "frame": { + "x": 286, + "y": 195, + "w": 24, + "h": 23 + } + }, { "filename": "focus_sash", "rotated": false, @@ -3846,12 +3741,117 @@ "h": 23 }, "frame": { - "x": 88, - "y": 212, + "x": 0, + "y": 209, "w": 22, "h": 23 } }, + { + "filename": "coin_case", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 23 + }, + "frame": { + "x": 22, + "y": 210, + "w": 24, + "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": 46, + "y": 210, + "w": 20, + "h": 23 + } + }, + { + "filename": "expert_belt", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 23 + }, + "frame": { + "x": 66, + "y": 212, + "w": 24, + "h": 23 + } + }, + { + "filename": "potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 90, + "y": 212, + "w": 17, + "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": 107, + "y": 213, + "w": 21, + "h": 23 + } + }, { "filename": "leaf_stone", "rotated": false, @@ -3867,7 +3867,7 @@ "h": 23 }, "frame": { - "x": 110, + "x": 128, "y": 213, "w": 21, "h": 23 @@ -3888,7 +3888,7 @@ "h": 23 }, "frame": { - "x": 131, + "x": 149, "y": 214, "w": 22, "h": 23 @@ -3909,7 +3909,7 @@ "h": 23 }, "frame": { - "x": 153, + "x": 171, "y": 214, "w": 22, "h": 23 @@ -3930,8 +3930,29 @@ "h": 23 }, "frame": { - "x": 175, - "y": 214, + "x": 193, + "y": 215, + "w": 23, + "h": 23 + } + }, + { + "filename": "rarer_candy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 216, + "y": 216, "w": 23, "h": 23 } @@ -3951,54 +3972,12 @@ "h": 23 }, "frame": { - "x": 198, - "y": 215, + "x": 239, + "y": 216, "w": 22, "h": 23 } }, - { - "filename": "rarer_candy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 220, - "y": 216, - "w": 23, - "h": 23 - } - }, - { - "filename": "sharp_beak", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 243, - "y": 216, - "w": 21, - "h": 23 - } - }, { "filename": "scope-lens", "rotated": false, @@ -4014,12 +3993,54 @@ "h": 23 }, "frame": { - "x": 264, + "x": 261, "y": 217, "w": 24, "h": 23 } }, + { + "filename": "sharp_beak", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 21, + "h": 23 + }, + "frame": { + "x": 285, + "y": 218, + "w": 21, + "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": 0, + "y": 232, + "w": 17, + "h": 23 + } + }, { "filename": "stick", "rotated": false, @@ -4035,33 +4056,12 @@ "h": 23 }, "frame": { - "x": 288, - "y": 218, + "x": 17, + "y": 233, "w": 23, "h": 23 } }, - { - "filename": "calcium", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 0, - "y": 232, - "w": 16, - "h": 24 - } - }, { "filename": "twisted_spoon", "rotated": false, @@ -4077,7 +4077,7 @@ "h": 23 }, "frame": { - "x": 16, + "x": 40, "y": 233, "w": 24, "h": 23 @@ -4098,12 +4098,33 @@ "h": 24 }, "frame": { - "x": 40, - "y": 233, + "x": 64, + "y": 235, "w": 23, "h": 24 } }, + { + "filename": "calcium", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 87, + "y": 235, + "w": 16, + "h": 24 + } + }, { "filename": "carbos", "rotated": false, @@ -4119,8 +4140,8 @@ "h": 24 }, "frame": { - "x": 63, - "y": 235, + "x": 103, + "y": 236, "w": 16, "h": 24 } @@ -4140,8 +4161,8 @@ "h": 24 }, "frame": { - "x": 79, - "y": 235, + "x": 119, + "y": 236, "w": 21, "h": 24 } @@ -4161,8 +4182,8 @@ "h": 24 }, "frame": { - "x": 100, - "y": 236, + "x": 140, + "y": 237, "w": 24, "h": 24 } @@ -4182,7 +4203,7 @@ "h": 24 }, "frame": { - "x": 124, + "x": 164, "y": 237, "w": 18, "h": 24 @@ -4203,49 +4224,7 @@ "h": 24 }, "frame": { - "x": 142, - "y": 237, - "w": 18, - "h": 24 - } - }, - { - "filename": "focus_band", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 160, - "y": 237, - "w": 24, - "h": 24 - } - }, - { - "filename": "full_restore", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 184, + "x": 182, "y": 238, "w": 18, "h": 24 @@ -4266,14 +4245,14 @@ "h": 24 }, "frame": { - "x": 202, + "x": 200, "y": 238, "w": 16, "h": 24 } }, { - "filename": "golden_punch", + "filename": "focus_band", "rotated": false, "trimmed": true, "sourceSize": { @@ -4287,14 +4266,14 @@ "h": 24 }, "frame": { - "x": 218, + "x": 216, "y": 239, "w": 24, "h": 24 } }, { - "filename": "iron", + "filename": "full_restore", "rotated": false, "trimmed": true, "sourceSize": { @@ -4302,20 +4281,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, + "x": 7, "y": 4, - "w": 16, + "w": 18, "h": 24 }, "frame": { - "x": 242, + "x": 240, "y": 239, - "w": 16, + "w": 18, "h": 24 } }, { - "filename": "grip_claw", + "filename": "golden_punch", "rotated": false, "trimmed": true, "sourceSize": { @@ -4335,6 +4314,48 @@ "h": 24 } }, + { + "filename": "grip_claw", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 282, + "y": 241, + "w": 24, + "h": 24 + } + }, + { + "filename": "iron", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 0, + "y": 255, + "w": 16, + "h": 24 + } + }, { "filename": "kings_rock", "rotated": false, @@ -4350,8 +4371,8 @@ "h": 24 }, "frame": { - "x": 282, - "y": 241, + "x": 16, + "y": 256, "w": 23, "h": 24 } @@ -4371,12 +4392,33 @@ "h": 24 }, "frame": { - "x": 0, + "x": 39, "y": 256, "w": 24, "h": 24 } }, + { + "filename": "lucky_punch_great", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 63, + "y": 259, + "w": 24, + "h": 24 + } + }, { "filename": "pp_max", "rotated": false, @@ -4392,75 +4434,12 @@ "h": 24 }, "frame": { - "x": 24, - "y": 256, + "x": 87, + "y": 259, "w": 16, "h": 24 } }, - { - "filename": "lure", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 40, - "y": 257, - "w": 17, - "h": 24 - } - }, - { - "filename": "lucky_punch_great", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 57, - "y": 259, - "w": 24, - "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": 81, - "y": 259, - "w": 18, - "h": 24 - } - }, { "filename": "lucky_punch_master", "rotated": false, @@ -4476,7 +4455,7 @@ "h": 24 }, "frame": { - "x": 99, + "x": 103, "y": 260, "w": 24, "h": 24 @@ -4497,12 +4476,54 @@ "h": 24 }, "frame": { - "x": 123, + "x": 127, "y": 261, "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": 151, + "y": 261, + "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": 168, + "y": 262, + "w": 18, + "h": 24 + } + }, { "filename": "max_ether", "rotated": false, @@ -4518,8 +4539,8 @@ "h": 24 }, "frame": { - "x": 147, - "y": 261, + "x": 186, + "y": 262, "w": 18, "h": 24 } @@ -4539,8 +4560,8 @@ "h": 24 }, "frame": { - "x": 165, - "y": 261, + "x": 204, + "y": 263, "w": 17, "h": 24 } @@ -4560,8 +4581,8 @@ "h": 24 }, "frame": { - "x": 182, - "y": 262, + "x": 221, + "y": 263, "w": 18, "h": 24 } @@ -4581,8 +4602,8 @@ "h": 24 }, "frame": { - "x": 200, - "y": 262, + "x": 239, + "y": 263, "w": 16, "h": 24 } @@ -4602,33 +4623,12 @@ "h": 24 }, "frame": { - "x": 216, - "y": 263, + "x": 255, + "y": 264, "w": 22, "h": 24 } }, - { - "filename": "protein", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 238, - "y": 263, - "w": 16, - "h": 24 - } - }, { "filename": "muscle_band", "rotated": false, @@ -4644,12 +4644,54 @@ "h": 24 }, "frame": { - "x": 254, - "y": 264, + "x": 277, + "y": 265, "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": 301, + "y": 265, + "w": 16, + "h": 24 + } + }, + { + "filename": "unknown", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 0, + "y": 279, + "w": 16, + "h": 24 + } + }, { "filename": "oval_charm", "rotated": false, @@ -4665,29 +4707,8 @@ "h": 24 }, "frame": { - "x": 278, - "y": 265, - "w": 21, - "h": 24 - } - }, - { - "filename": "shiny_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 299, - "y": 265, + "x": 16, + "y": 280, "w": 21, "h": 24 } @@ -4707,54 +4728,12 @@ "h": 24 }, "frame": { - "x": 0, + "x": 37, "y": 280, "w": 23, "h": 24 } }, - { - "filename": "super_lure", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 23, - "y": 280, - "w": 17, - "h": 24 - } - }, - { - "filename": "unknown", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 40, - "y": 281, - "w": 16, - "h": 24 - } - }, { "filename": "salac_berry", "rotated": false, @@ -4770,14 +4749,14 @@ "h": 24 }, "frame": { - "x": 56, + "x": 60, "y": 283, "w": 24, "h": 24 } }, { - "filename": "zinc", + "filename": "super_lure", "rotated": false, "trimmed": true, "sourceSize": { @@ -4787,13 +4766,13 @@ "spriteSourceSize": { "x": 8, "y": 4, - "w": 16, + "w": 17, "h": 24 }, "frame": { - "x": 80, + "x": 84, "y": 283, - "w": 16, + "w": 17, "h": 24 } }, @@ -4812,12 +4791,54 @@ "h": 24 }, "frame": { - "x": 96, + "x": 101, "y": 284, "w": 24, "h": 24 } }, + { + "filename": "shiny_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 21, + "h": 24 + }, + "frame": { + "x": 125, + "y": 285, + "w": 21, + "h": 24 + } + }, + { + "filename": "zinc", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 146, + "y": 285, + "w": 16, + "h": 24 + } + }, { "filename": "silk_scarf", "rotated": false, @@ -4833,8 +4854,8 @@ "h": 24 }, "frame": { - "x": 120, - "y": 285, + "x": 162, + "y": 286, "w": 24, "h": 24 } @@ -4854,8 +4875,8 @@ "h": 24 }, "frame": { - "x": 144, - "y": 285, + "x": 186, + "y": 287, "w": 24, "h": 24 } @@ -4875,8 +4896,8 @@ "h": 26 }, "frame": { - "x": 168, - "y": 286, + "x": 210, + "y": 287, "w": 23, "h": 26 } @@ -4896,8 +4917,8 @@ "h": 26 }, "frame": { - "x": 191, - "y": 287, + "x": 233, + "y": 288, "w": 27, "h": 26 } @@ -4917,8 +4938,8 @@ "h": 31 }, "frame": { - "x": 218, - "y": 287, + "x": 260, + "y": 288, "w": 17, "h": 31 } @@ -4938,8 +4959,8 @@ "h": 31 }, "frame": { - "x": 235, - "y": 287, + "x": 277, + "y": 289, "w": 17, "h": 31 } @@ -4959,8 +4980,8 @@ "h": 31 }, "frame": { - "x": 252, - "y": 288, + "x": 294, + "y": 289, "w": 17, "h": 31 } @@ -4971,6 +4992,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:2c02d802e31fc2d6bc57df9348890d2b:160f2fe36d715f1125159d665c96df73:110e074689c9edd2c54833ce2e4d9270$" + "smartupdate": "$TexturePacker:SmartUpdate:61da70b972af5eec10d02ecfc1bb3cb8:06f01ef33cee0f2c3136790e7bcd6adf:110e074689c9edd2c54833ce2e4d9270$" } } diff --git a/public/images/items.png b/public/images/items.png index daa7f46b0..24a912030 100644 Binary files a/public/images/items.png and b/public/images/items.png differ diff --git a/public/images/items/soothe_bell.png b/public/images/items/soothe_bell.png new file mode 100644 index 000000000..62fd6ff26 Binary files /dev/null and b/public/images/items/soothe_bell.png differ diff --git a/src/battle-phases.ts b/src/battle-phases.ts index 5d7dc39df..94f38c319 100644 --- a/src/battle-phases.ts +++ b/src/battle-phases.ts @@ -5,7 +5,7 @@ import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMov import { Mode } from './ui/ui'; import { Command } from "./ui/command-ui-handler"; import { Stat } from "./data/pokemon-stat"; -import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyInstantReviveChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier } from "./modifier/modifier"; +import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyInstantReviveChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier, PokemonFriendshipBoosterModifier } from "./modifier/modifier"; import PartyUiHandler, { PartyOption, PartyUiMode } from "./ui/party-ui-handler"; import { doPokeballBounceAnim, getPokeballAtlasKey, getPokeballCatchMultiplier, getPokeballTintColor, PokeballType } from "./data/pokeball"; import { CommonAnim, CommonBattleAnim, MoveAnim, initMoveAnim, loadMoveAnimAssets } from "./data/battle-anims"; @@ -32,8 +32,6 @@ import { BattleType, BattlerIndex, TurnCommand } from "./battle"; import { GameMode } from "./game-mode"; import { Species } from "./data/species"; import { HealAchv, LevelAchv, MoneyAchv, achvs } from "./system/achv"; -import { DexEntry } from "./system/game-data"; -import { pokemonPrevolutions } from "./data/pokemon-evolutions"; import { TrainerType, trainerConfigs } from "./data/trainer-type"; import { EggHatchPhase } from "./egg-hatch-phase"; import { Egg } from "./data/egg"; @@ -2247,6 +2245,8 @@ export class FaintPhase extends PokemonPhase { this.scene.getField().filter(p => p !== pokemon && p?.isActive(true)).forEach(p => p.removeTagsBySourceId(pokemon.id)); pokemon.faintCry(() => { + const friendshipDecrease = new Utils.IntegerHolder(10); + pokemon.friendship = Math.max(pokemon.friendship - friendshipDecrease.value, 0); pokemon.hideInfo(); this.scene.playSound('faint'); this.scene.tweens.add({ @@ -2291,8 +2291,13 @@ export class VictoryPhase extends PokemonPhase { for (let partyMember of expPartyMembers) { const pId = partyMember.id; const participated = participantIds.has(pId); - if (participated) - partyMember.winCount++; + if (participated) { + const friendshipIncrease = new Utils.IntegerHolder(2); + this.scene.applyModifier(PokemonFriendshipBoosterModifier, true, partyMember, friendshipIncrease); + partyMember.friendship = Math.min(partyMember.friendship + friendshipIncrease.value, 255); + if (partyMember.friendship === 255) + this.scene.validateAchv(achvs.MAX_FRIENDSHIP); + } else if (!expShareModifier) { partyMemberExp.push(0); continue; diff --git a/src/data/move.ts b/src/data/move.ts index 41e627d94..2f728aff4 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -2139,7 +2139,7 @@ export class SolarBeamPowerAttr extends VariablePowerAttr { } } -export class WinCountPowerAttr extends VariablePowerAttr { +export class FriendshipPowerAttr extends VariablePowerAttr { private invert: boolean; constructor(invert?: boolean) { @@ -2152,8 +2152,8 @@ export class WinCountPowerAttr extends VariablePowerAttr { const power = args[0] as Utils.NumberHolder; if (user instanceof PlayerPokemon) { - const winCount = Math.min(user.winCount, 100); - power.value = Math.max(!this.invert ? winCount : 100 - winCount, 1); + const friendshipPower = Math.floor(Math.min(user.friendship, 255) / 2.5); + power.value = Math.max(!this.invert ? friendshipPower : 102 - friendshipPower, 1); } return true; @@ -3492,11 +3492,11 @@ export function initMoves() { .soundBased() .target(MoveTarget.USER_AND_ALLIES), new AttackMove(Moves.RETURN, "Return", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, "This full-power attack grows more powerful the more the user likes its Trainer.", -1, 0, 2) - .attr(WinCountPowerAttr), + .attr(FriendshipPowerAttr), new AttackMove(Moves.PRESENT, "Present (N)", Type.NORMAL, MoveCategory.PHYSICAL, -1, 90, 15, -1, "The user attacks by giving the target a gift with a hidden trap. It restores HP sometimes, however.", -1, 0, 2) .makesContact(false), new AttackMove(Moves.FRUSTRATION, "Frustration", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, "This full-power attack grows more powerful the less the user likes its Trainer.", -1, 0, 2) - .attr(WinCountPowerAttr, true), + .attr(FriendshipPowerAttr, true), new StatusMove(Moves.SAFEGUARD, "Safeguard (N)", Type.NORMAL, -1, 25, -1, "The user creates a protective field that prevents status conditions for five turns.", -1, 0, 2) .target(MoveTarget.USER_SIDE), new StatusMove(Moves.PAIN_SPLIT, "Pain Split", Type.NORMAL, -1, 20, -1, "The user adds its HP to the target's HP, then equally shares the combined HP with the target.", -1, 0, 2) diff --git a/src/data/pokemon-evolutions.ts b/src/data/pokemon-evolutions.ts index eaab7a34c..8623bd928 100644 --- a/src/data/pokemon-evolutions.ts +++ b/src/data/pokemon-evolutions.ts @@ -1279,9 +1279,9 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.STARMIE, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.MEDIUM) ], [Species.EEVEE]: [ - new SpeciesEvolution(Species.SYLVEON, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 && !!p.getMoveset().find(m => m.getMove().type === Type.FAIRY)), SpeciesWildEvolutionDelay.MEDIUM), - new SpeciesEvolution(Species.ESPEON, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 && p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.MEDIUM), - new SpeciesEvolution(Species.UMBREON, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 && !p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.MEDIUM), + new SpeciesEvolution(Species.SYLVEON, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160 && !!p.getMoveset().find(m => m.getMove().type === Type.FAIRY)), SpeciesWildEvolutionDelay.MEDIUM), + new SpeciesEvolution(Species.ESPEON, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160 && p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.MEDIUM), + new SpeciesEvolution(Species.UMBREON, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160 && !p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.MEDIUM), new SpeciesEvolution(Species.VAPOREON, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.MEDIUM), new SpeciesEvolution(Species.JOLTEON, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.MEDIUM), new SpeciesEvolution(Species.FLAREON, 1, EvolutionItem.FIRE_STONE, null, SpeciesWildEvolutionDelay.MEDIUM), @@ -1558,64 +1558,64 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.ANNIHILAPE, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.moveset.filter(m => m.moveId === Moves.RAGE_FIST).length > 0), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.PICHU]: [ - new SpeciesEvolution(Species.PIKACHU, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.PIKACHU, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.SHORT) ], [Species.CLEFFA]: [ - new SpeciesEvolution(Species.CLEFAIRY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.CLEFAIRY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.SHORT) ], [Species.IGGLYBUFF]: [ - new SpeciesEvolution(Species.JIGGLYPUFF, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.JIGGLYPUFF, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.SHORT) ], [Species.GOLBAT]: [ - new SpeciesEvolution(Species.CROBAT, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.CROBAT, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.CHANSEY]: [ - new SpeciesEvolution(Species.BLISSEY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.BLISSEY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.MUNCHLAX]: [ - new SpeciesEvolution(Species.SNORLAX, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.SNORLAX, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.TOGEPI]: [ - new SpeciesEvolution(Species.TOGETIC, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.TOGETIC, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.SHORT) ], [Species.AZURILL]: [ - new SpeciesEvolution(Species.MARILL, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.MARILL, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.SHORT) ], [Species.BUDEW]: [ - new SpeciesEvolution(Species.ROSELIA, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount > 10 && p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.ROSELIA, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160 && p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.SHORT) ], [Species.CHINGLING]: [ - new SpeciesEvolution(Species.CHIMECHO, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 && !p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.CHIMECHO, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160 && !p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.BUNEARY]: [ - new SpeciesEvolution(Species.LOPUNNY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.LOPUNNY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.HAPPINY]: [ - new SpeciesEvolution(Species.CHANSEY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.CHANSEY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.SHORT) ], [Species.RIOLU]: [ - new SpeciesEvolution(Species.LUCARIO, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 && p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.LUCARIO, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160 && p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.WOOBAT]: [ - new SpeciesEvolution(Species.SWOOBAT, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.SWOOBAT, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.SWADLOON]: [ - new SpeciesEvolution(Species.LEAVANNY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.LEAVANNY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.LONG) ], [Species.TYPE_NULL]: [ - new SpeciesEvolution(Species.SILVALLY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 100), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.SILVALLY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.LONG) ], [Species.ALOLA_MEOWTH]: [ - new SpeciesEvolution(Species.ALOLA_PERSIAN, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.ALOLA_PERSIAN, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.LONG) ], [Species.MILCERY]: [ - new SpeciesEvolution(Species.ALCREMIE, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.ALCREMIE, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.SNOM]: [ - new SpeciesEvolution(Species.FROSMOTH, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 && !p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.FROSMOTH, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160 && !p.scene.arena.isDaytime()), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.GIMMIGHOUL]: [ - new SpeciesEvolution(Species.GHOLDENGO, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 50), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.GHOLDENGO, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.friendship >= 160), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.VENUSAUR]: [ new SpeciesFormEvolution(Species.VENUSAUR, '', SpeciesFormKey.MEGA, 1, EvolutionItem.VENUSAURITE, null, SpeciesWildEvolutionDelay.MEGA) diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 7cdd09d9f..bbd993793 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -404,6 +404,12 @@ export class PokemonExpBoosterModifierType extends PokemonHeldItemModifierType { } } +export class PokemonFriendshipBoosterModifierType extends PokemonHeldItemModifierType { + constructor(name: string, iconImage?: string) { + super(name,'Increases friendship gain per victory by 50%', (_type, args) => new Modifiers.PokemonFriendshipBoosterModifier(this, (args[0] as Pokemon).id), iconImage); + } +} + export class TmModifierType extends PokemonModifierType { public moveId: Moves; @@ -673,6 +679,8 @@ export const modifierTypes = { LUCKY_EGG: () => new PokemonExpBoosterModifierType('Lucky Egg', 40), GOLDEN_EGG: () => new PokemonExpBoosterModifierType('Golden Egg', 100), + SOOTHE_BELL: () => new PokemonFriendshipBoosterModifierType('Soothe Bell'), + AMULET_COIN: () => new ModifierType('Amulet Coin', 'Increases money rewards by 20%', (type, _args) => new Modifiers.MoneyMultiplierModifier(type)), GOLDEN_PUNCH: () => new PokemonHeldItemModifierType('Golden Punch', 'Grants 20% of damage inflicted as money', (type, args) => new Modifiers.DamageMoneyRewardModifier(type, (args[0] as Pokemon).id)), COIN_CASE: () => new ModifierType('Coin Case', 'After every 10th battle, receive 10% of your money in interest', (type, _args) => new Modifiers.MoneyInterestModifier(type)), @@ -809,6 +817,7 @@ const modifierPool = { new WeightedModifierType(modifierTypes.REVIVER_SEED, 3), new WeightedModifierType(modifierTypes.CANDY_JAR, 3), new WeightedModifierType(modifierTypes.RARER_CANDY, 3), + new WeightedModifierType(modifierTypes.SOOTHE_BELL, 3), new WeightedModifierType(modifierTypes.GOLDEN_PUNCH, 2), new WeightedModifierType(modifierTypes.GRIP_CLAW, 2), new WeightedModifierType(modifierTypes.HEALING_CHARM, 1), diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 4228c2176..1a61f11d5 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -1198,6 +1198,30 @@ export class ExpBalanceModifier extends PersistentModifier { } } +export class PokemonFriendshipBoosterModifier extends PokemonHeldItemModifier { + constructor(type: ModifierTypes.PokemonFriendshipBoosterModifierType, pokemonId: integer, stackCount?: integer) { + super(type, pokemonId, stackCount); + } + + matchType(modifier: Modifier): boolean { + return modifier instanceof PokemonFriendshipBoosterModifier; + } + + clone(): PersistentModifier { + return new PokemonFriendshipBoosterModifier(this.type as ModifierTypes.PokemonFriendshipBoosterModifierType, this.pokemonId, this.stackCount); + } + + apply(args: any[]): boolean { + (args[1] as Utils.IntegerHolder).value *= 1 + 0.5 * this.getStackCount(); + + return true; + } + + getMaxHeldItemCount(pokemon: Pokemon): integer { + return 5; + } +} + export class MoneyMultiplierModifier extends PersistentModifier { constructor(type: ModifierType, stackCount?: integer) { super(type, stackCount); diff --git a/src/pokemon.ts b/src/pokemon.ts index d2770aced..da912fc96 100644 --- a/src/pokemon.ts +++ b/src/pokemon.ts @@ -64,7 +64,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { public ivs: integer[]; public moveset: PokemonMove[]; public status: Status; - public winCount: integer; + public friendship: integer; public pauseEvolutions: boolean; public pokerus: boolean; @@ -122,7 +122,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.ivs = dataSource.ivs; this.moveset = dataSource.moveset; this.status = dataSource.status; - this.winCount = dataSource.winCount; + this.friendship = dataSource.friendship !== undefined ? dataSource.friendship : this.species.baseFriendship; this.pauseEvolutions = dataSource.pauseEvolutions; this.pokerus = !!dataSource.pokerus; this.fusionSpecies = dataSource.fusionSpecies instanceof PokemonSpecies ? dataSource.fusionSpecies : getPokemonSpecies(dataSource.fusionSpecies); @@ -158,7 +158,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.shiny === undefined) this.trySetShiny(); - this.winCount = 0; + this.friendship = species.baseFriendship; this.pokerus = false; if (scene.gameMode === GameMode.SPLICED_ENDLESS) @@ -455,7 +455,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ret *= 1.5; if (stat === Stat.SPD && this.status && this.status.effect === StatusEffect.PARALYSIS) ret >>= 2; - return ret; + return Math.floor(ret); } calculateStats(): void { diff --git a/src/system/achv.ts b/src/system/achv.ts index c5c6f0e05..d9f3912bc 100644 --- a/src/system/achv.ts +++ b/src/system/achv.ts @@ -123,6 +123,7 @@ export const achvs = { LV_250: new LevelAchv('Elite', 250, 'rarer_candy', 50).setSecret(true), LV_1000: new LevelAchv('To Go Even Further Beyond', 1000, 'candy_jar', 100).setSecret(true), TRANSFER_MAX_BATTLE_STAT: new Achv('Teamwork', 'Baton pass to another party member with at least one stat maxed out', 'stick', 20), + MAX_FRIENDSHIP: new Achv('Friendmaxxing', 'Reach max friendship on a Pokémon', 'soothe_bell', 25), MEGA_EVOLVE: new Achv('Megamorph', 'Mega evolve a Pokémon', 'mega_bracelet', 50), SPLICE: new Achv('Infinite Fusion', 'Splice two Pokémon together with DNA Splicers', 'dna_splicers', 10), MINI_BLACK_HOLE: new ModifierAchv('A Hole Lot of Items', 'Acquire a Mini Black Hole', 'mini_black_hole', 25, modifier => modifier instanceof TurnHeldItemTransferModifier).setSecret(), diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index 9e25a6937..bae40e8cf 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -24,7 +24,7 @@ export default class PokemonData { public ivs: integer[]; public moveset: PokemonMove[]; public status: Status; - public winCount: integer; + public friendship: integer; public pauseEvolutions: boolean; public pokerus: boolean; @@ -52,7 +52,7 @@ export default class PokemonData { this.hp = source.hp; this.stats = source.stats; this.ivs = source.ivs; - this.winCount = source.winCount; + this.friendship = source.friendship !== undefined ? source.friendship : getPokemonSpecies(this.species).baseFriendship; this.pauseEvolutions = !!source.pauseEvolutions; this.pokerus = !!source.pokerus;