diff --git a/CHANGELOG.md b/CHANGELOG.md index cb5addfc76..e165884589 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,6 @@ - Slightly lowered the volume of all cries - Updated Pokeball animations and model. - Turtwig can now be put on shoulder. -- Shuckles can now be milked for Berry Juice using a wooden bowl - Updated Zubat line model, texture, and animations. - Updated Geodude line models and textures. - Added animations for Hitmontop, Tyrogue, and Mightyena. diff --git a/common/src/main/kotlin/com/cobblemon/mod/common/battles/ShowdownInterpreter.kt b/common/src/main/kotlin/com/cobblemon/mod/common/battles/ShowdownInterpreter.kt index b499c5c7bc..a9beeacf3b 100644 --- a/common/src/main/kotlin/com/cobblemon/mod/common/battles/ShowdownInterpreter.kt +++ b/common/src/main/kotlin/com/cobblemon/mod/common/battles/ShowdownInterpreter.kt @@ -862,6 +862,8 @@ object ShowdownInterpreter { val pokemon = message.getBattlePokemon(0, battle) ?: return@dispatchWaiting val pokemonName = pokemon.getName() val effectID = message.effectAt(1)?.id + val cause = message.effect("from") + val of = message.getSourceBattlePokemon(battle) val lang = when (effectID) { null, "burnup", "doubleshock" -> battleLang("fail") // Moves that use default fail lang. (Null included for moves that fail with no effect, for example: Baton Pass.) @@ -869,6 +871,15 @@ object ShowdownInterpreter { "hyperspacefury", "aurawheel" -> battleLang("fail.darkvoid", pokemonName) // Moves that can only be used by one species and fail when any others try "corrosivegas" -> battleLang("fail.healblock", pokemonName) "dynamax" -> battleLang("fail.grassknot", pokemonName) // Covers weight moves that fail against dynamaxed Pokémon + "unboost" -> { + val statKey = message.argumentAt(2) + val stat = statKey?.let { getStat(it).displayName } + if (stat != null) { + battleLang("fail.$effectID.single", pokemonName, stat) + } else { + battleLang("fail.$effectID", pokemonName) + } + } else -> battleLang("fail.$effectID", pokemonName) } battle.broadcastChatMessage(lang.red()) @@ -1758,7 +1769,7 @@ object ShowdownInterpreter { // This part is not always present val rawStatus = rawHpAndStatus.getOrNull(1) ?: return@dispatchWaiting val status = Statuses.getStatus(rawStatus) ?: return@dispatchWaiting - if (status is PersistentStatus) { + if (status is PersistentStatus && battlePokemon.effectedPokemon.status?.status != status) { battlePokemon.effectedPokemon.applyStatus(status) if (pnx != null) { battle.sendUpdate(BattlePersistentStatusPacket(pnx, status)) diff --git a/common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt b/common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt index 8f8ef39501..970bc8dd61 100644 --- a/common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt +++ b/common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt @@ -240,6 +240,7 @@ object CobblemonClient { fun endBattle() { battle = null + battleOverlay.lastKnownBattle = null BattleMusicController.endMusic() } diff --git a/common/src/main/resources/assets/cobblemon/bedrock/pokemon/models/0236_tyrogue/tyrogue.geo.json b/common/src/main/resources/assets/cobblemon/bedrock/pokemon/models/0236_tyrogue/tyrogue.geo.json index 17f6564b6a..8134b60063 100644 --- a/common/src/main/resources/assets/cobblemon/bedrock/pokemon/models/0236_tyrogue/tyrogue.geo.json +++ b/common/src/main/resources/assets/cobblemon/bedrock/pokemon/models/0236_tyrogue/tyrogue.geo.json @@ -18,7 +18,7 @@ { "name": "body", "parent": "tyrogue", - "pivot": [0, 0, 0] + "pivot": [0, 9, 0] }, { "name": "torso", diff --git a/common/src/main/resources/assets/cobblemon/lang/en_us.json b/common/src/main/resources/assets/cobblemon/lang/en_us.json index a9c708db8d..f08976a925 100644 --- a/common/src/main/resources/assets/cobblemon/lang/en_us.json +++ b/common/src/main/resources/assets/cobblemon/lang/en_us.json @@ -201,6 +201,7 @@ "item.cobblemon.light_orb": "Light Orb", "item.cobblemon.smoke_ball": "Smoke Ball", "item.cobblemon.toxic_orb": "Toxic Orb", + "item.cobblemon.life_orb": "Life Orb", "item.cobblemon.poke_ball.tooltip": "1× catch rate", "item.cobblemon.slate_ball.tooltip": "1× catch rate", @@ -1064,11 +1065,19 @@ "cobblemon.battle.fail.healblock": "But it failed to affect %1$s!", "cobblemon.battle.fail.darkvoid": "But %1$s can't use the move!", "cobblemon.battle.fail.teatime": "But nothing happened!", - "cobblemon.battle.fail.slp": "But the target is already asleep!", + "cobblemon.battle.fail.slp": "But %1$s is already asleep!", + "cobblemon.battle.fail.par": "But %1$s is already paralyzed!", + "cobblemon.battle.fail.tox": "But %1$s is already poisoned!", + "cobblemon.battle.fail.psn": "But %1$s is already poisoned!", + "cobblemon.battle.fail.brn": "But %1$s is already burned!", + "cobblemon.battle.fail.frz": "But %1$s is already frozen!", + "cobblemon.battle.fail.uproar": "%1$s can't sleep in an uproar!", "cobblemon.battle.fail.skydrop": "%1$s is too heavy to be lifted!", "cobblemon.battle.fail.heal": "%1$s's HP is full!", "cobblemon.battle.fail.grassknot": "%1$s shook its head. It seems like it can't use this move...", + "cobblemon.battle.fail.unboost.single": "%1$s's %2$s was not lowered!", + "cobblemon.battle.fail.unboost": "%1$s's %2$s stats did not get lowered!", "cobblemon.battle.sethp.painsplit": "The battlers shared their pain!", @@ -1135,6 +1144,7 @@ "cobblemon.battle.heal.raindish": "%1$s restored HP from Rain Dish!", "cobblemon.battle.heal.generic": "%1$s restored its HP.", "cobblemon.battle.heal.bagitempotion": "It restored %1$s's HP", + "cobblemon.battle.heal.poisonheal": "%1$s restored HP from Poison Heal!", "cobblemon.battle.curestatus.naturalcure": "%1$s is cured by its Natural Cure!", diff --git a/common/src/main/resources/data/cobblemon/advancements/recipes/held/pink_bow.json b/common/src/main/resources/data/cobblemon/advancements/recipes/held/pink_bow.json deleted file mode 100644 index 7cf6c1d345..0000000000 --- a/common/src/main/resources/data/cobblemon/advancements/recipes/held/pink_bow.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "cobblemon:recipes/root", - "criteria": { - "has_shard": { - "conditions": { - "items": [ - { - "items": [ - "minecraft:amethyst_shard" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cobblemon:pink_bow" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_shard", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cobblemon:pink_bow" - ] - } -} \ No newline at end of file diff --git a/common/src/main/resources/data/cobblemon/recipes/pink_bow.json b/common/src/main/resources/data/cobblemon/recipes/pink_bow.json deleted file mode 100644 index aee5eee3cd..0000000000 --- a/common/src/main/resources/data/cobblemon/recipes/pink_bow.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "W W", - "RAR", - "W W" - ], - "key": { - "W": { - "item": "minecraft:pink_wool" - }, - "A": { - "item": "minecraft:amethyst_shard" - }, - "R": { - "item": "minecraft:rabbit_foot" - } - }, - "result": { - "item": "cobblemon:pink_bow" - } -}