Compare commits

..
14 Commits
Author SHA1 Message Date
JPAKx4 099bee8d5d Added jsons to resolve textures and en_us names. 2023-11-14 12:53:04 -06:00
JPAKx4 5a926ffa23 Added new hold items to registries and groups 2023-11-13 21:55:34 -06:00
JPAKx4 d7d32a186b Merge remote-tracking branch 'origin/HOLDY' into HOLDY
# Conflicts:
#	common/src/main/resources/data/cobblemon/species/generation6/aromatisse.json
2023-11-13 20:54:56 -06:00
JPAKx4 f437b7a7ff Added new hold items to registries and groups 2023-11-13 20:53:08 -06:00
miasmusandJPAKx4 ff4ef2d90b changelog 2023-11-13 20:53:06 -06:00
miasmusandJPAKx4 5fb39bba2b data changes for new items, add to lang file 2023-11-13 20:52:59 -06:00
miasmusandJPAKx4 e4798e6793 Added items to registry and groups 2023-11-13 20:52:20 -06:00
dhi_holoandJPAKx4 ce6ef64cec Hold this for me please
47 new recipes and their advancements.
Ability Shield, Air Balloon, Amulet Coin, Binding Band, Blunder Policy, Cell Battery, Clear Amulet, Covert Cloak, Destiny Knot, Eject Button, Eject Pack, Expert Belt, Flame Orb, Focus Sash, Lagging Tail, Life Orb, Loaded Dice, Luminous Moss, Metronome, Pink Bow, Power Anklet, Power Band, Power Belt, Power Bracer, Power Lens, Power Weight, Protective Pads, Punching Glove, Red Card, Ring Target, Room Service, Scope Lens, Shell Bell, Soothe Bell, Terrain Extender, Throat Spray, Toxic Orb, Utility Umbrella, Weakness Policy, Heat Rock, Damp Rock, Icy Rock, Smooth Rock, Wide Lens, Zoom Lens, Iron Ball, and Bright Powder
2023-11-13 20:51:30 -06:00
miasmus 6d52b8f690 changelog 2023-10-20 12:45:32 -04:00
miasmus b1c804d567 data changes for new items, add to lang file 2023-10-19 17:29:02 -04:00
miasmus b386d1a806 added cleanse tag and fairy feather, edit relevant species drops 2023-10-19 17:28:36 -04:00
miasmus 01ea8daedf Merge remote-tracking branch 'origin/main' into HOLDY
# Conflicts:
#      CHANGELOG.md
#      destiny_knot.json
2023-10-19 17:23:43 -04:00
Paul a449396dc3 Merge remote-tracking branch 'origin/main' into HOLDY
# Conflicts:
#	CHANGELOG.md
2023-09-03 13:26:30 +10:00
dhi_holo ed3b0e9630 Hold this for me please
47 new recipes and their advancements.
Ability Shield, Air Balloon, Amulet Coin, Binding Band, Blunder Policy, Cell Battery, Clear Amulet, Covert Cloak, Destiny Knot, Eject Button, Eject Pack, Expert Belt, Flame Orb, Focus Sash, Lagging Tail, Life Orb, Loaded Dice, Luminous Moss, Metronome, Pink Bow, Power Anklet, Power Band, Power Belt, Power Bracer, Power Lens, Power Weight, Protective Pads, Punching Glove, Red Card, Ring Target, Room Service, Scope Lens, Shell Bell, Soothe Bell, Terrain Extender, Throat Spray, Toxic Orb, Utility Umbrella, Weakness Policy, Heat Rock, Damp Rock, Icy Rock, Smooth Rock, Wide Lens, Zoom Lens, Iron Ball, and Bright Powder
2023-06-26 13:36:05 +10:00
852 changed files with 7400 additions and 14081 deletions
-30
View File
@@ -1,30 +0,0 @@
<!-- 1. START HERE: (Before filling all this out, please quickly go to the list of all issues: (https://gitlab.com/cable-mc/cobblemon/-/issues/?sort=created_date&state=all) and do a quick search to see if your issue has already been reported. If it has, please add a comment to the existing issue instead of creating a new one.)-->
<!-- 2. If the issue was not already reported, please fill out the following template. -->
<!-- 3. If you do not know something, don't worry! Just fill out as much as you can to make sure the issue can get fixed asap. -->
## Summary
(Please summarize the bug encountered concisely)
## Steps to reproduce
(How one can reproduce the issue - this is very important)
## What is the current bug behavior?
(What actually happens)
## What is the expected correct behavior?
(What you should see instead)
## Cobblemon Version and Mod Loader
(Are you using Forge or Fabric? And what version of Cobblemon are you using?)
## Mods used besides Cobblemon
(Did you have any other mods installed besides Cobblemon? If so, please list them here)
## Relevant logs, screenshots and/or videos
(Paste any relevant logs - use code blocks (```) at the start and end to format console output, logs, and code, as
it's very hard to read otherwise. Or just put a link here)
## Additional Information
(If you can, link to the line of code that might be responsible for the problem, or any other info that might be useful)
/label ~bug
@@ -1,31 +0,0 @@
<!-- 1. START HERE: (Before filling all this out, please quickly go to the list of all issues: (https://gitlab.com/cable-mc/cobblemon/-/issues/?sort=created_date&state=all) and do a quick search to see if your feature was already requested. If it is, please add a comment to the existing issue instead of creating a new one.)-->
<!-- 2. If the feature request was not already reported, please fill out the following template. -->
<!-- 3. If you do not know something, don't worry! Just fill out as much as you can. -->
<!-- 4. The more info you provide here, the greater the chance of it being considered by the Design team. -->
## Summary
(Please summarize your feature request concisely)
## What are the projected benefits of this feature?
- (List)
- (benefits)
- (here)
## What could speak against this feature?
- (List)
- (possible)
- (cons)
## Why do you think the benefits outweigh the cons?
(Explain why you think the benefits outweigh the cons)
## Mods involved besides Cobblemon
(Does your suggestion require any other mods besides Cobblemon? If so, please list them here)
## Sketches, screenshots and/or videos
(Feel free to add any sketches, screenshots or videos that might help the Design team understand your suggestion)
## Additional Information
(Is there anything else you would like to add?)
/label ~feature ~suggestion ~needs-design
+43 -85
View File
@@ -1,78 +1,69 @@
# Changelog
## [1.4.1 (December 23rd, 2023)](#1-4-1)
### Additions
- Added battle spectating. Press R on a player in a battle and you can spectate and bully them for their tactics.
- Added the Litwick and Drifloon lines.
- Cobblemon now has compatibility with [Adorn](https://modrinth.com/mod/adorn), allowing you to craft Apricorn wood furniture.
- Berries can now be used in recipes from [Farmer's Delight](https://modrinth.com/mod/farmers-delight) and [Farmer's Delight (Fabric)](https://modrinth.com/mod/farmers-delight-fabric), as well as any other mods using the same berry tags.
- Boats, signs and hanging signs are now craftable with Apricorn wood.
- Added the Fairy Feather, Iron Ball, Cleanse Tag, Flame Orb, Life Orb, Smoke Ball, and Toxic Orb held items.
- Added the Inferno, Void, and Forsaken patterns for Vivillon. These can be obtained by evolving a Spewpa in the Nether, End, or Deep Dark respectively.
- Bees can now be fed using Pep-Up Flowers.
- Mooshtank can now be milked with a bowl for Mushroom Stew.
- Updated Showdown version to use generation 9 battle data.
- Added cries to Beldum, Metang and Metagross.
- Added a /bedrockparticle command to run Snowstorm-format particle effects.
- Added data for Dipplin, Fezandipiti, Munkidori, Ogerpon, Okidogi, Poltchageist and Sinistcha.
## [1.4.1](#1-4-1)
### Changes
- Using Potions, Status Heals, Ethers, and Antidotes will now return a glass bottle
- Using a Remedy, Fine Remedy, or Superb Remedy will no longer lower friendship with a Pokémon.
- The Healing Machine now has a [much more difficult recipe](https://wiki.cobblemon.com/index.php/Healing_Machine), placing it later game.
- Made the EXP. Share recipe cheaper.
- Turtwig can now be put on your shoulder.
- Slightly lowered the volume of all cries
- Updated Pokeball animations and model.
- Turtwig can now be put on shoulder.
- Updated Zubat line model, texture, and animations.
- Updated Geodude line models and textures.
- Added animations for Hitmontop, Tyrogue, and Mightyena.
- Tweaked animations for Dusknoir, Ratatta, Bewear, Exeggutor, and Alolan Exeggutor.
- Sized Kantonian Exeggutor down. Still big, but not TOO big.
- Sized Kantonian Exeggutor down. Still big but not TOO BIG.
- Tweaked cries for Pikachu, Raichu and Alolan Raichu.
- Fixed Swimming behaviors for Wimpod line, Oshawott line, Quaxly line, and Clodsire
- Changed the way level scaling works in spawning. By default, anything with a spawn range of up to 5 either side of the party highest level and everything else will spawn per its specified ranges.
- The nature of Pokémon will now be displayed italicized when a mint has been applied. Hovering over the nature will display the mint that was applied.
- Slightly lowered the volume of all cries.
- Giving Pokémon items now plays a sound
- Updated the Poké Ball model and animations.
- Pasture blocks will now also connect their bottom left and right sides to walls, iron bars, glass panes, and any other modded block that follows the same connection rules.
- The config option `consumeHeldItems` has been removed, please see the Datapack & Resourcepack Creators section for instructions on the updated method.
- Pasture blocks will now also connect their bottom left and right sides to walls, iron bars, glass panes and any other modded block that follows the same connection rules.
- The config option `consumeHeldItems` has been removed, please see the Datapack & Resourcepack Creators for instructions on the updated method.
- Using Potions, Status Heals, Ethers, and Antidotes will now return a glass bottle
- Using a Remedy, Fine Remedy, or Superb Remedy will no longer lower friendship with a Pokémon
- The Healing Machine now has a more difficult recipe, placing it later game.
- Heal Powder can now be composted with a 75% chance of adding a layer
- Mental, Power, White, and Mirror Herbs can now be composted with a 100% chance of adding a layer.
- Added glowing eyes to Hoothoot and Noctowl.
- Mining Evolution Stone Ores with a Fortune pickaxe will now increase the amount of items received.
- Added emissive to Hoothoot.
- Mining Evolution Stone Ores with a Fortune pickaxe will now increase the amount of items recieved
- Black Augurite can now be used to craft stone axes and obsidian.
- Using Experience Candies brings up the Party Pokémon Select screen when not targeting a Pokémon.
- Added tab completion for statuses to commands.
- Remedies can now be cooked in a Smoker and on a Campfire.
- Vertically flipped the Destiny Knot recipe.
- Added tab completion for statuses to commands
### Additions
- Added battle spectating, can disable in config
- Cobblemon now has compatibility with [Adorn](https://modrinth.com/mod/adorn) allowing you to craft Apricorn wood furniture.
- Berries can now be used in recipes from [Farmer's Delight](https://modrinth.com/mod/farmers-delight) and [Farmer's Delight (Fabric)](https://modrinth.com/mod/farmers-delight-fabric), as well as any other mods using the same berry tags.
- The nature of cobblemon will now be displayed italicized when a mint has been applied. Hovering over the nature will display the mint that was applied. This is the intended behaviour, because the original nature and taste of the Cobblemon does not change when a mint is applied.
- Giving Pokémon items now plays a sound
- A boat, sign and hanging sign is now craftable with Apricorn wood. The recipes are the same shape as Minecraft's equivalent with Apricorn planks as replacements.
- Added the [Cleanse Tag](https://wiki.cobblemon.com/index.php/Cleanse_Tag) and [Fairy Feather](https://wiki.cobblemon.com/index.php/Fairy_Feather)
- Added Fairy Feather drops to some pokemon
- Added the Inferno, Void, and Forsaken patterns for Vivillon. These can be obtained by evolving a Spewpa in the Nether, End, or Deep Dark respectively.
- Added the Litwick line.
- Bees can now be fed using Pep-Up Flowers.
- Mooshtank can now be milked with a bowl for Mushroom Stew.
- Added cries to Beldum, Metang and Metagross.
### Fixes
- Fixed Raticate, Onix, Unfezant, Bergmite, Avalugg, Boltund and Revavroom cries not playing.
- Fixed Alolan Ratticate animations causing a crash.
- Fixed Quaxwell not doing its cry.
- Fixed Shroomish not using its idle.
- Fixed how Weight and Height is calculated for Pokémon, fixing the damage from moves like Low Kick.
- Fixed a staggering number of battle messages.
- Fixed various stone related blocks not being valid for Big Roots to spread onto on the Fabric version.
- Fixed various stone related blocks not being valid for Big Roots to spread on the Fabric version.
- Updated the registration of compostable items to improve compatibility with Fabric forks such as Quilt. Please note this does not mean we officially support Quilt, this change was only done since it was possible by correcting the registration to use the new intended way in the Fabric API.
- Fixed Dispensers being unable to shear grown Apricorns.
- Fixed Bowl not being given back to player after using Berry Juice
- Added context for -fail and -block handlers for battle text and added 16 related battle texts for them
- Fixed Battle text for Disable, Laser Focus, Foresight, Fire Spin, Telekinesis, Curse, Recharge and Encore
- Fixed missing text for snowy weather in battles
- Fixed missing text for attempting to catch an uncatchable Pokémon
- Fixed Moonphases for Clefairy line
- Fixed issue where Potions, Super Potions, and Hyper Potions did not work during battle
- Fixed the compatibility patch with the Forge version of [Carry On](https://modrinth.com/mod/carry-on) due to a bug on the mod, the Fabric version was unchanged and is still compatible.
- Added the ability to place Berries on modded Farmland blocks.
- Shouldered Pokémon now hop off when selected in team and R is pressed. This also is in effect in battles leading to shouldered Pokémon jumping of the shoulder of the trainer when it is their turn.
- Shouldered Pokémon now hop off when selected in team and r is pressed. This also is in effect in battles leading to shouldered Pokémon jumping of the shoulder of the trainer when it is their turn.
- Made more items compostable and changed the process for making items compostable.
- Added the ability for Hoppers to fill Brewing Stands with Medicinal Brews and Potions.
- Apricorn blocks are now flammable. Probably should have started that way, but we got there.
- Apricorn blocks are now flammable.
- The default pose for Pokémon being passengers is now "standing".
- Fixed issue where some IVs were changing every time a player logged back in.
- Fixed issue where some IVs were changing every player relog.
- Fixed cursed battle message
- Fixed mistakes in pokemon spawning JSONs
- Fixed advancement crash from bad datapack evolution data.
- Fixed global influences being applied to TickingSpawners twice.
- Reverted the default SpawningSelector back to FlatContextWeightedSelector. This fixes multiple weight related issues, including weights with SpawningInfluences.
- Apricorn Planting advancement should work again.
- Advancement "Vivillonaire" should now allow High Plains and Icy Snow Vivillon to register.
- Advancement "Patterned Wings" should now allow High Plains and Icy Snow Vivillon to register.
- Fixed the last battle critical hits evolution requirement not working.
- Fixed the damage taken evolution requirement not saving progress.
- Fixed the defeated Pokémon evolution requirement not saving progress.
@@ -80,53 +71,20 @@
- Fixed an exploit that could convert a single piece of Blaze Powder into an extra Medicinal Brew on the Forge version.
- Fixed an issue where health percentages would show incorrectly after healing
- Fixed the move Revival Blessing not allowing you to select from fainted party members.
- Fixed villagers not being able to pick up and plant mint seeds, vivichoke seeds, and revival herbs.
- Fixed Exeggcute faint.
- Fixed various spawn configuration issues across the board.
- Fixed Raticate, Onix, Unfezant, Bergmite, Avalugg, Boltund and Revavroom cries not playing.
- Fixed Alolan Ratticate animations causing a crash.
- Fixed Quaxwell not doing its cry.
- Fixed Shroomish not using its idle.
- Fixed a possible visual duplication of sent out Pokémon.
- Fixed battle text for Trace, Receiver, and Power of Alchemy.
- Fixed tooltips being appended too late in items.
- Fixed battles ending background music when battle music is not present.
- Fixed battles ending background music, instead of pausing, when battle music is played.
- Fixed a bunch of regionals to actually be obtainable, namely the unmodelled ones
- Fixed battle text for moves that were missing.
- Fixed a formatting error that affected Pokémon nicknames when the storage type is JSON.
- Fixed a crash that could occur on some servers relating to chunk loading and teleporting.
- Fixed an issue with Inkay's evolution requirement.
- Fixed conflicting evolution requirements that would cause the Ocean, River, Sun, and Tundra variants of Vivillon to be unobtainable through evolution.
- Fixed the Modern variant of Vivillon not being obtainable through evolution.
- Fixed Pokémon pathing through berry bushes, harming themselves in the process.
### Developer
- Fixed the `SpawnEvent` not respecting usage of `Cancelable#cancel`.
- Added the `EvolutionTestedEvent`, this allows listening and overriding the final result of evolution requirement tests.
- Added utility script that can be used to generate all Spawn JSONS for all pokemon from the spawning spreadsheet in 1 click ([cobblemon_spawn_csv_to_json.py](utilityscripts%2Fcobblemon_spawn_csv_to_json.py)).
- The `HeldItemManager` has a new method `shouldConsumeItem`, this will return false by default to prevent breaking changes, see the documentation and update your implementations as needed.
- Added and implemented minSkyLight and maxSkyLight as config options for SpawnConditions
- Player specific battle themes can now be assigned to `PlayerData#battleTheme`.
- Changed design of `BattleStartedPreEvent`. Will now expose the `PokemonBattle`.
### Datapack & Resourcepack Creators
- Added 3 new item tags: `cobblemon:held/consumed_in_npc_battle`, `cobblemon:held/consumed_in_pvp_battle` & `cobblemon:held/consumed_in_wild_battle` these will determine which items get consumed in the implied battle types by Cobblemon, keep in mind the controller for this behaviour can be overriden by 3rd party.
- Unique wild encounter themes can now be associated with a specific species (or form) by assigning a SoundEvent identifier to the `battleTheme` field in the species' data configuration.
- Added a `structure` evolution condition, used to check if a Pokémon is in a given structure.
### Localization
- Updated translations for:
- French and Canadian French
- Simplified and Traditional Chinese
- Spanish and Mexican Spanish
- Pirate English
- German
- Thai
- Portuguese and Brazilian Portuguese
- Polish
- Italian
- Dutch
- Ukrainian
- Russian
Thank you so much to all of our community translators that bring the mod to the rest of the world!
## [1.4.0 - The Friends and Farms Update (October 13th, 2023)](#1-4-0)
### Additions
@@ -535,7 +493,7 @@ Thank you so much to all of our community translators that bring the mod to the
- Species and FormData have had their evolutions, pre-evolution and labels properties exposed. It is still recommended to work using a Pokémon instance when possible.
- Added capture check to BattleVictoryEvent.
- The various hardcoded potion shoulder effects have been removed, make use of PotionBaseEffect.
- Added ContextManager for tracking causes and contexts of conditions created during a battle. See BattleContext for types of conditions that are tracked.
- Added ContextManager for tracking causes and contexts of conditions created during a battle. See BattleContext for types of conditions that are tracked.
- Added MongoDB support for storing Pokémon and Player data. Must be enabled in config, requires MongoDB core and sync drivers (4.10.0+).
- CobblemonShowdown updated to version 10.
- Generation of a battle can be set in BattleFormat.
@@ -6,15 +6,10 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.duck;
package com.cobblemon.mod.common.access;
import net.minecraft.sound.SoundCategory;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
public interface SoundManagerDuck {
void pauseSounds(@Nullable Identifier id, @Nullable SoundCategory category);
void resumeSounds(@Nullable Identifier id, @Nullable SoundCategory category);
void toggleCategories(SoundCategory... categories);
}
@@ -1,25 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.duck;
import net.minecraft.client.sound.SoundInstance;
import net.minecraft.sound.SoundCategory;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
import java.util.Collection;
public interface SoundSystemDuck {
void pauseSounds(@Nullable Identifier id, @Nullable SoundCategory category);
void resumeSounds(@Nullable Identifier id, @Nullable SoundCategory category);
Collection<SoundInstance> getSounds(@Nullable SoundCategory category);
}
@@ -1,33 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import net.minecraft.entity.passive.VillagerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.village.VillagerProfession;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import com.cobblemon.mod.common.villager.VillagerGatherableItems;
import java.util.Objects;
@Mixin(VillagerEntity.class)
public abstract class EntityVillagerMixin {
@Inject(method = "canGather", at = @At(value = "RETURN"), cancellable = true)
private void cobblemon$canGather(ItemStack stack, CallbackInfoReturnable<Boolean> ci) {
final VillagerEntity villager = (VillagerEntity) (Object) this;
if(ci.getReturnValue() == false && Objects.equals(villager.getVillagerData().getProfession(), VillagerProfession.FARMER) && villager.getInventory().canInsert(stack)) {
if(VillagerGatherableItems.INSTANCE.getVillagerGatherableItems().contains(stack.getItem()))
ci.setReturnValue(true);
}
}
}
@@ -1,37 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.client.sound.battle.BattleMusicController;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.sound.MusicTracker;
import net.minecraft.client.sound.SoundInstance;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(MusicTracker.class)
public class MusicTrackerMixin {
@Shadow @Final
private MinecraftClient client;
@Shadow @Nullable
private SoundInstance current;
/** Freezes the tracker while a BattleMusicInstance is in progress. Current SoundInstance being tracked will be paused by BattleMusicHandler. */
@Inject(method = "tick()V", at = @At("HEAD"), cancellable = true)
public void tick(CallbackInfo cb) {
if (this.client.getSoundManager().isPlaying(BattleMusicController.INSTANCE.getMusic())) cb.cancel();
}
}
@@ -8,77 +8,36 @@
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.client.sound.battle.BattleMusicController;
import com.cobblemon.mod.common.duck.SoundManagerDuck;
import com.cobblemon.mod.common.duck.SoundSystemDuck;
import net.minecraft.client.sound.*;
import com.cobblemon.mod.common.access.SoundManagerDuck;
import net.minecraft.client.sound.SoundInstance;
import net.minecraft.client.sound.SoundManager;
import net.minecraft.sound.SoundCategory;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(SoundManager.class)
public abstract class SoundManagerMixin implements SoundManagerDuck {
public class SoundManagerMixin implements SoundManagerDuck {
@Shadow
public abstract boolean isPlaying(SoundInstance sound);
private boolean[] blockedCategories = new boolean[SoundCategory.values().length];
@Shadow @Final
private SoundSystem soundSystem;
// Never-ending ambient loops are a special exception (they are only initiated once) and should always be paused if filtered.
private boolean isAmbientLoop(SoundInstance sound) {
return sound instanceof BiomeEffectSoundPlayer.MusicLoop || sound instanceof AmbientSoundLoops.Underwater;
}
private boolean filterCondition(SoundInstance sound) {
return !isAmbientLoop(sound) &&
this.isPlaying(BattleMusicController.INSTANCE.getMusic()) &&
BattleMusicController.INSTANCE.getFilteredCategories().contains(sound.getCategory());
}
private boolean ambientLoopCondition(SoundInstance sound) {
return isAmbientLoop(sound) &&
this.isPlaying(BattleMusicController.INSTANCE.getMusic()) &&
BattleMusicController.INSTANCE.getFilteredCategories().contains(sound.getCategory());
}
/** Pauses the queried SoundInstance(s). If id is null, will pause all sounds belonging to the SoundCategory. */
@Override
public void pauseSounds(@Nullable Identifier id, @Nullable SoundCategory category) {
((SoundSystemDuck)soundSystem).pauseSounds(id, category);
public void toggleCategories(SoundCategory... categories) {
for (SoundCategory category : categories) {
int index = category.ordinal();
boolean blocked = blockedCategories[index];
blockedCategories[index] = !blocked;
}
}
/** Resumes the queried SoundInstance(s). If id is null, will resume all sounds belonging to the SoundCategory. */
@Override
public void resumeSounds(@Nullable Identifier id, @Nullable SoundCategory category) {
((SoundSystemDuck)soundSystem).resumeSounds(id, category);
}
/** Blocks filtered sounds from being played while a BattleMusicInstance is in progress. */
@Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;)V", at = @At("HEAD"), cancellable = true)
public void playStart(SoundInstance sound, CallbackInfo cb) {
if (filterCondition(sound)) cb.cancel();
public void play(SoundInstance sound, CallbackInfo cb) {
if (blockedCategories[sound.getCategory().ordinal()]) cb.cancel();
}
@Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;I)V", at = @At("HEAD"), cancellable = true)
public void playStart(SoundInstance sound, int delay, CallbackInfo cb) {
if (filterCondition(sound)) cb.cancel();
}
/** Pauses ambient loops while a BattleMusicInstance is in progress. */
@Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;)V", at = @At("TAIL"))
public void playEnd(SoundInstance sound, CallbackInfo cb) {
if (ambientLoopCondition(sound)) this.pauseSounds(sound.getId(), SoundCategory.AMBIENT);
}
@Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;I)V", at = @At("TAIL"))
public void playEnd(SoundInstance sound, int delay, CallbackInfo cb) {
if (ambientLoopCondition(sound)) this.pauseSounds(sound.getId(), SoundCategory.AMBIENT);
public void play(SoundInstance sound, int delay, CallbackInfo cb) {
if (blockedCategories[sound.getCategory().ordinal()]) cb.cancel();
}
}
@@ -8,102 +8,31 @@
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.client.sound.battle.BattleMusicController;
import com.cobblemon.mod.common.duck.SoundSystemDuck;
import com.google.common.collect.Multimap;
import net.minecraft.client.sound.*;
import net.minecraft.client.sound.SoundInstance;
import net.minecraft.client.sound.SoundSystem;
import net.minecraft.sound.SoundCategory;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.Map;
@Mixin(SoundSystem.class)
public abstract class SoundSystemMixin implements SoundSystemDuck {
@Shadow
private boolean started;
public abstract class SoundSystemMixin {
@Shadow
private Multimap<SoundCategory, SoundInstance> sounds;
@Shadow @Final
private Map<SoundInstance, Channel.SourceManager> sources;
@Shadow
protected abstract void stop(SoundInstance sound);
@Shadow
public abstract boolean isPlaying(SoundInstance sound);
/** Resumes the Source belonging to the queried SoundInstance. */
private void resume(SoundInstance sound) {
Channel.SourceManager sourceManager = this.sources.get(sound);
if (this.started && sourceManager != null) sourceManager.run(Source::resume);
}
/** Pauses the Source belonging to the queried SoundInstance. */
private void pause(SoundInstance sound) {
Channel.SourceManager sourceManager = this.sources.get(sound);
if (this.started && sourceManager != null) sourceManager.run(Source::pause);
}
/** Resumes the SoundInstance(s) queried by id and/or category. */
@Override
public void resumeSounds(@Nullable Identifier id, @Nullable SoundCategory category) {
if (category != null) {
this.sounds.get(category).forEach((sound) -> {
if (id == null || sound.getId().equals(id)) resume(sound);
});
} else if (id == null) {
this.sources.keySet().forEach(this::resume);
} else {
this.sources.keySet().forEach(sound -> {
if (sound.getId().equals(id)) resume(sound);
});
}
}
/** Pauses the SoundInstances queried by id and/or category. */
@Override
public void pauseSounds(@Nullable Identifier id, @Nullable SoundCategory category) {
if (category != null) {
this.sounds.get(category).forEach((sound) -> {
if (id == null || sound.getId().equals(id)) pause(sound);
});
} else if (id == null) {
this.sources.keySet().forEach(this::pause);
} else {
this.sources.keySet().forEach(sound -> {
if (sound.getId().equals(id)) pause(sound);
});
}
}
/** Allows stopping all SoundInstances that belong to a queried category. */
@Inject(method = "stopSounds(Lnet/minecraft/util/Identifier;Lnet/minecraft/sound/SoundCategory;)V", at = @At("HEAD"), cancellable = true)
public void stopSounds(@Nullable Identifier id, @Nullable SoundCategory category, CallbackInfo cb) {
if (id == null && category != null) {
this.sounds.get(category).forEach(this::stop);
cb.cancel();
}
}
/** Different behavior for resuming SoundInstances while a BattleMusicInstance is being played. We do not want to resume filtered sounds. */
@Inject(method = "resumeAll()V", at = @At("HEAD"), cancellable = true)
public void resumeAll(CallbackInfo cb) {
if (this.isPlaying(BattleMusicController.INSTANCE.getMusic())) {
this.sounds.values().forEach(sound -> {
if (sound == BattleMusicController.INSTANCE.getMusic() || !BattleMusicController.INSTANCE.getFilteredCategories().contains(sound.getCategory())) {
resume(sound);
}
});
sounds.get(category).forEach(this::stop);
cb.cancel();
}
}
@@ -0,0 +1,22 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin.accessor;
import net.minecraft.client.sound.MusicTracker;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(MusicTracker.class)
public interface MusicTrackerAccessor {
@Accessor("timeUntilNextSong")
int timeUntilNextSong();
@Accessor("timeUntilNextSong")
void setTimeUntilNextSong(int timeUntilNextSong);
}
@@ -371,9 +371,8 @@ object Cobblemon {
battleRegistry.startBattle(
BattleFormat.GEN_9_SINGLES,
BattleSide(PokemonBattleActor(UUID.randomUUID(), BattlePokemon(Pokemon().initialize()), -1F)),
BattleSide(PokemonBattleActor(UUID.randomUUID(), BattlePokemon(Pokemon().initialize()), -1F)),
true
).ifSuccessful { it.mute = true }
BattleSide(PokemonBattleActor(UUID.randomUUID(), BattlePokemon(Pokemon().initialize()), -1F))
).apply { mute = true }
}
}
@@ -46,6 +46,5 @@ object CobblemonCommands {
ClearPartyCommand.register(dispatcher)
ClearPCCommand.register(dispatcher)
PokemonRestartCommand.register(dispatcher)
BedrockParticleCommand.register(dispatcher)
}
}
@@ -28,6 +28,7 @@ import com.cobblemon.mod.common.item.berry.PortionHealingBerryItem
import com.cobblemon.mod.common.item.berry.StatusCuringBerryItem
import com.cobblemon.mod.common.item.berry.VolatileCuringBerryItem
import com.cobblemon.mod.common.item.interactive.*
import com.cobblemon.mod.common.item.interactive.PotionItem
import com.cobblemon.mod.common.platform.PlatformRegistry
import com.cobblemon.mod.common.pokeball.PokeBall
import com.cobblemon.mod.common.pokemon.helditem.CobblemonHeldItemManager
@@ -36,13 +37,7 @@ import net.minecraft.block.Block
import net.minecraft.entity.LivingEntity
import net.minecraft.entity.effect.StatusEffectInstance
import net.minecraft.entity.effect.StatusEffects
import net.minecraft.item.BlockItem
import net.minecraft.item.FoodComponent
import net.minecraft.item.HangingSignItem
import net.minecraft.item.Item
import net.minecraft.item.ItemStack
import net.minecraft.item.SignItem
import net.minecraft.item.StewItem
import net.minecraft.item.*
import net.minecraft.registry.Registries
import net.minecraft.registry.Registry
import net.minecraft.registry.RegistryKey
@@ -640,6 +635,8 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField
val METAL_POWDER = heldItem("metal_powder")
@JvmField
val LIGHT_POWDER = heldItem("light_powder")
@JvmField
val QUICK_POWDER = heldItem("quick_powder")
@JvmField
val DESTINY_KNOT = heldItem("destiny_knot")
@@ -658,13 +655,103 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField
val POWER_WEIGHT = heldItem("power_weight")
@JvmField
val ABSORB_BULB = heldItem("absorb_bulb")
@JvmField
val ELECTRIC_SEED = heldItem("electric_seed")
@JvmField
val GRASSY_SEED = heldItem("grassy_seed")
@JvmField
val MISTY_SEED = heldItem("misty_seed")
@JvmField
val PSYCHIC_SEED = heldItem("psychic_seed")
@JvmField
val FLOAT_STONE = heldItem("float_stone")
@JvmField
val GRIP_CLAW = heldItem("grip_claw")
@JvmField
val LIGHT_BALL = heldItem("light_ball")
@JvmField
val SHED_SHELL = heldItem("shed_shell")
@JvmField
val STICKY_BARB = heldItem("sticky_barb")
@JvmField
val ABILITY_SHIELD = heldItem("ability_shield")
@JvmField
val AIR_BALLOON = heldItem("air_balloon")
@JvmField
val AMULET_COIN = heldItem("amulet_coin")
@JvmField
val BINDING_BAND = heldItem("binding_band")
@JvmField
val BLUNDER_POLICY = heldItem("blunder_policy")
@JvmField
val CELL_BATTERY = heldItem("cell_battery")
@JvmField
val CLEAR_AMULET = heldItem("clear_amulet")
@JvmField
val COVERT_CLOAK = heldItem("covert_cloak")
@JvmField
val EJECT_BUTTON = heldItem("eject_button")
@JvmField
val EJECT_PACK = heldItem("eject_pack")
@JvmField
val EXPERT_BELT = heldItem("expert_belt")
@JvmField
val FLAME_ORB = heldItem("flame_orb")
@JvmField
val FOCUS_SASH = heldItem("focus_sash")
@JvmField
val LAGGING_TAIL = heldItem("lagging_tail")
@JvmField
val LIFE_ORB = heldItem("life_orb")
@JvmField
val LOADED_DICE = heldItem("loaded_dice")
@JvmField
val LUMINOUS_MOSS = heldItem("luminous_moss")
@JvmField
val METRONOME = heldItem("metronome")
@JvmField
val PROTECTIVE_PADS = heldItem("protective_pads")
@JvmField
val PUNCHING_GLOVE = heldItem("punching_glove")
@JvmField
val RED_CARD = heldItem("red_card")
@JvmField
val RING_TARGET = heldItem("ring_target")
@JvmField
val ROOM_SERVICE = heldItem("room_service")
@JvmField
val SCOPE_LENS = heldItem("scope_lens")
@JvmField
val SHELL_BELL = heldItem("shell_bell")
@JvmField
val SOOTHE_BELL = heldItem("soothe_bell")
@JvmField
val TERRAIN_EXTRUDER = heldItem("terrain_extruder")
@JvmField
val THROAT_SPRAY = heldItem("throat_spray")
@JvmField
val TOXIC_ORB = heldItem("toxic_orb")
@JvmField
val UTILITY_UMBRELLA = heldItem("utility_umbrella")
@JvmField
val WEAKNESS_POLICY = heldItem("weakness_policy")
@JvmField
val WIDE_LENS = heldItem("wide_lens")
@JvmField
val ZOOM_LENS = heldItem("zoom_lens")
@JvmField
val IRON_BALL = heldItem("iron_ball")
@JvmField
val SMOKE_BALL = heldItem("smoke_ball")
@JvmField
val HEAT_ROCK = heldItem("heat_rock")
@JvmField
val DAMP_ROCK = heldItem("damp_rock")
@JvmField
val SMOOTH_ROCK = heldItem("smooth_rock")
@JvmField
val ICY_ROCK = heldItem("icy_rock")
// Mulch
@JvmField
@@ -46,9 +46,9 @@ import com.cobblemon.mod.common.util.battleLang
import com.cobblemon.mod.common.util.getPlayer
import java.io.File
import java.util.UUID
import java.util.concurrent.ConcurrentLinkedQueue
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.text.Text
import java.util.concurrent.ConcurrentLinkedDeque
/**
* Individual battle instance
@@ -69,7 +69,6 @@ open class PokemonBattle(
side1.battle = this
side2.battle = this
this.actors.forEach { actor ->
actor.battle = this
actor.pokemonList.forEach { battlePokemon ->
battlePokemon.effectedPokemon.evolutionProxy.current().progress()
.filterIsInstance<LastBattleCriticalHitsEvolutionProgress>()
@@ -103,7 +102,7 @@ open class PokemonBattle(
var dispatchResult = GO
val dispatches = ConcurrentLinkedDeque<BattleDispatch>()
val dispatches = ConcurrentLinkedQueue<BattleDispatch>()
val afterDispatches = mutableListOf<() -> Unit>()
val captureActions = mutableListOf<BattleCaptureAction>()
@@ -253,6 +252,7 @@ open class PokemonBattle(
}
}
sendUpdate(BattleEndPacket())
sendUpdate(BattleMusicPacket(null))
BattleRegistry.closeBattle(this)
}
@@ -319,12 +319,6 @@ open class PokemonBattle(
fun dispatch(dispatcher: () -> DispatchResult) {
dispatches.add(BattleDispatch { dispatcher() })
}
fun dispatchToFront(dispatcher: () -> DispatchResult) {
dispatches.addFirst(BattleDispatch { dispatcher() })
}
fun dispatchGo(dispatcher: () -> Unit) {
@@ -356,10 +350,6 @@ open class PokemonBattle(
dispatches.add(dispatcher)
}
fun dispatchToFront(dispatcher: BattleDispatch) {
dispatches.addFirst(dispatcher)
}
fun doWhenClear(action: () -> Unit) {
afterDispatches.add(action)
}
@@ -9,19 +9,26 @@
package com.cobblemon.mod.common.api.events.battles
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
import com.cobblemon.mod.common.api.battles.model.actor.BattleActor
import com.cobblemon.mod.common.api.events.Cancelable
import net.minecraft.text.MutableText
import com.cobblemon.mod.common.battles.BattleFormat
/**
* Event fired before a [PokemonBattle] is started. Canceling this event prevents the battle from being
* created and launched.
*
* @property reason The text used to inform the participants why the battle was canceled. Keep null for a default error.
*
* @author Segfault Guy
* @since March 26th 2023
*/
data class BattleStartedPreEvent (override val battle: PokemonBattle, var reason: MutableText? = null) : BattleEvent, Cancelable()
data class BattleStartedPreEvent (
val participants: Collection<BattleActor>,
val format: BattleFormat,
val isPvP: Boolean,
val isPvN: Boolean,
val isPvW: Boolean
) : Cancelable()
/**
* Event fired after a [PokemonBattle] starts.
@@ -29,4 +36,8 @@ data class BattleStartedPreEvent (override val battle: PokemonBattle, var reason
* @author Segfault Guy
* @since March 26th 2023
*/
data class BattleStartedPostEvent (override val battle: PokemonBattle) : BattleEvent
data class BattleStartedPostEvent (
override val battle: PokemonBattle
) : BattleEvent
@@ -196,8 +196,6 @@ fun drawPortraitPokemon(
val context = RenderContext()
PokemonModelRepository.getTextureNoSubstitute(species.resourceIdentifier, aspects, 0f).let { it -> context.put(RenderContext.TEXTURE, it) }
context.put(RenderContext.SCALE, species.getForm(aspects).baseScale)
context.put(RenderContext.SPECIES, species.resourceIdentifier)
context.put(RenderContext.ASPECTS, aspects)
val renderType = model.getLayer(texture)
@@ -27,13 +27,11 @@ object CobblemonPermissions {
val HEAL_POKEMON_SELF = this.create("$HEAL_POKEMON_BASE.self", PermissionLevel.CHEAT_COMMANDS_AND_COMMAND_BLOCKS)
val HEAL_POKEMON_OTHER = this.create("$HEAL_POKEMON_BASE.other", PermissionLevel.CHEAT_COMMANDS_AND_COMMAND_BLOCKS)
private const val LEVEL_UP_BASE = "${COMMAND_PREFIX}levelup"
val LEVEL_UP_SELF = this.create("$LEVEL_UP_BASE.self", PermissionLevel.CHEAT_COMMANDS_AND_COMMAND_BLOCKS)
val LEVEL_UP_OTHER = this.create("$LEVEL_UP_BASE.other", PermissionLevel.CHEAT_COMMANDS_AND_COMMAND_BLOCKS)
val OPEN_STARTER_SCREEN = this.create("${COMMAND_PREFIX}openstarterscreen", PermissionLevel.CHEAT_COMMANDS_AND_COMMAND_BLOCKS)
val BEDROCK_PARTICLE = this.create("${COMMAND_PREFIX}bedrockparticle", PermissionLevel.CHEAT_COMMANDS_AND_COMMAND_BLOCKS)
private const val POKEMON_EDIT_BASE = "${COMMAND_PREFIX}pokemonedit"
val POKEMON_EDIT_SELF = this.create("$POKEMON_EDIT_BASE.self", PermissionLevel.CHEAT_COMMANDS_AND_COMMAND_BLOCKS)
@@ -61,7 +61,6 @@ import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.util.Identifier
import net.minecraft.util.math.Box
import net.minecraft.world.biome.Biome
import net.minecraft.world.gen.structure.Structure
object PokemonSpecies : JsonDataRegistry<Species> {
@@ -94,7 +93,6 @@ object PokemonSpecies : JsonDataRegistry<Species> {
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Biome::class.java).type, BiomeLikeConditionAdapter)
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Block::class.java).type, BlockLikeConditionAdapter)
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Item::class.java).type, ItemLikeConditionAdapter)
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Structure::class.java).type, StructureLikeConditionAdapter)
.registerTypeAdapter(EggGroup::class.java, EggGroupAdapter)
.registerTypeAdapter(StatusEffect::class.java, RegistryElementAdapter<StatusEffect> { Registries.STATUS_EFFECT })
.registerTypeAdapter(NbtItemPredicate::class.java, NbtItemPredicateAdapter)
@@ -238,8 +236,8 @@ object PokemonSpecies : JsonDataRegistry<Species> {
"spd" to (form?.baseStats?.get(Stats.SPECIAL_DEFENCE) ?: species.baseStats[Stats.SPECIAL_DEFENCE] ?: 1),
"spe" to (form?.baseStats?.get(Stats.SPEED) ?: species.baseStats[Stats.SPEED] ?: 1)
)
val heightm = (form?.height ?: species.height) / 10
val weightkg = (form?.weight ?: species.weight) / 10
val heightm = form?.height ?: species.height
val weightkg = form?.weight ?: species.weight
// This is ugly, but we already have it hardcoded in the mod anyway
val maxHP = if (species.showdownId() == "shedinja") 1 else null
val canGigantamax: String? = if (form?.gigantamaxMove != null) form.gigantamaxMove.name else null
@@ -20,7 +20,6 @@ import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.Box
import net.minecraft.util.math.ChunkSectionPos.getSectionCoord
import net.minecraft.util.math.Vec3d
import net.minecraft.world.LightType
import net.minecraft.world.chunk.Chunk
import net.minecraft.world.chunk.ChunkStatus
@@ -70,7 +69,7 @@ object CobblemonSpawningProspector : SpawningProspector {
.map { it.pos }
val defaultState = Blocks.STONE.defaultState
val defaultBlockData = WorldSlice.BlockData(defaultState, 0, 0)
val defaultBlockData = WorldSlice.BlockData(defaultState, 0)
val blocks = Array(area.length) { Array(height) { Array(area.width) { defaultBlockData } } }
val skyLevel = Array(area.length) { Array(area.width) { world.topY } }
@@ -78,7 +77,6 @@ object CobblemonSpawningProspector : SpawningProspector {
val chunks = mutableMapOf<Pair<Int, Int>, Chunk?>()
val yRange = (baseY until baseY + height).reversed()
val lightingProvider = world.lightingProvider
for (x in area.baseX until area.baseX + area.length) {
for (z in area.baseZ until area.baseZ + area.width) {
val query = chunks.computeIfAbsent(Pair(getSectionCoord(x), getSectionCoord(z))) {
@@ -87,16 +85,16 @@ object CobblemonSpawningProspector : SpawningProspector {
var canSeeSky = world.isSkyVisibleAllowingSea(pos.set(x, yRange.first, z))
for (y in yRange) {
val skyLight = lightingProvider.get(LightType.SKY).getLightLevel(pos.set(x, y, z))
val state = query.getBlockState(pos.set(x, y, z))
blocks[x - area.baseX][y - baseY][z - area.baseZ] = WorldSlice.BlockData(
state = state,
light = world.getLightLevel(pos),
skyLight = skyLight
light = world.getLightLevel(pos)
)
if (canSeeSky) {
skyLevel[x - area.baseX][z - area.baseZ] = y
}
if (state.fluidState.isEmpty && !state.isIn(CobblemonBlockTags.SEES_SKY)) {
canSeeSky = false
}
@@ -44,8 +44,7 @@ class WorldSlice(
) {
class BlockData(
val state: BlockState,
val light: Int,
val skyLight: Int
val light: Int
)
val length = blocks.size
@@ -84,15 +83,6 @@ class WorldSlice(
}
fun getLight(position: BlockPos, elseLight: Int = 0) = getLight(position.x, position.y, position.z, elseLight)
fun getSkyLight(x: Int, y: Int, z: Int, elseLight: Int = 0): Int {
return if (!isInBounds(x, y, z)) {
elseLight
} else {
getBlockData(x, y, z).skyLight
}
}
fun getSkyLight(position: BlockPos, elseLight: Int = 0) = getSkyLight(position.x, position.y, position.z, elseLight)
fun skySpaceAbove(x: Int, y: Int, z: Int): Int {
return if (!isInBounds(x, y, z) || skyLevel[x - baseX][z - baseZ] > y) {
0
@@ -52,8 +52,6 @@ abstract class SpawningCondition<T : SpawningContext> {
var maxZ: Float? = null
var minLight: Int? = null
var maxLight: Int? = null
var minSkyLight: Int? = null
var maxSkyLight: Int? = null
var isRaining: Boolean? = null
var isThundering: Boolean? = null
var timeRange: TimeRange? = null
@@ -90,8 +88,6 @@ abstract class SpawningCondition<T : SpawningContext> {
return false
} else if (ctx.light > maxLight.orMax() || ctx.light < minLight.orMin()) {
return false
} else if (ctx.skyLight > maxSkyLight.orMax() || ctx.skyLight < minSkyLight.orMin()) {
return false
} else if (timeRange != null && !timeRange!!.contains((ctx.world.timeOfDay % 24000).toInt())) {
return false
} else if (canSeeSky != null && canSeeSky != ctx.canSeeSky) {
@@ -138,8 +134,6 @@ abstract class SpawningCondition<T : SpawningContext> {
maxZ = merger.mergeSingle(maxZ, other.maxZ)
minLight = merger.mergeSingle(minLight, other.minLight)
maxLight = merger.mergeSingle(maxLight, other.maxLight)
minSkyLight = merger.mergeSingle(minSkyLight, other.minSkyLight)
maxSkyLight = merger.mergeSingle(maxSkyLight, other.maxSkyLight)
timeRange = merger.mergeSingle(timeRange, other.timeRange)
structures = merger.merge(structures, other.structures)?.toMutableList()
}
@@ -30,7 +30,6 @@ open class AreaSpawningContext(
override val world: ServerWorld,
override val position: BlockPos,
override val light: Int,
override val skyLight: Int,
override val canSeeSky: Boolean,
override val influences: MutableList<SpawningInfluence>,
/** Space above. */
@@ -27,13 +27,12 @@ abstract class FlooredSpawningContext(
world: ServerWorld,
position: BlockPos,
light: Int,
skyLight: Int,
canSeeSky: Boolean,
influences: MutableList<SpawningInfluence>,
height: Int,
nearbyBlocks: List<BlockState>,
slice: WorldSlice
) : AreaSpawningContext(cause, world, position, light, skyLight, canSeeSky, influences, height, nearbyBlocks, slice) {
) : AreaSpawningContext(cause, world, position, light, canSeeSky, influences, height, nearbyBlocks, slice) {
/** The block that the spawning is occurring on. */
val baseBlock = slice.getBlockState(position.x, position.y, position.z)
}
@@ -49,13 +48,12 @@ open class GroundedSpawningContext(
world: ServerWorld,
position: BlockPos,
light: Int,
skyLight: Int,
canSeeSky: Boolean,
influences: MutableList<SpawningInfluence>,
height: Int,
nearbyBlocks: List<BlockState>,
slice: WorldSlice
) : FlooredSpawningContext(cause, world, position, light, skyLight, canSeeSky, influences, height, nearbyBlocks, slice)
) : FlooredSpawningContext(cause, world, position, light, canSeeSky, influences, height, nearbyBlocks, slice)
/**
* A spawning context that occurs at the bottom of a body of water.
@@ -68,13 +66,12 @@ open class SeafloorSpawningContext(
world: ServerWorld,
position: BlockPos,
light: Int,
skyLight: Int,
canSeeSky: Boolean,
influences: MutableList<SpawningInfluence>,
height: Int,
nearbyBlocks: List<BlockState>,
slice: WorldSlice
) : FlooredSpawningContext(cause, world, position, light, skyLight, canSeeSky, influences, height, nearbyBlocks, slice) {
) : FlooredSpawningContext(cause, world, position, light, canSeeSky, influences, height, nearbyBlocks, slice) {
override fun isSafeSpace(world: ServerWorld, pos: BlockPos, state: BlockState) = state.fluidState.isIn(FluidTags.WATER)
}
@@ -89,13 +86,12 @@ open class LavafloorSpawningContext(
world: ServerWorld,
position: BlockPos,
light: Int,
skyLight: Int,
canSeeSky: Boolean,
influences: MutableList<SpawningInfluence>,
height: Int,
nearbyBlocks: List<BlockState>,
slice: WorldSlice
) : FlooredSpawningContext(cause, world, position, light, skyLight, canSeeSky, influences, height, nearbyBlocks, slice) {
) : FlooredSpawningContext(cause, world, position, light, canSeeSky, influences, height, nearbyBlocks, slice) {
override fun isSafeSpace(world: ServerWorld, pos: BlockPos, state: BlockState) = state.fluidState.isIn(FluidTags.LAVA)
}
@@ -104,11 +100,10 @@ open class SurfaceSpawningContext(
world: ServerWorld,
position: BlockPos,
light: Int,
skyLight: Int,
canSeeSky: Boolean,
influences: MutableList<SpawningInfluence>,
height: Int,
val depth: Int,
nearbyBlocks: List<BlockState>,
slice: WorldSlice
) : FlooredSpawningContext(cause, world, position, light, skyLight, canSeeSky, influences, height, nearbyBlocks, slice)
) : FlooredSpawningContext(cause, world, position, light, canSeeSky, influences, height, nearbyBlocks, slice)
@@ -61,8 +61,6 @@ abstract class SpawningContext {
abstract val position: BlockPos
/** The light level at this location. */
abstract val light: Int
/** The sky light level at this location. (15 - The distance to the nearest block that would be illuminated by the sun */
abstract val skyLight: Int
/** Whether or not the sky is visible at this location. */
abstract val canSeeSky: Boolean
/** A list of [SpawningInfluence]s that apply due to this specific context. */
@@ -26,14 +26,13 @@ open class SubmergedSpawningContext(
world: ServerWorld,
position: BlockPos,
light: Int,
skyLight: Int,
canSeeSky: Boolean,
influences: MutableList<SpawningInfluence>,
height: Int,
val depth: Int,
nearbyBlocks: List<BlockState>,
slice: WorldSlice
) : AreaSpawningContext(cause, world, position, light, skyLight, canSeeSky, influences, height, nearbyBlocks, slice) {
) : AreaSpawningContext(cause, world, position, light, canSeeSky, influences, height, nearbyBlocks, slice) {
val fluid = slice.getBlockState(position.x, position.y, position.z).fluidState
override fun isSafeSpace(world: ServerWorld, pos: BlockPos, state: BlockState) = state.fluidState.fluid == fluid.fluid
@@ -45,8 +45,6 @@ interface AreaSpawningContextCalculator<O : AreaSpawningContext> : SpawningConte
= input.slice.horizontalSpace(input.position.x + offsetX, input.position.y + offsetY, input.position.z + offsetZ, condition, maximum)
fun getLight(input: AreaSpawningInput, elseLight: Int = 0): Int
= input.slice.getLight(input.position.x, input.position.y + 1, input.position.z, elseLight)
fun getSkyLight(input: AreaSpawningInput, elseLight: Int = 0): Int
= input.slice.getSkyLight(input.position.x, input.position.y + 1, input.position.z, elseLight)
fun getCanSeeSky(input: AreaSpawningInput): Boolean = input.slice.canSeeSky(input.position.x, input.position.y + 1, input.position.z)
fun getSkySpaceAbove(input: AreaSpawningInput): Int = input.slice.skySpaceAbove(input.position.x, input.position.y, input.position.z)
fun getNearbyBlocks(
@@ -59,7 +59,6 @@ object GroundedSpawningContextCalculator : FlooredSpawningContextCalculator<Grou
world = input.world,
position = input.position.toImmutable(),
light = getLight(input),
skyLight = getSkyLight(input),
canSeeSky = getCanSeeSky(input),
influences = input.spawner.copyInfluences(),
height = getHeight(input, surroundingCondition, config.maxVerticalSpace, offsetY = 1),
@@ -86,7 +85,6 @@ object SeafloorSpawningContextCalculator : FlooredSpawningContextCalculator<Seaf
world = input.world,
position = input.position.toImmutable(),
light = getLight(input),
skyLight = getSkyLight(input),
canSeeSky = getCanSeeSky(input),
influences = input.spawner.copyInfluences(),
height = getHeight(input, surroundingCondition, config.maxVerticalSpace, offsetY = 1),
@@ -113,7 +111,6 @@ object LavafloorSpawningContextCalculator : FlooredSpawningContextCalculator<Lav
world = input.world,
position = input.position.toImmutable(),
light = getLight(input),
skyLight = getSkyLight(input),
canSeeSky = getCanSeeSky(input),
influences = input.spawner.copyInfluences(),
height = getHeight(input, surroundingCondition, config.maxVerticalSpace, offsetY = 1),
@@ -141,7 +138,6 @@ object SurfaceSpawningContextCalculator : FlooredSpawningContextCalculator<Surfa
world = input.world,
position = input.position.toImmutable(),
light = getLight(input),
skyLight = getSkyLight(input),
canSeeSky = getCanSeeSky(input),
influences = input.spawner.copyInfluences(),
height = getHeight(input, surroundingCondition, config.maxVerticalSpace / 2, offsetY = 1),
@@ -45,7 +45,6 @@ object SubmergedSpawningContextCalculator : AreaSpawningContextCalculator<Submer
world = input.world,
position = input.position.toImmutable(),
light = getLight(input),
skyLight = getSkyLight(input),
canSeeSky = getCanSeeSky(input),
influences = input.spawner.copyInfluences(),
height = getHeight(input, fluidCondition, ceil(config.maxVerticalSpace / 2F)),
@@ -42,9 +42,9 @@ open class PlayerLevelRangeInfluence(
val party = Cobblemon.storage.getParty(uuid)
previousRange = if (party.any()) {
//val minimumLevel = party.minOf { it.level }
val minimumLevel = party.minOf { it.level }
val maximumLevel = party.maxOf { it.level }
IntRange(max(maximumLevel - variation, 1), min(config.maxPokemonLevel, max(maximumLevel + variation, config.minimumLevelRangeMax)))
IntRange(max(minimumLevel - variation, 1), min(config.maxPokemonLevel, max(maximumLevel + variation, config.minimumLevelRangeMax)))
} else {
noPokemonRange
}
@@ -63,8 +63,7 @@ open class PlayerLevelRangeInfluence(
if (spawnLevelRange.isEmpty()){
spawnLevelRange = if (derivedLevelRange.first > playerLevelRange.last) {
derivedLevelRange.first..(derivedLevelRange.first + pokemonRangeWidth / 4F).toInt()
}
else {
} else {
(derivedLevelRange.first + 3 * pokemonRangeWidth / 4F).toInt()..derivedLevelRange.last
}
}
@@ -77,7 +77,7 @@ abstract class AreaSpawner(
val numberNearby = constrainedArea.world.getEntitiesByClass(
PokemonEntity::class.java,
areaBox
) { pokemonEntity -> pokemonEntity.countsTowardsSpawnCap.get() }.size
) { true }.size
val chunksCovered = CHUNK_REACH * CHUNK_REACH
if (numberNearby.toFloat() / chunksCovered >= Cobblemon.config.pokemonPerChunk) {
@@ -25,7 +25,6 @@ import com.mongodb.client.model.ReplaceOptions
import net.minecraft.util.WorldSavePath
import org.bson.Document
import java.util.UUID
import java.util.Date
/**
* A [FileStoreAdapter] for MongoDB. This allows a [PokemonStore] to be serialized to a MongoDB database.
@@ -46,7 +45,6 @@ open class MongoDBStoreAdapter(
override fun save(storeClass: Class<out PokemonStore<*>>, uuid: UUID, serialized: JsonObject) {
val document = Document.parse(this.gson.toJson(serialized))
document["uuid"] = uuid.toString()
document["lastUpdated"] = Date()
val collection = getCollection(storeClass)
val filter = Document("uuid", uuid.toString())
collection.replaceOne(filter, document, ReplaceOptions().upsert(true))
@@ -69,11 +67,7 @@ open class MongoDBStoreAdapter(
if (document != null) {
val json = this.gson.fromJson(document.toJson(), JsonObject::class.java)
val store = try {
storeClass.getConstructor(UUID::class.java, UUID::class.java).newInstance(uuid, uuid)
} catch (exception: NoSuchMethodException) {
storeClass.getConstructor(UUID::class.java).newInstance(uuid)
}
val store = storeClass.getConstructor(UUID::class.java).newInstance(uuid)
store.loadFromJSON(json)
return store
}
@@ -10,8 +10,8 @@ package com.cobblemon.mod.common.api.storage.player
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonNetwork.sendPacket
import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.net.messages.client.starter.SetClientPlayerDataPacket
import com.cobblemon.mod.common.util.cobblemonResource
import java.util.UUID
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.util.Identifier
@@ -23,7 +23,6 @@ data class PlayerData(
var starterSelected: Boolean,
var starterUUID: UUID?,
var keyItems: MutableSet<Identifier>,
var battleTheme: Identifier?,
val extraData: MutableMap<String, PlayerDataExtension>,
) {
var advancementData: PlayerAdvancementData = PlayerAdvancementData()
@@ -41,7 +40,6 @@ data class PlayerData(
starterSelected = false,
starterUUID = null,
keyItems = mutableSetOf(),
battleTheme = CobblemonSounds.PVP_BATTLE.id,
extraData = mutableMapOf()
)
}
@@ -9,16 +9,16 @@
package com.cobblemon.mod.common.battles
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
import com.cobblemon.mod.common.api.battles.model.actor.BattleActor
import com.cobblemon.mod.common.api.events.CobblemonEvents
import com.cobblemon.mod.common.api.events.battles.BattleStartedPreEvent
import com.cobblemon.mod.common.api.storage.party.PartyStore
import com.cobblemon.mod.common.battles.actor.PlayerBattleActor
import com.cobblemon.mod.common.battles.actor.PokemonBattleActor
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.util.battleLang
import com.cobblemon.mod.common.util.getBattleTheme
import com.cobblemon.mod.common.util.getPlayer
import com.cobblemon.mod.common.util.party
import java.util.Optional
@@ -63,14 +63,18 @@ object BattleBuilder {
}
return if (errors.isEmpty) {
BattleRegistry.startBattle(
battleFormat = battleFormat,
side1 = BattleSide(player1Actor),
side2 = BattleSide(player2Actor)
).ifSuccessful {
player1Actor.battleTheme = player2.getBattleTheme()
player2Actor.battleTheme = player1.getBattleTheme()
CobblemonEvents.BATTLE_STARTED_PRE.postThen(
BattleStartedPreEvent(listOf(player1Actor, player2Actor), battleFormat, true, false, false))
{
return SuccessfulBattleStart(
BattleRegistry.startBattle(
battleFormat = battleFormat,
side1 = BattleSide(player1Actor),
side2 = BattleSide(player2Actor)
)
)
}
errors
} else {
errors
}
@@ -121,16 +125,20 @@ object BattleBuilder {
}
return if (errors.isEmpty) {
BattleRegistry.startBattle(
battleFormat = battleFormat,
side1 = BattleSide(playerActor),
side2 = BattleSide(wildActor)
).ifSuccessful {
CobblemonEvents.BATTLE_STARTED_PRE.postThen(
BattleStartedPreEvent(listOf(playerActor, wildActor), battleFormat, false, false, true))
{
val battle = BattleRegistry.startBattle(
battleFormat = battleFormat,
side1 = BattleSide(playerActor),
side2 = BattleSide(wildActor)
)
if (!cloneParties) {
pokemonEntity.battleId.set(Optional.of(it.battleId))
pokemonEntity.battleId.set(Optional.of(battle.battleId))
}
playerActor.battleTheme = pokemonEntity.getBattleTheme()
return SuccessfulBattleStart(battle)
}
errors
} else {
errors
}
@@ -170,21 +178,12 @@ interface BattleStartError {
requiredCount: Int,
hadCount: Int
) = InsufficientPokemonError(player, requiredCount, hadCount)
fun canceledByEvent(reason: MutableText?) = CanceledError(reason)
}
}
enum class CommonBattleStartError : BattleStartError {
}
class CanceledError(
val reason: MutableText?
): BattleStartError {
override fun getMessageFor(entity: Entity) = reason ?: battleLang("error.canceled")
}
class InsufficientPokemonError(
val player: ServerPlayerEntity,
val requiredCount: Int,
@@ -12,7 +12,6 @@ import com.cobblemon.mod.common.CobblemonNetwork.sendPacket
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
import com.cobblemon.mod.common.api.events.CobblemonEvents
import com.cobblemon.mod.common.api.events.battles.BattleStartedPostEvent
import com.cobblemon.mod.common.api.events.battles.BattleStartedPreEvent
import com.cobblemon.mod.common.api.pokemon.helditem.HeldItemProvider
import com.cobblemon.mod.common.api.pokemon.stats.Stats
import com.cobblemon.mod.common.api.pokemon.status.Statuses
@@ -146,11 +145,17 @@ object BattleRegistry {
return team.joinToString("]")
}
private fun startShowdown(battle: PokemonBattle) {
fun startBattle(
battleFormat: BattleFormat,
side1: BattleSide,
side2: BattleSide
): PokemonBattle {
val battle = PokemonBattle(battleFormat, side1, side2)
battleMap[battle.battleId] = battle
// Build request message
val messages = mutableListOf<String>()
messages.add(">start { \"format\": ${battle.format.toFormatJSON()} }")
messages.add(">start { \"format\": ${battleFormat.toFormatJSON()} }")
/*
* Showdown IDs are like p1, p2, p3, etc. Showdown uses these keys to identify who is doing what to whom.
@@ -169,17 +174,19 @@ object BattleRegistry {
var actorIndex = 1
for (actor in battle.side1.actors) {
actor.showdownId = "p$actorIndex"
actor.battle = battle
actorIndex += 2
}
actorIndex = 2
for (actor in battle.side2.actors) {
actor.showdownId = "p$actorIndex"
actor.battle = battle
actorIndex += 2
}
for (actor in battle.actors) {
repeat(battle.format.battleType.slotsPerActor) {
repeat(battleFormat.battleType.slotsPerActor) {
actor.activePokemon.add(ActiveBattlePokemon(actor))
}
val entities = actor.pokemonList.mapNotNull { it.entity }
@@ -198,25 +205,8 @@ object BattleRegistry {
// Compiles the request and sends it off
ShowdownService.service.startBattle(battle, messages.toTypedArray())
}
fun startBattle(
battleFormat: BattleFormat,
side1: BattleSide,
side2: BattleSide,
silent: Boolean = false
): BattleStartResult {
val battle = PokemonBattle(battleFormat, side1, side2)
if (silent) return SuccessfulBattleStart(battle)
val preBattleEvent = BattleStartedPreEvent(battle)
CobblemonEvents.BATTLE_STARTED_PRE.postThen(preBattleEvent) {
battleMap[battle.battleId] = battle
startShowdown(battle)
CobblemonEvents.BATTLE_STARTED_POST.post(BattleStartedPostEvent(battle))
return SuccessfulBattleStart(battle)
}
return ErroredBattleStart(mutableSetOf(BattleStartError.canceledByEvent(preBattleEvent.reason)))
CobblemonEvents.BATTLE_STARTED_POST.post(BattleStartedPostEvent(battle))
return battle
}
fun closeBattle(battle: PokemonBattle) {
@@ -89,17 +89,15 @@ object ShowdownInterpreter {
updateInstructions["|-fieldstart|"] = this::handleFieldStartInstructions
updateInstructions["|-fieldend|"] = this::handleFieldEndInstructions
updateInstructions["|-ability|"] = this::handleAbilityInstructions
updateInstructions["|-endability|"] = this::handleEndAbilityInstruction
//To-Do updateInstructions["|-endability|"] = this::handleEndAbilityInstruction
updateInstructions["|-nothing"] = { battle, _, _ ->
battle.dispatchGo { battle.broadcastChatMessage(battleLang("nothing")) }
}
updateInstructions["|-clearallboost"] = this::handleClearAllBoostInstructions
updateInstructions["|-singleturn|"] = this::handleSingleTurnInstruction
updateInstructions["|-singlemove|"] = this::handleSingleMoveInstruction
updateInstructions["|-transform|"] = this::handleTransformInstruction
updateInstructions["|-prepare|"] = this::handlePrepareInstruction
updateInstructions["|-swapboost"] = this::handleSwapBoostInstruction
updateInstructions["|-copyboost|"] = this::handleCopyBoostInstruction
updateInstructions["|-swapsideconditions|"] = this::handleSilently
updateInstructions["|-unboost|"] = { battle, line, remainingLines -> boostInstruction(battle, line, remainingLines, false) }
updateInstructions["|-boost|"] = { battle, line, remainingLines -> boostInstruction(battle, line, remainingLines, true) }
@@ -107,7 +105,6 @@ object ShowdownInterpreter {
updateInstructions["|t:|"] = {_, _, _ -> }
updateInstructions["|pp_update|"] = this::handlePpUpdateInstruction
updateInstructions["|-immune"] = this::handleImmuneInstruction
updateInstructions["|-invertboost|"] = this::handleInvertBoostInstruction
updateInstructions["|-status|"] = this::handleStatusInstruction
updateInstructions["|-end|"] = this::handleEndInstruction
updateInstructions["|-miss|"] = this::handleMissInstruction
@@ -479,10 +476,12 @@ object ShowdownInterpreter {
private fun handleTurnInstruction(battle: PokemonBattle, message: BattleMessage, remainingLines: MutableList<String>) {
if (!battle.started) {
battle.started = true
battle.actors.filterIsInstance<PlayerBattleActor>().forEach { actor ->
val initializePacket = BattleInitializePacket(battle, actor.getSide())
actor.sendUpdate(initializePacket)
actor.sendUpdate(BattleMusicPacket(actor.battleTheme))
battle.actors.forEach { actor ->
if (actor.uuid.getPlayer() != null) {
val initializePacket = BattleInitializePacket(battle, actor.getSide())
actor.sendUpdate(initializePacket)
actor.sendUpdate(BattleMusicPacket(battle))
}
}
battle.actors.forEach { actor ->
actor.sendUpdate(BattleSetTeamPokemonPacket(actor.pokemonList.map { it.effectedPokemon }))
@@ -656,34 +655,6 @@ object ShowdownInterpreter {
}
}
/**
* Format:
* |-invertboost|POKEMON|MOVE
*
* The POKEMON had its stat changes inverted.
*/
private fun handleInvertBoostInstruction(battle: PokemonBattle, message: BattleMessage, remainingLines: MutableList<String>) {
battle.dispatchWaiting {
val pokemon = message.getBattlePokemon(0, battle) ?: return@dispatchWaiting
val name = pokemon.getName()
battle.broadcastChatMessage(battleLang("invertboost", name))
// update and invert BOOST and UNBOOST contexts
val context = getContextFromAction(message, BattleContext.Type.BOOST, battle)
val newUnboosts = pokemon.contextManager.get(BattleContext.Type.BOOST)?.map {
BasicContext(it.id, context.turn, BattleContext.Type.UNBOOST, context.origin)
}?.toTypedArray()
val newBoosts = pokemon.contextManager.get(BattleContext.Type.UNBOOST)?.map {
BasicContext(it.id, context.turn, BattleContext.Type.BOOST, context.origin)
}?.toTypedArray()
pokemon.contextManager.clear(BattleContext.Type.BOOST, BattleContext.Type.UNBOOST)
newBoosts?.let { pokemon.contextManager.add(*it) }
newUnboosts?.let { pokemon.contextManager.add(*it) }
battle.minorBattleActions[pokemon.uuid] = message
}
}
/**
* Format:
* |move|POKEMON|MOVE|TARGET
@@ -861,25 +832,12 @@ object ShowdownInterpreter {
battle.dispatchWaiting(1.5F){
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 effectID = message.effectAt(1)?.id ?: return@dispatchWaiting
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.)
"shedtail" -> battleLang("fail.substitute", pokemonName)
"hyperspacefury", "aurawheel" -> battleLang("fail.darkvoid", pokemonName) // Moves that can only be used by one species and fail when any others try
"hyperspacefury" -> battleLang("fail.darkvoid", pokemonName)
"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())
@@ -946,11 +904,6 @@ object ShowdownInterpreter {
val pokemon = message.getBattlePokemon(0, battle) ?: return@dispatch GO
val effectID = message.effectAt(1)?.id ?: return@dispatch GO
val optionalEffect = message.effect()
val optionalPokemon = message.getSourceBattlePokemon(battle)
val optionalPokemonName = optionalPokemon?.getName()
val extraEffect = message.effectAt(2)?.typelessData ?: Text.literal("UNKOWN")
// skip adding contexts for every time the perish counter decrements
if (!effectID.contains("perish")) {
// don't need to add unique: showdown won't send -start instruction if volatile status is already present
@@ -959,17 +912,14 @@ object ShowdownInterpreter {
battle.minorBattleActions[pokemon.uuid] = message
if (!message.hasOptionalArgument("silent")) {
val lang = if (optionalEffect?.id == "reflecttype" && optionalPokemonName != null)
battleLang("start.reflecttype", pokemon.getName(), optionalPokemonName)
else
when (effectID) {
"confusion", "perish3" -> return@dispatch GO // Skip
"perish2", "perish1", "perish0",
"stockpile1", "stockpile2", "stockpile3" -> battleLang("start.${effectID.dropLast(1)}", pokemon.getName(), effectID.last().digitToInt())
"dynamax" -> battleLang("start.${message.effectAt(2)?.id ?: effectID}", pokemon.getName()).yellow()
"curse" -> battleLang("start.curse", message.getSourceBattlePokemon(battle)!!.getName(), pokemon.getName())
else -> battleLang("start.$effectID", pokemon.getName(), extraEffect)
}
val lang = when (effectID) {
"confusion", "perish3" -> return@dispatch GO // Skip
"perish2", "perish1", "perish0" -> battleLang("start.perish", pokemon.getName(), effectID.last().digitToInt())
"dynamax" -> battleLang("start.${message.effectAt(2)?.id ?: effectID}", pokemon.getName()).yellow()
"curse" -> battleLang("start.curse", message.getSourceBattlePokemon(battle)!!.getName(), pokemon.getName())
"disable" -> battleLang("start.disable", pokemon.getName(), message.effectAt(2)!!.rawData)
else -> battleLang("start.$effectID", pokemon.getName())
}
battle.broadcastChatMessage(lang)
}
WaitDispatch(1F)
@@ -986,7 +936,7 @@ object ShowdownInterpreter {
battle.dispatchWaiting(1.5F) {
val pokemon = message.getBattlePokemon(0, battle) ?: return@dispatchWaiting
val pokemonName = pokemon.getName()
val sourceName = message.getSourceBattlePokemon(battle)?.getName() ?: Text.literal("UNKOWN")
val sourceName = message.getSourceBattlePokemon(battle)?.getName() ?: return@dispatchWaiting
val effectID = message.effectAt(1)?.id ?: return@dispatchWaiting
val lang = battleLang("singleturn.$effectID", pokemonName, sourceName)
battle.broadcastChatMessage(lang)
@@ -994,25 +944,6 @@ object ShowdownInterpreter {
}
}
/**
* Format:
* |-transform|POKEMON|POKEMON
*
* The Pokémon POKEMON used Transform to turn into Target Pokemon POKEMON
*/
private fun handleTransformInstruction(battle: PokemonBattle, message: BattleMessage, remainingLines: MutableList<String>) {
battle.dispatchWaiting(1.5F) {
val pokemon = message.getBattlePokemon(0, battle) ?: return@dispatchWaiting
val pokemonName = pokemon.getName()
val targetPokemon = message.getBattlePokemon(1, battle) ?: return@dispatchWaiting
val targetPokemonName = targetPokemon.getName()
val lang = battleLang("transform", pokemonName, targetPokemonName)
battle.broadcastChatMessage(lang)
battle.minorBattleActions[pokemon.uuid] = message
}
}
/**
* Format:
* |-singlemove|POKEMON|MOVE
@@ -1030,37 +961,21 @@ object ShowdownInterpreter {
}
}
/**
* Format:
* |-endability|POKEMON
*
* The Pokémon POKEMON's Ability was surpressed
*/
private fun handleEndAbilityInstruction(battle: PokemonBattle, message: BattleMessage, remainingLines: MutableList<String>) {
battle.dispatchWaiting(1.5F) {
val pokemon = message.getBattlePokemon(0, battle) ?: return@dispatchWaiting
val pokemonName = pokemon.getName()
val lang = battleLang("endability", pokemonName)
battle.broadcastChatMessage(lang)
battle.minorBattleActions[pokemon.uuid] = message
}
}
/**
* Format:
* |-block|POKEMON|EFFECT|MOVE|ATTACKER
*
* An effect targeted at POKEMON was blocked by EFFECT. This may optionally specify that the effect was a MOVE from ATTACKER.
*
* (of)SOURCE will note the owner of the EFFECT, in the case that it's not EFFECT (for instance, an ally with Aroma Veil.)
* An effect targeted at POKEMON was blocked by EFFECT. This may optionally specify that the effect was a MOVE from ATTACKER. [of]SOURCE will note the owner of the EFFECT, in the case that it's not EFFECT (for instance, an ally with Aroma Veil.)
*/
private fun handleBlockInstructions(battle: PokemonBattle, message: BattleMessage, remainingLines: MutableList<String>) {
battle.dispatchWaiting(1.5F) {
val pokemon = message.getBattlePokemon(0, battle) ?: return@dispatchWaiting
val pokemonName = pokemon.getName()
val effectID = message.effectAt(1)?.id ?: return@dispatchWaiting
val lang = battleLang("block.$effectID", pokemonName)
val lang = when (effectID) {
"matblock" -> battleLang("block.matblock", message.effectAt(2)!!.rawData)
else -> battleLang("block.$effectID", pokemonName)
}
battle.broadcastChatMessage(lang)
battle.minorBattleActions[pokemon.uuid] = message
@@ -1078,7 +993,6 @@ object ShowdownInterpreter {
val pokemonName = pokemon.getName()
val sourceName = message.getSourceBattlePokemon(battle)?.getName() ?: Text.literal("UNKOWN")
val effect = message.effectAt(1) ?: return
val extraEffect = message.effectAt(2)?.typelessData ?: Text.literal("UNKOWN")
broadcastOptionalAbility(battle, effect, pokemonName)
battle.dispatch{
@@ -1089,18 +1003,24 @@ object ShowdownInterpreter {
// Includes a 3rd argument being the magnitude level as a number
"magnitude" -> battleLang("activate.magnitude", message.argumentAt(2)?.toIntOrNull() ?: 1)
// Includes spited move and the PP it was reduced by
"spite", "eeriespell" -> battleLang("activate.spite", pokemonName, extraEffect, message.argumentAt(3)!!)
"spite" -> battleLang("activate.spite", pokemonName, message.argumentAt(2)!!, message.argumentAt(3)!!)
// Don't need additional lang, announced elsewhere
"toxicdebris", "shedskin" -> return@dispatch GO
"matblock" -> battleLang("activate.matblock", message.effectAt(2)!!.rawData)
// Add activation to each Pokemon's history
"destinybond" -> {
battle.activePokemon.mapNotNull { it.battlePokemon?.uuid }.forEach { battle.minorBattleActions[it] = message }
battleLang("activate.destinybond", pokemonName)
}
"focussash", "focusband" -> battleLang("activate.focusband", pokemonName, effect.typelessData)
// Includes revealed move
"forewarn" -> {
val moveName = message.moveAt(2)?.displayName ?: run { println(message.argumentAt(2)); "(Unrecognized: ${message.argumentAt(2)})".text() }
battleLang("activate.forewarn", sourceName, moveName)
}
"focussash", "focusband" -> battleLang("activate.focusband", pokemonName, message.effectAt(1)!!.typelessData)
"maxguard", "protect" -> battleLang("activate.protect", pokemonName)
"shadowforce", "hyperspacefury", "hyperspacehole" -> battleLang("activate.phantomforce", pokemonName)
else -> battleLang("activate.${effect.id}", pokemonName, sourceName, extraEffect)
else -> battleLang("activate.${effect.id}", pokemonName, sourceName)
}
battle.broadcastChatMessage(lang)
WaitDispatch(1F)
@@ -1166,7 +1086,7 @@ object ShowdownInterpreter {
/**
* Format:
* |-ability|POKEMON|ABILITY|(from)EFFECT
* |-ability|POKEMON|ABILITY|&#91from&#93EFFECT
*
* The ABILITY of the POKEMON has been changed due to a move/ability EFFECT.
*
@@ -1179,28 +1099,15 @@ object ShowdownInterpreter {
val pokemon = message.getBattlePokemon(0, battle) ?: return
val pokemonName = pokemon.getName()
val effect = message.effectAt(1) ?: return
val optionalEffect = message.effect()
val optionalPokemon = message.getSourceBattlePokemon(battle)
val optionalPokemonName = optionalPokemon?.getName()
// If there is an optional effect causing the activation, broadcast that instead of the standard effect
if (optionalEffect != null) {
broadcastAbility(battle, optionalEffect, pokemonName)
} else {
broadcastAbility(battle, effect, pokemonName)
}
broadcastAbility(battle, effect, pokemonName)
battle.dispatch {
this.lastCauser[battle.battleId] = message
val lang = when (optionalEffect?.id) {
"trace" -> optionalPokemonName?.let { battleLang("ability.trace", pokemonName, it, effect.typelessData) }
"receiver", "powerofalchemy" -> optionalPokemonName?.let { battleLang("ability.receiver", it, effect.typelessData) } // Receiver and Power of Alchemy share the same text
else -> when (effect.id) {
"sturdy", "unnerve", "anticipation" -> battleLang("ability.${effect.id}", pokemonName) // Unique message
"airlock", "cloudnine" -> battleLang("ability.airlock") // Cloud Nine shares the same text as Air Lock
else -> null // Effect broadcasted by a succeeding instruction
}
val lang = when (effect.id) {
"sturdy", "unnerve", "anticipation" -> battleLang("ability.${effect.id}", pokemonName) // Unique message
"airlock", "cloudnine" -> battleLang("ability.airlock") // Cloud Nine shares the same text as Air Lock
else -> null // Effect broadcasted by a succeeding instruction
}
battle.minorBattleActions[pokemon.uuid] = message
@@ -1261,11 +1168,7 @@ object ShowdownInterpreter {
val pokemonName = pokemon.getName()
val targetPokemon = message.getBattlePokemon(1, battle) ?: return@dispatchWaiting
val targetPokemonName = targetPokemon.getName()
val effectID = message.effect()?.id ?: return@dispatchWaiting
val lang = when (effectID) {
"guardswap", "powerswap", "heartswap" -> battleLang("swapboost.$effectID", pokemonName)
else -> battleLang("swapboost.generic", pokemonName, targetPokemonName)
}
val lang = battleLang("swapboost.generic", pokemonName, targetPokemonName)
battle.broadcastChatMessage(lang)
pokemon.contextManager.swap(targetPokemon.contextManager, BattleContext.Type.BOOST)
@@ -1274,26 +1177,6 @@ object ShowdownInterpreter {
}
}
/**
* Format:
* |-copyboost|SOURCE|TARGET|&#91from&#93EFFECT
*
* Copies any stat changes from the TARGET Pokémon to the SOURCE Pokémon due to EFFECT.
*/
private fun handleCopyBoostInstruction(battle: PokemonBattle, message: BattleMessage, remainingLines: MutableList<String>) {
battle.dispatchWaiting {
val pokemon = message.getBattlePokemon(0, battle) ?: return@dispatchWaiting
val pokemonName = pokemon.getName()
val targetPokemon = message.getBattlePokemon(1, battle) ?: return@dispatchWaiting
val targetPokemonName = targetPokemon.getName()
val lang = battleLang("copyboost.generic", pokemonName, targetPokemonName)
battle.broadcastChatMessage(lang)
pokemon.contextManager.copy(targetPokemon.contextManager, BattleContext.Type.BOOST, BattleContext.Type.UNBOOST)
battle.minorBattleActions[pokemon.uuid] = message
}
}
/**
* Format:
* |-end|POKEMON|EFFECT
@@ -1588,7 +1471,7 @@ object ShowdownInterpreter {
val maxHealth = newHealth.split("/")[1].toInt()
val difference = maxHealth - remainingHealth
newHealthRatio = remainingHealth.toFloat() / maxHealth
battle.dispatchToFront {
battle.dispatch {
battlePokemon.effectedPokemon.currentHealth = remainingHealth
if (difference > 0) {
battlePokemon.effectedPokemon.let { pokemon ->
@@ -1602,8 +1485,9 @@ object ShowdownInterpreter {
GO
}
}
privateMessage.pnxAndUuid(0)?.let { (pnx, _) -> battle.sendSidedUpdate(actor, BattleHealthChangePacket(pnx, remainingHealth.toFloat()), BattleHealthChangePacket(pnx, newHealthRatio)) }
privateMessage.pnxAndUuid(0)?.let { (pnx, _) -> {
battle.sendSidedUpdate(actor, BattleHealthChangePacket(pnx, remainingHealth.toFloat()), BattleHealthChangePacket(pnx, newHealthRatio))
}}
battle.minorBattleActions[battlePokemon.uuid] = privateMessage
WaitDispatch(1F)
@@ -1663,7 +1547,7 @@ object ShowdownInterpreter {
/**
* Format:
* |-item|POKEMON|ITEM|(from)EFFECT
* |-item|POKEMON|ITEM|&#91from&#93EFFECT
*
* The ITEM held by the POKEMON has been changed or revealed due to a move or ability EFFECT.
*
@@ -1686,7 +1570,7 @@ object ShowdownInterpreter {
/**
* Format:
* |-enditem|POKEMON|ITEM|(from)EFFECT
* |-enditem|POKEMON|ITEM|&#91from&#93EFFECT
*
* The ITEM held by POKEMON has been destroyed by a move or ability, and it now holds no item.
*
@@ -1697,12 +1581,11 @@ object ShowdownInterpreter {
*/
fun handleEndItemInstruction(battle: PokemonBattle, message: BattleMessage, remainingLines: MutableList<String>) {
battle.dispatchGo {
// All logic regarding broadcasting battle messages is handled in CobblemonHeldItemManager
val battlePokemon = message.getBattlePokemon(0, battle) ?: return@dispatchGo
val itemEffect = message.effectAt(1) ?: return@dispatchGo
val item = message.effectAt(1) ?: return@dispatchGo
battlePokemon.heldItemManager.handleEndInstruction(battlePokemon, battle, message)
battle.minorBattleActions[battlePokemon.uuid] = message
battlePokemon.contextManager.remove(itemEffect.id, BattleContext.Type.ITEM)
battlePokemon.contextManager.remove(item.id, BattleContext.Type.ITEM)
if (message.hasOptionalArgument("eat")) {
battlePokemon.entity?.playSound(CobblemonSounds.BERRY_EAT, 1F, 1F)
}
@@ -1769,7 +1652,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 && battlePokemon.effectedPokemon.status?.status != status) {
if (status is PersistentStatus) {
battlePokemon.effectedPokemon.applyStatus(status)
if (pnx != null) {
battle.sendUpdate(BattlePersistentStatusPacket(pnx, status))
@@ -1834,9 +1717,7 @@ object ShowdownInterpreter {
message.hasOptionalArgument("zeffect") -> battleLang("clearallnegativeboost.zeffect", pokemonName)
else -> battleLang("clearallnegativeboost", pokemonName)
}
if (!message.hasOptionalArgument("silent")) {
battle.broadcastChatMessage(lang)
}
battle.broadcastChatMessage(lang)
battlePokemon.contextManager.clear(BattleContext.Type.UNBOOST)
battle.minorBattleActions[battlePokemon.uuid] = message
@@ -17,12 +17,10 @@ import com.cobblemon.mod.common.api.net.NetworkPacket
import com.cobblemon.mod.common.api.pokemon.experience.BattleExperienceSource
import com.cobblemon.mod.common.api.text.red
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.net.messages.client.battle.BattleMusicPacket
import com.cobblemon.mod.common.util.battleLang
import com.cobblemon.mod.common.util.getPlayer
import java.util.UUID
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.sound.SoundEvent
import net.minecraft.text.MutableText
class PlayerBattleActor(
@@ -33,14 +31,6 @@ class PlayerBattleActor(
override val entity: ServerPlayerEntity?
get() = this.uuid.getPlayer()
/** The [SoundEvent] to play to the player during a battle. Will start playing as soon as the battle starts. */
var battleTheme: SoundEvent? = null
set(value) {
if (field != value && this.battle.started)
this.sendUpdate(BattleMusicPacket(value))
field = value
}
override fun getName(): MutableText = this.entity?.name?.copy() ?: "Offline Player".red()
override fun nameOwned(name: String): MutableText = battleLang("owned_pokemon", this.getName(), name)
override val type = ActorType.PLAYER
@@ -73,15 +73,6 @@ class ContextManager {
}
}
/** Copies all the [BattleContext]s belonging to the [bucketTypes] buckets of the [with] manager's respective buckets. */
fun copy(with: ContextManager, vararg bucketTypes: BattleContext.Type) {
bucketTypes.forEach { bucketType ->
val newContexts = with.buckets[bucketType]?.toMutableList()
this.clear(bucketType)
newContexts?.let { this.add(*it.toTypedArray()) }
}
}
/** Gets all [BattleContext]s belonging to the [bucketType] bucket. */
fun get(bucketType: BattleContext.Type) : Collection<BattleContext>? {
return buckets[bucketType]
@@ -28,7 +28,6 @@ import com.cobblemon.mod.common.client.render.models.blockbench.repository.PokeB
import com.cobblemon.mod.common.client.render.models.blockbench.repository.PokemonModelRepository
import com.cobblemon.mod.common.client.render.pokeball.PokeBallRenderer
import com.cobblemon.mod.common.client.render.pokemon.PokemonRenderer
import com.cobblemon.mod.common.client.sound.battle.BattleMusicController
import com.cobblemon.mod.common.client.starter.ClientPlayerData
import com.cobblemon.mod.common.client.storage.ClientStorageManager
import com.cobblemon.mod.common.client.trade.ClientTrade
@@ -101,7 +100,6 @@ object CobblemonClient {
PlatformEvents.CLIENT_ITEM_TOOLTIP.subscribe { event ->
val stack = event.stack
val lines = event.lines
val size = lines.size
@Suppress("DEPRECATION")
if (stack.item.registryEntry.key.isPresent && stack.item.registryEntry.key.get().value.namespace == Cobblemon.MODID) {
if (stack.nbt?.getBoolean(DataKeys.HIDE_TOOLTIP) == true) {
@@ -109,14 +107,13 @@ object CobblemonClient {
}
val language = Language.getInstance()
val key = this.baseLangKeyForItem(stack)
val offset = if (size > 1) 1 else 0
if (language.hasTranslation(key)) {
lines.add(size - offset, key.asTranslated().gray())
lines.add(key.asTranslated().gray())
}
var i = 1
var listKey = "${key}_$i"
while(language.hasTranslation(listKey)) {
lines.add(size - offset, listKey.asTranslated().gray())
lines.add(listKey.asTranslated().gray())
listKey = "${key}_${++i}"
}
}
@@ -240,8 +237,6 @@ object CobblemonClient {
fun endBattle() {
battle = null
battleOverlay.lastKnownBattle = null
BattleMusicController.endMusic()
}
private fun baseLangKeyForItem(stack: ItemStack): String {
@@ -57,8 +57,6 @@ fun drawProfilePokemon(
val context = RenderContext()
PokemonModelRepository.getTextureNoSubstitute(species, aspects, 0f).let { it -> context.put(RenderContext.TEXTURE, it) }
context.put(RenderContext.SCALE, PokemonSpecies.getByIdentifier(species)!!.getForm(aspects).baseScale)
context.put(RenderContext.SPECIES, species)
context.put(RenderContext.ASPECTS, aspects)
val renderType = model.getLayer(texture)
@@ -9,33 +9,101 @@
package com.cobblemon.mod.common.client.net.battle
import com.cobblemon.mod.common.Cobblemon.LOGGER
import com.cobblemon.mod.common.access.SoundManagerDuck
import com.cobblemon.mod.common.api.net.ClientNetworkPacketHandler
import com.cobblemon.mod.common.client.sound.battle.BattleMusicController
import com.cobblemon.mod.common.client.sound.battle.BattleMusicInstance
import com.cobblemon.mod.common.mixin.accessor.MusicTrackerAccessor
import com.cobblemon.mod.common.net.messages.client.battle.BattleMusicPacket
import net.minecraft.client.MinecraftClient
import net.minecraft.client.sound.PositionedSoundInstance
import net.minecraft.client.sound.SoundInstance
import net.minecraft.client.sound.SoundManager
import net.minecraft.client.sound.TickableSoundInstance
import net.minecraft.sound.SoundCategory
import net.minecraft.sound.SoundEvent
import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.MathHelper
/**
* The handler for [BattleMusicPacket]s. Interfaces with [BattleMusicController] to change battle music.
*
* @author Segfault Guy
* @since April 22nd, 2023
*/
object BattleMusicHandler : ClientNetworkPacketHandler<BattleMusicPacket> {
// Keep a reference for look-up in SoundManager
var music: BattleMusicInstance? = null
// SoundCategories that are blocked while battle music is playing
private val interferences = listOf(SoundCategory.AMBIENT, SoundCategory.RECORDS)
override fun handle(packet: BattleMusicPacket, client: MinecraftClient) {
val soundManager = client.soundManager
val newMusic = packet.music?.let { BattleMusicInstance(it, packet.volume, packet.pitch) }
val currMusic = BattleMusicController.music
val newMusic = packet.music
val currMusic = this.music
if (newMusic == null)
BattleMusicController.endMusic()
else if (!soundManager.isPlaying(currMusic))
BattleMusicController.initializeMusic(newMusic)
soundManager.endMusic()
else if (currMusic == null)
soundManager.initializeMusic(newMusic, packet.volume, packet.pitch)
else if (newMusic.id != currMusic.id)
BattleMusicController.switchMusic(newMusic)
soundManager.switchMusic(newMusic, packet.volume, packet.pitch)
else
LOGGER.error("Ignored BattleMusicPacket from server: ${packet.music?.id}")
}
// stop all interference sounds currently playing and start a new BattleMusicInstance
private fun SoundManager.initializeMusic(sound: SoundEvent, volume: Float, pitch: Float) {
this.stopSounds(null, SoundCategory.MUSIC)
interferences.forEach { this.stopSounds(null, it) }
(this as SoundManagerDuck).toggleCategories(*interferences.toTypedArray())
music = BattleMusicInstance(sound, volume, pitch)
this.play(music)
}
// switch (without fade) to a new BattleMusicInstance if one is already playing
private fun SoundManager.switchMusic(sound: SoundEvent, volume: Float, pitch: Float) {
this.stop(music)
music = BattleMusicInstance(sound, volume, pitch)
this.play(music)
}
// fade out and end current BattleMusicInstance
private fun SoundManager.endMusic() {
(this as SoundManagerDuck).toggleCategories(*interferences.toTypedArray())
music?.setFade()
music = null
}
}
class BattleMusicInstance(sound: SoundEvent, volume: Float, pitch: Float) :
PositionedSoundInstance(sound, SoundCategory.MUSIC, volume, pitch, SoundInstance.createRandom(), BlockPos.ORIGIN), TickableSoundInstance {
private var fade: Boolean = false
private var done: Boolean = false
private val tracker: MusicTrackerAccessor
private var tickCount = 0
private var fadeCount = 0
private val fadeTime = 60.0
private var initVolume = 1.0
init {
this.relative = true
this.repeat = true
this.attenuationType = SoundInstance.AttenuationType.NONE
this.tracker = MinecraftClient.getInstance().musicTracker as MusicTrackerAccessor
this.initVolume = volume.toDouble()
}
override fun isDone(): Boolean {
return this.done
}
fun setFade() {
this.fade = true
this.repeat = false
}
override fun tick() {
++tickCount
if (fade) {
++fadeCount
this.volume = MathHelper.lerp(fadeCount/fadeTime, initVolume, 0.0).toFloat()
if (volume <= 0) this.done = true
}
if (tickCount % 20 == 0) tracker.setTimeUntilNextSong(tracker.timeUntilNextSong() + 20)
}
}
@@ -9,7 +9,6 @@
package com.cobblemon.mod.common.client.net.effect
import com.cobblemon.mod.common.api.net.ClientNetworkPacketHandler
import com.cobblemon.mod.common.client.particle.BedrockParticleEffectRepository
import com.cobblemon.mod.common.client.particle.ParticleStorm
import com.cobblemon.mod.common.client.render.MatrixWrapper
import com.cobblemon.mod.common.net.messages.client.effect.SpawnSnowstormParticlePacket
@@ -24,11 +23,10 @@ object SpawnSnowstormParticleHandler : ClientNetworkPacketHandler<SpawnSnowstorm
val wrapper = MatrixWrapper()
val matrix = MatrixStack()
matrix.translate(packet.position.x, packet.position.y, packet.position.z)
// matrix.multiply(POSITIVE_Y.rotationDegrees(packet.yawDegrees))
// matrix.multiply(NEGATIVE_X.rotationDegrees(packet.pitchDegrees))
matrix.multiply(POSITIVE_Y.rotationDegrees(packet.yawDegrees))
matrix.multiply(NEGATIVE_X.rotationDegrees(packet.pitchDegrees))
wrapper.updateMatrix(matrix.peek().positionMatrix)
val world = MinecraftClient.getInstance().world ?: return
val effect = BedrockParticleEffectRepository.getEffect(packet.effectId) ?: return
ParticleStorm(effect, wrapper, world).spawn()
ParticleStorm(packet.effect, wrapper, world).spawn()
}
}
@@ -69,7 +69,7 @@ class PokemonOnShoulderRenderer<T : PlayerEntity>(renderLayerParent: FeatureRend
matrixStack.push()
val uuid = this.extractUuid(compoundTag)
val cache = this.playerCache.getOrPut(livingEntity.uuid) { ShoulderCache() }
var shoulderData: ShoulderData? = null
val shoulderData: ShoulderData
if (pLeftShoulder && cache.lastKnownLeft?.uuid != uuid) {
shoulderData = this.extractData(compoundTag, uuid)
cache.lastKnownLeft = shoulderData
@@ -78,9 +78,8 @@ class PokemonOnShoulderRenderer<T : PlayerEntity>(renderLayerParent: FeatureRend
shoulderData = this.extractData(compoundTag, uuid)
cache.lastKnownRight = shoulderData
}
if (shoulderData == null){
// Could be null
else {
// should never be null but might as well be safe
shoulderData = (if (pLeftShoulder) cache.lastKnownLeft else cache.lastKnownRight) ?: return
}
val scale = shoulderData.form.baseScale * shoulderData.scaleModifier
@@ -137,15 +136,13 @@ class PokemonOnShoulderRenderer<T : PlayerEntity>(renderLayerParent: FeatureRend
return shoulderNbt.getUuid(DataKeys.SHOULDER_UUID)
}
private fun extractData(shoulderNbt: NbtCompound, pokemonUUID: UUID): ShoulderData? {
private fun extractData(shoulderNbt: NbtCompound, pokemonUUID: UUID): ShoulderData {
// To not crash with existing ones, this will still have the aspect issue
if (!shoulderNbt.contains(DataKeys.SHOULDER_SPECIES)) {
val pokemon = Pokemon().apply { isClient = true }.loadFromNBT(shoulderNbt.getCompound(DataKeys.POKEMON))
return ShoulderData(pokemonUUID, pokemon.species, pokemon.form, pokemon.aspects, pokemon.scaleModifier)
}
val species = PokemonSpecies.getByIdentifier(Identifier(shoulderNbt.getString(DataKeys.SHOULDER_SPECIES)))
?: return null
val species = PokemonSpecies.getByIdentifier(Identifier(shoulderNbt.getString(DataKeys.SHOULDER_SPECIES)))!!
val formName = shoulderNbt.getString(DataKeys.SHOULDER_FORM)
val form = species.forms.firstOrNull { it.name == formName } ?: species.standardForm
val aspects = shoulderNbt.getList(DataKeys.SHOULDER_ASPECTS, NbtElement.STRING_TYPE.toInt()).map { it.asString() }.toSet()
@@ -97,8 +97,6 @@ abstract class PokemonPoseableModel : PoseableEntityModel<PokemonEntity>() {
override fun setupEntityTypeContext(entity: PokemonEntity?) {
entity?.let {
context.put(RenderContext.SCALE, it.pokemon.form.baseScale)
context.put(RenderContext.SPECIES, it.pokemon.species.resourceIdentifier)
context.put(RenderContext.ASPECTS, it.pokemon.aspects)
PokemonModelRepository.getTexture(it.pokemon.species.resourceIdentifier, it.pokemon.aspects, 0f).let { texture -> context.put(RenderContext.TEXTURE, texture) }
}
}
@@ -23,14 +23,14 @@ class GolemModel(root: ModelPart) : PokemonPoseableModel(), HeadedFrame, BipedFr
override val rootPart = root.registerChildWithAllChildren("golem")
override val head = getPart("head")
override val leftLeg = getPart("left_upper_leg")
override val rightLeg = getPart("right_upper_leg")
override val leftLeg = getPart("leg_left")
override val rightLeg = getPart("leg_right")
override val portraitScale = 1.7F
override val portraitTranslation = Vec3d(-0.6, -0.25, 0.0)
override val portraitScale = 2.0F
override val portraitTranslation = Vec3d(-0.55, -0.55, 0.0)
override val profileScale = 0.75F
override val profileTranslation = Vec3d(0.0, 0.55, 0.0)
override val profileScale = 0.88F
override val profileTranslation = Vec3d(0.0, 0.42, 0.0)
lateinit var standing: PokemonPose
lateinit var walk: PokemonPose
@@ -43,7 +43,7 @@ class GolemModel(root: ModelPart) : PokemonPoseableModel(), HeadedFrame, BipedFr
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("golem", "test")
bedrock("golem", "ground_idle")
)
)
@@ -54,7 +54,7 @@ class GolemModel(root: ModelPart) : PokemonPoseableModel(), HeadedFrame, BipedFr
idleAnimations = arrayOf(
BipedWalkAnimation(this, periodMultiplier = 1.2F, amplitudeMultiplier = 0.9f),
singleBoneLook(),
bedrock("golem", "test")
bedrock("golem", "ground_idle")
//bedrock("golem", "ground_walk")
)
)
@@ -1,59 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen4
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPose
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPoseableModel
import com.cobblemon.mod.common.entity.PoseType
import net.minecraft.client.model.ModelPart
import net.minecraft.util.math.Vec3d
class DrifblimModel (root: ModelPart) : PokemonPoseableModel() {
override val rootPart = root.registerChildWithAllChildren("drifblim")
override val portraitScale = 0.9F
override val portraitTranslation = Vec3d(-0.35, 1.8, 0.0)
override val profileScale = 0.4F
override val profileTranslation = Vec3d(0.0, 1.1, 0.0)
lateinit var standing: PokemonPose
lateinit var walk: PokemonPose
lateinit var sleep: PokemonPose
override fun registerPoses() {
val blink = quirk(name = "blink") { bedrockStateful("drifblim", "blink").setPreventsIdle(false) }
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
bedrock("drifblim", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
quirks = arrayOf(blink),
transformTicks = 10,
idleAnimations = arrayOf(
bedrock("drifblim", "ground_idle")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PoseableEntityState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("drifblim", "faint") else null
}
@@ -1,59 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen4
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPose
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPoseableModel
import com.cobblemon.mod.common.entity.PoseType
import net.minecraft.client.model.ModelPart
import net.minecraft.util.math.Vec3d
class DrifloonModel (root: ModelPart) : PokemonPoseableModel() {
override val rootPart = root.registerChildWithAllChildren("drifloon")
override val portraitScale = 1.5F
override val portraitTranslation = Vec3d(-0.1, 1.2, 0.0)
override val profileScale = 0.5F
override val profileTranslation = Vec3d(0.0, 0.9, 0.0)
lateinit var standing: PokemonPose
lateinit var walk: PokemonPose
lateinit var sleep: PokemonPose
override fun registerPoses() {
val blink = quirk(name = "blink") { bedrockStateful("drifloon", "blink").setPreventsIdle(false) }
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
bedrock("drifloon", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
quirks = arrayOf(blink),
transformTicks = 10,
idleAnimations = arrayOf(
bedrock("drifloon", "ground_idle")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PoseableEntityState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("drifloon", "faint") else null
}
@@ -589,8 +589,6 @@ object PokemonModelRepository : VaryingModelRepository<PokemonEntity, PokemonPos
inbuilt("litwick", ::LitwickModel)
inbuilt("lampent", ::LampentModel)
inbuilt("chandelure", ::ChandelureModel)
inbuilt("drifloon", ::DrifloonModel)
inbuilt("drifblim", ::DrifblimModel)
}
override fun loadJsonPoser(json: String): (Bone) -> PokemonPoseableModel {
@@ -105,32 +105,22 @@ class RenderContext {
/**
* Key to access the currently rendered entity.
*/
val ENTITY: Key<Entity> = key("entity".asResource())
val ENTITY: Key<Entity> = key("entity".asResource(), Entity::class.java)
/**
* Key to access the identifier of the texture being rendered.
*/
val TEXTURE: Key<Identifier> = key("texture".asResource())
val TEXTURE: Key<Identifier> = key("texture".asResource(), Identifier::class.java)
/**
* Key to access the base scaling factor of the current species.
*/
val SCALE: Key<Float> = key("scale".asResource())
/**
* Key to access the identifier of the current species.
*/
val SPECIES: Key<Identifier> = key("species".asResource())
/**
* Key to access the aspects of the current entity.
*/
val ASPECTS: Key<Set<String>> = key("species".asResource())
val SCALE: Key<Float> = key("scale".asResource(), Float::class.java)
/**
* Key to access the rendering state, indicating the active rendering mode.
*/
val RENDER_STATE: Key<RenderState> = key("state".asResource())
val RENDER_STATE: Key<RenderState> = key("state".asResource(), RenderState::class.java)
/**
* Creates a new Key instance with the provided identifier and TypeToken.
@@ -152,7 +142,7 @@ class RenderContext {
*
* @since 1.4.0
*/
inline fun <reified T : Any> key(id: Identifier): Key<T> = key(id, TypeToken.get(T::class.java))
fun <T : Any> key(id: Identifier, clazz: Class<T>): Key<T> = key(id, TypeToken.get(clazz))
}
}
@@ -164,6 +164,7 @@ class PokemonRenderer(
val beamSourcePosition = if (beamTarget is EmptyPokeBallEntity) {
(beamTarget.delegate as PokeBallPoseableState).locatorStates["beam"]?.getOrigin() ?: beamTarget.pos
} else {
beamTarget as PlayerEntity
if (beamTarget.uuid == MinecraftClient.getInstance().player?.uuid) {
val lookVec = beamTarget.rotationVector.rotateY(PI / 2).multiply(1.0, 0.0, 1.0).normalize()
beamTarget.getCameraPosVec(partialTicks).subtract(0.0, 0.4, 0.0).subtract(lookVec.multiply(0.3))
@@ -1,60 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.sound.battle
import com.cobblemon.mod.common.util.pauseSounds
import com.cobblemon.mod.common.util.resumeSounds
import net.minecraft.client.MinecraftClient
import net.minecraft.client.sound.SoundInstance
import net.minecraft.client.sound.SoundManager
import net.minecraft.sound.SoundCategory
import net.minecraft.sound.SoundEvents
/**
* The controller for playing, switching, and stopping [BattleMusicInstance]s.
*
* @author Segfault Guy
* @since October 31st, 2023
*/
object BattleMusicController {
/** The last [BattleMusicInstance] played. */
var music = BattleMusicInstance(SoundEvents.INTENTIONALLY_EMPTY, 0.0F, 0.0F)
private set
/**
* The [SoundCategory]s that are filtered while the [SoundManager] is playing a [BattleMusicInstance].
*
* Applicable [SoundInstance]s are blocked while a [BattleMusicInstance] is active, or paused if played before.
*/
val filteredCategories = listOf(SoundCategory.AMBIENT, SoundCategory.MUSIC, SoundCategory.RECORDS)
private val manager = MinecraftClient.getInstance().soundManager
/** Start a new [BattleMusicInstance] and pause all [filteredCategories] sounds currently playing. */
fun initializeMusic(newMusic: BattleMusicInstance) {
music = newMusic
manager.play(music)
if (manager.isPlaying(music)) {
filteredCategories.forEach { manager.pauseSounds(null, it) }
manager.resumeSounds(music.id, SoundCategory.MUSIC) // lazy :)
}
}
/** Switch to a new [BattleMusicInstance] if one is already playing. */
fun switchMusic(newMusic: BattleMusicInstance) {
manager.stop(music)
music = newMusic
manager.play(music)
}
/** Fade out and end the current [BattleMusicInstance]. */
fun endMusic() = music.setFade()
}
@@ -1,66 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.sound.battle
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
import com.cobblemon.mod.common.util.resumeSounds
import net.minecraft.client.MinecraftClient
import net.minecraft.client.sound.*
import net.minecraft.sound.SoundCategory
import net.minecraft.sound.SoundEvent
import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.MathHelper
/**
* A [SoundInstance] for [PokemonBattle] music.
*
* While an instance is being played, the [MusicTracker] will be frozen and the [SoundManager] will not play
* [SoundCategory]s belonging to [BattleMusicController.filteredCategories].
*
* @author Segfault Guy
* @since April 22nd, 2023
*/
class BattleMusicInstance(sound: SoundEvent, volume: Float = 1.0F, pitch: Float = 1.0F) :
PositionedSoundInstance(sound, SoundCategory.MUSIC, volume, pitch, SoundInstance.createRandom(), BlockPos.ORIGIN), TickableSoundInstance {
private val soundManager = MinecraftClient.getInstance().soundManager;
private var fade: Boolean = false
private var done: Boolean = false
private var tickCount = 0
private var fadeCount = 0
private val fadeTime = 60.0
private var initVolume = 1.0
init {
this.relative = true
this.repeat = true
this.attenuationType = SoundInstance.AttenuationType.NONE
this.initVolume = volume.toDouble()
}
override fun isDone(): Boolean {
if (this.done) BattleMusicController.filteredCategories.forEach { soundManager.resumeSounds(null, it) }
return this.done
}
/** Flags to fade and end this instance. */
fun setFade() {
this.fade = true
this.repeat = false
}
override fun tick() {
++tickCount
if (fade) {
++fadeCount
this.volume = MathHelper.lerp(fadeCount/fadeTime, initVolume, 0.0).toFloat()
if (volume <= 0) this.done = true
}
}
}
@@ -1,68 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.command
import com.cobblemon.mod.common.CobblemonNetwork.sendPacket
import com.cobblemon.mod.common.api.permission.CobblemonPermissions
import com.cobblemon.mod.common.net.messages.client.effect.SpawnSnowstormParticlePacket
import com.cobblemon.mod.common.util.alias
import com.cobblemon.mod.common.util.distanceTo
import com.cobblemon.mod.common.util.permission
import com.cobblemon.mod.common.util.toBlockPos
import com.mojang.brigadier.Command
import com.mojang.brigadier.CommandDispatcher
import net.minecraft.command.argument.DimensionArgumentType
import net.minecraft.command.argument.EntityArgumentType
import net.minecraft.command.argument.IdentifierArgumentType
import net.minecraft.command.argument.Vec3ArgumentType
import net.minecraft.server.command.CommandManager
import net.minecraft.server.command.ServerCommandSource
import net.minecraft.server.world.ServerWorld
import net.minecraft.util.Identifier
import net.minecraft.util.math.Vec3d
object BedrockParticleCommand {
fun register(dispatcher : CommandDispatcher<ServerCommandSource>) {
val command = dispatcher.register(CommandManager.literal("bedrockparticle")
.permission(CobblemonPermissions.BEDROCK_PARTICLE)
.then(
CommandManager.argument("effect", IdentifierArgumentType.identifier())
.then(
CommandManager.argument("target", EntityArgumentType.entities())
.executes {
val effectId = IdentifierArgumentType.getIdentifier(it, "effect")
val entities = EntityArgumentType.getEntities(it, "target")
return@executes entities.sumOf { entity -> execute(it.source, effectId, entity.world as ServerWorld, entity.pos) }
}
)
.then(
CommandManager.argument("world", DimensionArgumentType.dimension())
.then(
CommandManager.argument("pos", Vec3ArgumentType.vec3())
.executes {
val effectId = IdentifierArgumentType.getIdentifier(it, "effect")
val world = DimensionArgumentType.getDimensionArgument(it, "world")
val pos = Vec3ArgumentType.getVec3(it, "pos")
return@executes execute(it.source, effectId, world as ServerWorld, pos)
}
)
)
)
)
dispatcher.register(command.alias("bedrockparticle"))
}
private fun execute(source: ServerCommandSource, effectId: Identifier, world: ServerWorld, target: Vec3d): Int {
val pos = target.toBlockPos()
val nearbyPlayers = world.getPlayers { it.distanceTo(pos) < 200 }
nearbyPlayers.forEach { player -> player.sendPacket(SpawnSnowstormParticlePacket(effectId, target)) }
return Command.SINGLE_SUCCESS
}
}
@@ -18,10 +18,13 @@ import com.cobblemon.mod.common.battles.BattleSide
import com.cobblemon.mod.common.battles.actor.PlayerBattleActor
import com.cobblemon.mod.common.battles.actor.PokemonBattleActor
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.net.messages.client.effect.SpawnSnowstormParticlePacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeStartedPacket
import com.cobblemon.mod.common.particle.SnowstormParticleReader
import com.cobblemon.mod.common.trade.ActiveTrade
import com.cobblemon.mod.common.trade.DummyTradeParticipant
import com.cobblemon.mod.common.trade.PlayerTradeParticipant
import com.cobblemon.mod.common.util.fromJson
import com.cobblemon.mod.common.util.party
import com.cobblemon.mod.common.util.toPokemon
import com.google.gson.GsonBuilder
@@ -58,6 +61,7 @@ object TestCommand {
this.testClosestBattle(context)
//testTrade(context.source.player!!)
// testParticles(context)
// extractMovesData()
// // Player variables
// val player = context.source.entity as ServerPlayerEntity
@@ -218,6 +222,16 @@ object TestCommand {
}
}
private fun testParticles(context: CommandContext<ServerCommandSource>) {
val file = File("particle.particle.json")
val effect = SnowstormParticleReader.loadEffect(GsonBuilder().create().fromJson<JsonObject>(file.readText()))
val player = context.source.entity as ServerPlayerEntity
val position = player.pos.add(4.0, 1.0, 4.0)
val pkt = SpawnSnowstormParticlePacket(effect, position, 0F, 0F)
player.sendPacket(pkt)
}
// private fun extractMovesData() {
// val ctx = GraalShowdown.context
// ctx.eval("js", """
@@ -67,7 +67,6 @@ import net.minecraft.util.math.MathHelper
import net.minecraft.util.math.MathHelper.PI
import net.minecraft.util.math.Vec3d
import net.minecraft.world.World
import java.util.*
class EmptyPokeBallEntity : ThrownItemEntity, Poseable, WaterDragModifier {
enum class CaptureState {
@@ -207,7 +206,6 @@ class EmptyPokeBallEntity : ThrownItemEntity, Poseable, WaterDragModifier {
}
battle.captureActions.add(BattleCaptureAction(battle, hitBattlePokemon, this).also { it.attach() })
battle.broadcastChatMessage(
lang(
"capture.attempted_capture",
@@ -8,8 +8,11 @@
package com.cobblemon.mod.common.entity.pokemon
import com.cobblemon.mod.common.*
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonEntities
import com.cobblemon.mod.common.CobblemonNetwork
import com.cobblemon.mod.common.CobblemonNetwork.sendPacket
import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.api.drop.DropTable
import com.cobblemon.mod.common.api.entity.Despawner
import com.cobblemon.mod.common.api.events.CobblemonEvents
@@ -54,9 +57,7 @@ import com.cobblemon.mod.common.pokemon.ai.FormPokemonBehaviour
import com.cobblemon.mod.common.pokemon.evolution.variants.ItemInteractionEvolution
import com.cobblemon.mod.common.util.*
import com.cobblemon.mod.common.world.gamerules.CobblemonGameRules
import net.minecraft.block.Blocks
import net.minecraft.entity.*
import net.minecraft.block.PlantBlock
import net.minecraft.entity.ai.control.MoveControl
import net.minecraft.entity.ai.goal.EatGrassGoal
import net.minecraft.entity.ai.goal.Goal
@@ -69,25 +70,20 @@ import net.minecraft.entity.damage.DamageTypes
import net.minecraft.entity.data.DataTracker
import net.minecraft.entity.data.TrackedData
import net.minecraft.entity.data.TrackedDataHandlerRegistry
import net.minecraft.entity.effect.StatusEffect
import net.minecraft.entity.passive.AnimalEntity
import net.minecraft.entity.passive.PassiveEntity
import net.minecraft.entity.passive.TameableShoulderEntity
import net.minecraft.entity.player.PlayerEntity
import net.minecraft.fluid.FluidState
import net.minecraft.item.Item
import net.minecraft.item.ItemStack
import net.minecraft.item.ItemUsage
import net.minecraft.item.Items
import net.minecraft.item.MinecartItem
import net.minecraft.item.SuspiciousStewItem
import net.minecraft.nbt.NbtCompound
import net.minecraft.nbt.NbtHelper
import net.minecraft.nbt.NbtString
import net.minecraft.network.listener.ClientPlayPacketListener
import net.minecraft.network.packet.Packet
import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket
import net.minecraft.registry.Registries
import net.minecraft.registry.RegistryKeys
import net.minecraft.registry.tag.FluidTags
import net.minecraft.server.network.ServerPlayerEntity
@@ -150,8 +146,6 @@ class PokemonEntity(
var tethering: PokemonPastureBlockEntity.Tethering? = null
var queuedToDespawn = false
/**
* The amount of steps this entity has traveled.
*/
@@ -173,7 +167,6 @@ class PokemonEntity(
internal val labelLevel = addEntityProperty(LABEL_LEVEL, pokemon.level)
val hideLabel = addEntityProperty(HIDE_LABEL, false)
val unbattleable = addEntityProperty(UNBATTLEABLE, false)
val countsTowardsSpawnCap = addEntityProperty(COUNTS_TOWARDS_SPAWN_CAP, true)
/**
* 0 is do nothing,
@@ -239,7 +232,6 @@ class PokemonEntity(
val LABEL_LEVEL = DataTracker.registerData(PokemonEntity::class.java, TrackedDataHandlerRegistry.INTEGER)
val HIDE_LABEL = DataTracker.registerData(PokemonEntity::class.java, TrackedDataHandlerRegistry.BOOLEAN)
val UNBATTLEABLE = DataTracker.registerData(PokemonEntity::class.java, TrackedDataHandlerRegistry.BOOLEAN)
val COUNTS_TOWARDS_SPAWN_CAP = DataTracker.registerData(PokemonEntity::class.java, TrackedDataHandlerRegistry.BOOLEAN)
const val BATTLE_LOCK = "battle"
@@ -274,9 +266,6 @@ class PokemonEntity(
super.tick()
// We will be handling idle logic ourselves thank you
this.setDespawnCounter(0)
if (queuedToDespawn) {
return remove(RemovalReason.DISCARDED)
}
entityProperties.forEach { it.checkForUpdate() }
delegate.tick(this)
ticksLived++
@@ -396,9 +385,6 @@ class PokemonEntity(
if (unbattleable.get()) {
nbt.putBoolean(DataKeys.POKEMON_UNBATTLEABLE, true)
}
if(!countsTowardsSpawnCap.get()) {
nbt.putBoolean(DataKeys.POKEMON_COUNTS_TOWARDS_SPAWN_CAP, false)
}
CobblemonEvents.POKEMON_ENTITY_SAVE.post(PokemonEntitySaveEvent(this, nbt))
@@ -461,9 +447,6 @@ class PokemonEntity(
if (nbt.contains(DataKeys.POKEMON_UNBATTLEABLE)) {
unbattleable.set(nbt.getBoolean(DataKeys.POKEMON_UNBATTLEABLE))
}
if(nbt.contains(DataKeys.POKEMON_COUNTS_TOWARDS_SPAWN_CAP)) {
countsTowardsSpawnCap.set(nbt.getBoolean(DataKeys.POKEMON_COUNTS_TOWARDS_SPAWN_CAP))
}
CobblemonEvents.POKEMON_ENTITY_LOAD.postThen(
event = PokemonEntityLoadEvent(this, nbt),
@@ -574,89 +557,14 @@ class PokemonEntity(
return ActionResult.success(world.isClient)
}
} else if (itemStack.isOf(Items.BOWL)) {
if (pokemon.aspects.any() {it.contains("mooshtank")}) {
if (pokemon.getFeature<FlagSpeciesFeature>(DataKeys.IS_MOOSHTANK) != null) {
player.playSound(SoundEvents.ENTITY_MOOSHROOM_MILK, 1.0f, 1.0f)
// if the Mooshtank ate a Flower beforehand
if (pokemon.lastFlowerFed != ItemStack.EMPTY && pokemon.aspects.any() {it.contains("mooshtank-brown")}) {
var effect: StatusEffect? = null
var duration = 0
if (pokemon.lastFlowerFed.isOf(Items.ALLIUM)) {
effect = StatusEffect.byRawId(12) // Fire Resistance
duration = 80 // 4 seconds
} else if (pokemon.lastFlowerFed.isOf(Items.AZURE_BLUET)) {
effect = StatusEffect.byRawId(15) // Blindness
duration = 160 // 8 seconds
} else if (pokemon.lastFlowerFed.isOf(Items.BLUE_ORCHID) || pokemon.lastFlowerFed.isOf(Items.DANDELION)) {
effect = StatusEffect.byRawId(23) // Saturation
duration = 7 // .35 seconds
} else if (pokemon.lastFlowerFed.isOf(Items.CORNFLOWER)) {
effect = StatusEffect.byRawId(8) // Jump Boost
duration = 120 // 6 seconds
} else if (pokemon.lastFlowerFed.isOf(Items.LILY_OF_THE_VALLEY)) {
effect = StatusEffect.byRawId(19) // Poison
duration = 240 // 12 seconds
} else if (pokemon.lastFlowerFed.isOf(Items.OXEYE_DAISY)) {
effect = StatusEffect.byRawId(10) // Regeneration
duration = 160 // 8 seconds
} else if (pokemon.lastFlowerFed.isOf(Items.POPPY) || pokemon.lastFlowerFed.isOf(Items.TORCHFLOWER)) {
effect = StatusEffect.byRawId(16) // Night Vision
duration = 100 // 5 seconds
} else if (pokemon.lastFlowerFed.isOf(Items.PINK_TULIP) || pokemon.lastFlowerFed.isOf(Items.RED_TULIP) || pokemon.lastFlowerFed.isOf(Items.WHITE_TULIP) || pokemon.lastFlowerFed.isOf(Items.ORANGE_TULIP)) {
effect = StatusEffect.byRawId(18) // Weakness
duration = 180 // 9 seconds
} else if (pokemon.lastFlowerFed.isOf(Items.WITHER_ROSE)) {
effect = StatusEffect.byRawId(20) // Wither
duration = 160 // 8 seconds
} else if (pokemon.lastFlowerFed.isOf(CobblemonItems.PEP_UP_FLOWER)) {
effect = StatusEffect.byRawId(25) // Levitation
duration = 160 // 8 seconds
}
// modify the suspicious stew with the effect
val susStewStack = Items.SUSPICIOUS_STEW.defaultStack
SuspiciousStewItem.addEffectToStew(susStewStack, effect, duration)
val susStewEffect = ItemUsage.exchangeStack(itemStack, player, susStewStack)
//give player modified Suspicious Stew
player.setStackInHand(hand, susStewEffect)
// reset the flower fed state
pokemon.lastFlowerFed = ItemStack.EMPTY
return ActionResult.success(world.isClient)
}
else {
val mushroomStew = ItemUsage.exchangeStack(itemStack, player, Items.MUSHROOM_STEW.defaultStack)
player.setStackInHand(hand, mushroomStew)
return ActionResult.success(world.isClient)
}
}
}
// Flowers used on brown MooshTanks
else if (itemStack.isOf(Items.ALLIUM) ||
itemStack.isOf(Items.AZURE_BLUET) ||
itemStack.isOf(Items.BLUE_ORCHID) ||
itemStack.isOf(Items.DANDELION) ||
itemStack.isOf(Items.CORNFLOWER) ||
itemStack.isOf(Items.LILY_OF_THE_VALLEY) ||
itemStack.isOf(Items.OXEYE_DAISY) ||
itemStack.isOf(Items.POPPY) ||
itemStack.isOf(Items.TORCHFLOWER) ||
itemStack.isOf(Items.PINK_TULIP) ||
itemStack.isOf(Items.RED_TULIP) ||
itemStack.isOf(Items.WHITE_TULIP) ||
itemStack.isOf(Items.ORANGE_TULIP) ||
itemStack.isOf(Items.WITHER_ROSE) ||
itemStack.isOf(CobblemonItems.PEP_UP_FLOWER)) {
if (pokemon.aspects.any() {it.contains("mooshtank")}) {
player.playSound(SoundEvents.ENTITY_MOOSHROOM_EAT, 1.0f, 1.0f)
pokemon.lastFlowerFed = itemStack
val mushroomStew = ItemUsage.exchangeStack(itemStack, player, Items.MUSHROOM_STEW.defaultStack)
player.setStackInHand(hand, mushroomStew)
return ActionResult.success(world.isClient)
}
}
if (hand == Hand.MAIN_HAND && player is ServerPlayerEntity && pokemon.getOwnerPlayer() == player) {
if (player.isSneaking) {
InteractPokemonUIPacket(this.getUuid(), isReadyToSitOnPlayer && pokemon in player.party()).sendToPlayer(player)
@@ -904,7 +812,6 @@ class PokemonEntity(
}
fun cry() {
if(this.isSilent) return
val pkt = PokemonCryPacket(id)
world.getEntitiesByClass(ServerPlayerEntity::class.java, Box.of(pos, 64.0, 64.0, 64.0), { true }).forEach {
it.sendPacket(pkt)
@@ -1091,23 +998,21 @@ class PokemonEntity(
return
}
if (this.ownerUuid == player.uuid && tethering == null) {
queuedToDespawn = true
return
if(this.ownerUuid == player.uuid && tethering == null) {
if (player.isDisconnected) {
this.remove(RemovalReason.DISCARDED)
return
}
val chunkPos = ChunkPos(BlockPos(x.toInt(), y.toInt(), z.toInt()))
(world as ServerWorld).chunkManager
.addTicket(ChunkTicketType.POST_TELEPORT, chunkPos, 0, id)
this.goalSelector.tick()
if(distanceTo(player.blockPos) > 100) pokemon.recall()
}
//
// val chunkPos = ChunkPos(BlockPos(x.toInt(), y.toInt(), z.toInt()))
// (world as ServerWorld).chunkManager
// .addTicket(ChunkTicketType.POST_TELEPORT, chunkPos, 0, id)
// this.goalSelector.tick()
// if(distanceTo(player.blockPos) > 100) pokemon.recall()
// }
}
override fun canBeLeashedBy(player: PlayerEntity): Boolean {
return this.ownerUuid == null || this.ownerUuid == player.uuid
}
/** Retrieves the battle theme associated with this Pokemon's Species/Form, or the default PVW theme if not found. */
fun getBattleTheme() = Registries.SOUND_EVENT.get(this.form.battleTheme) ?: CobblemonSounds.PVW_BATTLE
}
@@ -301,38 +301,65 @@ object CobblemonItemGroups {
}
private fun heldItemEntries(displayContext: DisplayContext, entries: Entries) {
entries.add(CobblemonItems.ABILITY_SHIELD)
entries.add(CobblemonItems.ABSORB_BULB)
entries.add(CobblemonItems.AIR_BALLOON)
entries.add(CobblemonItems.AMULET_COIN)
entries.add(CobblemonItems.ASSAULT_VEST)
entries.add(CobblemonItems.BIG_ROOT)
entries.add(CobblemonItems.BINDING_BAND)
entries.add(CobblemonItems.BLACK_BELT)
entries.add(CobblemonItems.BLACK_GLASSES)
entries.add(CobblemonItems.BLACK_SLUDGE)
entries.add(CobblemonItems.BLUNDER_POLICY)
entries.add(CobblemonItems.BRIGHT_POWDER)
entries.add(CobblemonItems.CELL_BATTERY)
entries.add(CobblemonItems.CHARCOAL)
entries.add(CobblemonItems.CHOICE_BAND)
entries.add(CobblemonItems.CHOICE_SCARF)
entries.add(CobblemonItems.CHOICE_SPECS)
entries.add(CobblemonItems.CLEANSE_TAG)
entries.add(CobblemonItems.CLEAR_AMULET)
entries.add(CobblemonItems.COVERT_CLOAK)
entries.add(CobblemonItems.DAMP_ROCK)
entries.add(CobblemonItems.DEEP_SEA_SCALE)
entries.add(CobblemonItems.DEEP_SEA_TOOTH)
entries.add(CobblemonItems.DESTINY_KNOT)
entries.add(CobblemonItems.DRAGON_FANG)
entries.add(CobblemonItems.EJECT_BUTTON)
entries.add(CobblemonItems.EJECT_PACK)
entries.add(CobblemonItems.ELECTRIC_SEED)
entries.add(CobblemonItems.EVERSTONE)
entries.add(CobblemonItems.EXPERT_BELT)
entries.add(CobblemonItems.EXP_SHARE)
entries.add(CobblemonItems.FAIRY_FEATHER)
entries.add(CobblemonItems.FLAME_ORB)
entries.add(CobblemonItems.FLOAT_STONE)
entries.add(CobblemonItems.FOCUS_BAND)
entries.add(CobblemonItems.FOCUS_SASH)
entries.add(CobblemonItems.GRASSY_SEED)
entries.add(CobblemonItems.GRIP_CLAW)
entries.add(CobblemonItems.HARD_STONE)
entries.add(CobblemonItems.HEAT_ROCK)
entries.add(CobblemonItems.HEAVY_DUTY_BOOTS)
entries.add(CobblemonItems.ICY_ROCK)
entries.add(CobblemonItems.IRON_BALL)
entries.add(CobblemonItems.KINGS_ROCK)
entries.add(CobblemonItems.LAGGING_TAIL)
entries.add(CobblemonItems.LEFTOVERS)
entries.add(CobblemonItems.LIFE_ORB)
entries.add(CobblemonItems.LIGHT_BALL)
entries.add(CobblemonItems.LIGHT_CLAY)
entries.add(CobblemonItems.LOADED_DICE)
entries.add(CobblemonItems.LUCKY_EGG)
entries.add(CobblemonItems.LUMINOUS_MOSS)
entries.add(CobblemonItems.MAGNET)
entries.add(CobblemonItems.MENTAL_HERB)
entries.add(CobblemonItems.METAL_POWDER)
entries.add(CobblemonItems.METRONOME)
entries.add(CobblemonItems.MIRACLE_SEED)
entries.add(CobblemonItems.MIRROR_HERB)
entries.add(CobblemonItems.MISTY_SEED)
entries.add(CobblemonItems.MUSCLE_BAND)
entries.add(CobblemonItems.MYSTIC_WATER)
entries.add(CobblemonItems.NEVER_MELT_ICE)
@@ -344,22 +371,40 @@ object CobblemonItemGroups {
entries.add(CobblemonItems.POWER_HERB)
entries.add(CobblemonItems.POWER_LENS)
entries.add(CobblemonItems.POWER_WEIGHT)
entries.add(CobblemonItems.PROTECTIVE_PADS)
entries.add(CobblemonItems.PSYCHIC_SEED)
entries.add(CobblemonItems.PUNCHING_GLOVE)
entries.add(CobblemonItems.QUICK_CLAW)
entries.add(CobblemonItems.QUICK_POWDER)
entries.add(CobblemonItems.RAZOR_CLAW)
entries.add(CobblemonItems.RAZOR_FANG)
entries.add(CobblemonItems.RED_CARD)
entries.add(CobblemonItems.RING_TARGET)
entries.add(CobblemonItems.ROCKY_HELMET)
entries.add(CobblemonItems.ROOM_SERVICE)
entries.add(CobblemonItems.SAFETY_GOGGLES)
entries.add(CobblemonItems.SCOPE_LENS)
entries.add(CobblemonItems.SHARP_BEAK)
entries.add(CobblemonItems.SHED_SHELL)
entries.add(CobblemonItems.SHELL_BELL)
entries.add(CobblemonItems.SILK_SCARF)
entries.add(CobblemonItems.SILVER_POWDER)
entries.add(CobblemonItems.SMOKE_BALL)
entries.add(CobblemonItems.SMOOTH_ROCK)
entries.add(CobblemonItems.SOFT_SAND)
entries.add(CobblemonItems.SOOTHE_BELL)
entries.add(CobblemonItems.SPELL_TAG)
entries.add(CobblemonItems.STICKY_BARB)
entries.add(CobblemonItems.TERRAIN_EXTRUDER)
entries.add(CobblemonItems.THROAT_SPRAY)
entries.add(CobblemonItems.TOXIC_ORB)
entries.add(CobblemonItems.TWISTED_SPOON)
entries.add(CobblemonItems.UTILITY_UMBRELLA)
entries.add(CobblemonItems.WEAKNESS_POLICY)
entries.add(CobblemonItems.WHITE_HERB)
entries.add(CobblemonItems.WIDE_LENS)
entries.add(CobblemonItems.WISE_GLASSES)
entries.add(CobblemonItems.ZOOM_LENS)
}
private fun pokeballentries(displayContext: DisplayContext, entries: Entries) {
@@ -8,6 +8,8 @@
package com.cobblemon.mod.common.net.messages.client.battle
import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
import com.cobblemon.mod.common.api.net.NetworkPacket
import com.cobblemon.mod.common.util.asIdentifierDefaultingNamespace
import com.cobblemon.mod.common.util.cobblemonResource
@@ -24,7 +26,7 @@ import net.minecraft.sound.SoundEvent
* @author Segfault Guy
* @since April 20th, 2023
*/
class BattleMusicPacket(var music : SoundEvent? = null, var volume: Float = 1.0f, var pitch: Float = 1.0f) : NetworkPacket<BattleMusicPacket> {
class BattleMusicPacket : NetworkPacket<BattleMusicPacket> {
companion object {
val ID = cobblemonResource("battle_music")
fun decode(buffer: PacketByteBuf) = BattleMusicPacket(
@@ -36,6 +38,30 @@ class BattleMusicPacket(var music : SoundEvent? = null, var volume: Float = 1.0f
override val id = ID
var music : SoundEvent? = null
var volume = 1.0f
var pitch = 1.0f
constructor(music: SoundEvent?, volume: Float = 1.0f, pitch: Float = 1.0f) {
this.music = music
this.volume = volume
this.pitch = pitch
}
constructor(battle: PokemonBattle, volume: Float = 1.0f, pitch: Float = 1.0f) {
this.music = if (battle.isPvP) {
CobblemonSounds.PVP_BATTLE
}
else if (battle.isPvN) {
CobblemonSounds.PVN_BATTLE
}
else {
CobblemonSounds.PVW_BATTLE
}
this.volume = volume
this.pitch = pitch
}
override fun encode(buffer: PacketByteBuf) {
music?.let { buffer.writeIdentifier(it.id) } ?: buffer.writeIdentifier("".asIdentifierDefaultingNamespace())
buffer.writeFloat(volume)
@@ -12,7 +12,6 @@ import com.cobblemon.mod.common.api.net.NetworkPacket
import com.cobblemon.mod.common.api.snowstorm.BedrockParticleEffect
import com.cobblemon.mod.common.util.cobblemonResource
import net.minecraft.network.PacketByteBuf
import net.minecraft.util.Identifier
import net.minecraft.util.math.Vec3d
/**
@@ -24,23 +23,29 @@ import net.minecraft.util.math.Vec3d
* @since January 21st, 2022
*/
class SpawnSnowstormParticlePacket(
val effectId: Identifier,
val effect: BedrockParticleEffect,
val position: Vec3d,
val yawDegrees: Float,
val pitchDegrees: Float
) : NetworkPacket<SpawnSnowstormParticlePacket> {
override val id = ID
companion object {
val ID = cobblemonResource("spawn_snowstorm_particle")
fun decode(buffer: PacketByteBuf): SpawnSnowstormParticlePacket {
return SpawnSnowstormParticlePacket(
effectId = buffer.readIdentifier(),
position = Vec3d(buffer.readDouble(), buffer.readDouble(), buffer.readDouble())
effect = BedrockParticleEffect().also { it.readFromBuffer(buffer) },
position = Vec3d(buffer.readDouble(), buffer.readDouble(), buffer.readDouble()),
yawDegrees = buffer.readFloat(),
pitchDegrees = buffer.readFloat()
)
}
}
override fun encode(buffer: PacketByteBuf) {
buffer.writeIdentifier(effectId)
effect.writeToBuffer(buffer)
buffer.writeDouble(position.x)
buffer.writeDouble(position.y)
buffer.writeDouble(position.z)
buffer.writeFloat(yawDegrees)
buffer.writeFloat(pitchDegrees)
}
}
@@ -12,10 +12,8 @@ import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonNetwork.sendPacket
import com.cobblemon.mod.common.api.net.ServerNetworkPacketHandler
import com.cobblemon.mod.common.battles.BattleRegistry
import com.cobblemon.mod.common.battles.actor.PlayerBattleActor
import com.cobblemon.mod.common.net.messages.client.battle.BattleInitializePacket
import com.cobblemon.mod.common.net.messages.client.battle.BattleMessagePacket
import com.cobblemon.mod.common.net.messages.client.battle.BattleMusicPacket
import com.cobblemon.mod.common.net.messages.server.battle.SpectateBattlePacket
import net.minecraft.server.MinecraftServer
import net.minecraft.server.network.ServerPlayerEntity
@@ -29,12 +27,10 @@ object SpectateBattleHandler : ServerNetworkPacketHandler<SpectateBattlePacket>
player: ServerPlayerEntity
) {
val battle = BattleRegistry.getBattleByParticipatingPlayerId(packet.targetedEntityId)
if (battle != null && Cobblemon.config.allowSpectating) {
val target = battle.actors.filterIsInstance<PlayerBattleActor>().firstOrNull { it.uuid == packet.targetedEntityId }
battle.spectators.add(player.uuid)
if ((battle != null) and Cobblemon.config.allowSpectating) {
battle!!.spectators.add(player.uuid)
player.sendPacket(BattleInitializePacket(battle, null))
player.sendPacket(BattleMessagePacket(battle.chatLog))
target?.battleTheme?.let { player.sendPacket(BattleMusicPacket(it)) }
}
else {
LOGGER.error("Battle of player id ${packet.targetedEntityId} not found (${player.uuid} tried spectating)")
@@ -35,7 +35,6 @@ import com.cobblemon.mod.common.util.writeSizedInt
import com.google.gson.annotations.SerializedName
import net.minecraft.entity.EntityDimensions
import net.minecraft.network.PacketByteBuf
import net.minecraft.util.Identifier
class FormData(
name: String = "Normal",
@@ -99,9 +98,7 @@ class FormData(
* The [MoveTemplate] of the signature attack of the G-Max form.
* This is always null on any form aside G-Max.
*/
val gigantamaxMove: MoveTemplate? = null,
@SerializedName("battleTheme")
private var _battleTheme: Identifier? = null
val gigantamaxMove: MoveTemplate? = null
) : Decodable, Encodable, ShowdownIdentifiable {
@SerializedName("name")
var name: String = name
@@ -189,9 +186,6 @@ class FormData(
val evolutions: MutableSet<Evolution>
get() = _evolutions ?: mutableSetOf()
val battleTheme: Identifier
get() = _battleTheme ?: species.battleTheme
fun eyeHeight(entity: PokemonEntity): Float {
val multiplier = this.resolveEyeHeight(entity) ?: return this.species.eyeHeight(entity)
return entity.height * multiplier
@@ -71,7 +71,6 @@ import com.mojang.serialization.JsonOps
import net.minecraft.entity.LivingEntity
import net.minecraft.entity.player.PlayerEntity
import net.minecraft.item.ItemStack
import net.minecraft.item.Items
import net.minecraft.nbt.NbtCompound
import net.minecraft.nbt.NbtElement.COMPOUND_TYPE
import net.minecraft.nbt.NbtList
@@ -94,7 +93,6 @@ import kotlin.math.max
import kotlin.math.min
import kotlin.math.roundToInt
import kotlin.random.Random
import kotlin.reflect.jvm.internal.impl.metadata.ProtoBuf.Effect
open class Pokemon : ShowdownIdentifiable {
var uuid = UUID.randomUUID()
@@ -779,7 +777,7 @@ open class Pokemon : ShowdownIdentifiable {
json.addProperty(DataKeys.POKEMON_LAST_SAVED_VERSION, Cobblemon.VERSION)
json.addProperty(DataKeys.POKEMON_UUID, uuid.toString())
json.addProperty(DataKeys.POKEMON_SPECIES_IDENTIFIER, species.resourceIdentifier.toString())
nickname?.let { json.add(DataKeys.POKEMON_NICKNAME, Text.Serializer.toJsonTree(it)) }
nickname?.let { json.addProperty(DataKeys.POKEMON_NICKNAME, Text.Serializer.toJson(it)) }
json.addProperty(DataKeys.POKEMON_FORM_ID, form.formOnlyShowdownId())
json.addProperty(DataKeys.POKEMON_EXPERIENCE, experience)
json.addProperty(DataKeys.POKEMON_LEVEL, level)
@@ -829,15 +827,7 @@ open class Pokemon : ShowdownIdentifiable {
} catch (e: InvalidIdentifierException) {
throw IllegalStateException("Failed to deserialize a species identifier")
}
nickname = if (version == "1.4.0") {
try {
json.get(DataKeys.POKEMON_NICKNAME)?.asString?.takeIf { it.isNotBlank() }?.let { Text.Serializer.fromJson(it) }
} catch (e: UnsupportedOperationException) {
json.get(DataKeys.POKEMON_NICKNAME)?.let { Text.Serializer.fromJson(it) }
}
} else {
json.get(DataKeys.POKEMON_NICKNAME)?.let { Text.Serializer.fromJson(it) }
}
nickname = json.get(DataKeys.POKEMON_NICKNAME)?.asString?.takeIf { it.isNotBlank() }?.let { Text.Serializer.fromJson(it) }
form = species.forms.find { it.formOnlyShowdownId() == json.get(DataKeys.POKEMON_FORM_ID).asString } ?: species.standardForm
level = json.get(DataKeys.POKEMON_LEVEL).asInt
experience = json.get(DataKeys.POKEMON_EXPERIENCE).asInt.takeIf { experienceGroup.getLevel(it) == level } ?: experienceGroup.getExperience(level)
@@ -1052,13 +1042,6 @@ open class Pokemon : ShowdownIdentifiable {
return this
}
// Last flower fed to a Mooshtank
var lastFlowerFed: ItemStack = ItemStack.EMPTY
fun feedFlower(itemStack: ItemStack) {
this.lastFlowerFed = itemStack
}
fun checkGender() {
var reassess = false
if (form.maleRatio !in 0F..1F && gender != Gender.GENDERLESS) {
@@ -1421,4 +1404,4 @@ open class Pokemon : ShowdownIdentifiable {
return Pokemon().loadFromJSON(json)
}
}
}
}
@@ -9,7 +9,6 @@
package com.cobblemon.mod.common.pokemon
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.api.abilities.AbilityPool
import com.cobblemon.mod.common.api.data.ClientDataSynchronizer
import com.cobblemon.mod.common.api.data.ShowdownIdentifiable
@@ -128,8 +127,6 @@ class Species : ClientDataSynchronizer<Species>, ShowdownIdentifiable {
val types: Iterable<ElementalType>
get() = secondaryType?.let { listOf(primaryType, it) } ?: listOf(primaryType)
var battleTheme: Identifier = CobblemonSounds.PVW_BATTLE.id
fun initialize() {
Cobblemon.statProvider.provide(this)
this.forms.forEach { it.initialize(this) }
@@ -193,7 +190,6 @@ class Species : ClientDataSynchronizer<Species>, ShowdownIdentifiable {
this.moves.encode(buffer)
buffer.writeCollection(this.pokedex) { pb, line -> pb.writeString(line) }
buffer.writeCollection(this.forms) { pb, form -> form.encode(pb) }
buffer.writeIdentifier(this.battleTheme)
}
override fun decode(buffer: PacketByteBuf) {
@@ -216,7 +212,6 @@ class Species : ClientDataSynchronizer<Species>, ShowdownIdentifiable {
this.pokedex += buffer.readList { pb -> pb.readString() }
this.forms.clear()
this.forms += buffer.readList{ pb -> FormData().apply { decode(pb) } }.filterNotNull()
this.battleTheme = buffer.readIdentifier()
this.initialize()
}
@@ -237,7 +232,6 @@ class Species : ClientDataSynchronizer<Species>, ShowdownIdentifiable {
|| other.forms != this.forms
// We only sync level up moves atm
|| this.moves.shouldSynchronize(other.moves)
|| other.battleTheme != this.battleTheme
}
/**
@@ -16,7 +16,6 @@ import it.unimi.dsi.fastutil.longs.Long2ObjectMap
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap
import java.util.EnumSet
import net.minecraft.block.AbstractRailBlock
import net.minecraft.block.Blocks
import net.minecraft.block.FenceGateBlock
import net.minecraft.entity.ai.pathing.NavigationType
import net.minecraft.entity.ai.pathing.PathNode
@@ -316,18 +315,20 @@ class OmniPathNodeMaker : PathNodeMaker() {
pos: BlockPos,
type: PathNodeType
): PathNodeType {
val block = world.getBlockState(pos).block
return if (type == PathNodeType.DOOR_WOOD_CLOSED && canOpenDoors && canEnterOpenDoors) {
PathNodeType.WALKABLE_DOOR
}else if (type == PathNodeType.DOOR_OPEN && !canEnterOpenDoors) {
PathNodeType.BLOCKED
}else if (type == PathNodeType.RAIL && block !is AbstractRailBlock && world.getBlockState(pos.down()).block !is AbstractRailBlock) {
PathNodeType.UNPASSABLE_RAIL
}else if (type == PathNodeType.LEAVES) {
PathNodeType.BLOCKED
}else if(block == Blocks.SWEET_BERRY_BUSH){
PathNodeType.DANGER_OTHER
}else type
var type = type
if (type == PathNodeType.DOOR_WOOD_CLOSED && canOpenDoors && canEnterOpenDoors) {
type = PathNodeType.WALKABLE_DOOR
}
if (type == PathNodeType.DOOR_OPEN && !canEnterOpenDoors) {
type = PathNodeType.BLOCKED
}
if (type == PathNodeType.RAIL && world.getBlockState(pos).block !is AbstractRailBlock && world.getBlockState(pos.down()).block !is AbstractRailBlock) {
type = PathNodeType.UNPASSABLE_RAIL
}
if (type == PathNodeType.LEAVES) {
type = PathNodeType.BLOCKED
}
return type
}
fun canWalk(): Boolean {
@@ -51,7 +51,6 @@ object CobblemonRequirementAdapter : RequirementAdapter {
this.registerType(RecoilRequirement.ADAPTER_VARIANT, RecoilRequirement::class)
this.registerType(DefeatRequirement.ADAPTER_VARIANT, DefeatRequirement::class)
this.registerType(BlocksTraveledRequirement.ADAPTER_VARIANT, BlocksTraveledRequirement::class)
this.registerType(StructureRequirement.ADAPTER_VARIANT, StructureRequirement::class)
this.registerType(AnyRequirement.ADAPTER_VARIANT, AnyRequirement::class)
}
@@ -1,37 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.pokemon.evolution.requirements
import com.cobblemon.mod.common.api.conditional.RegistryLikeCondition
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.pokemon.evolution.requirements.template.EntityQueryRequirement
import net.minecraft.entity.LivingEntity
import net.minecraft.registry.RegistryKeys
import net.minecraft.world.gen.structure.Structure
/**
* A [EntityQueryRequirement] for when a [Pokemon] is expected to be in a certain structure.
*
* @property structureCondition The [Identifier] of the structure the queried entity is expected to be in.
* @author whatsy
* @since December 5th, 2023
*/
class StructureRequirement : EntityQueryRequirement {
val structureCondition: RegistryLikeCondition<Structure>? = null
override fun check(pokemon: Pokemon, queriedEntity: LivingEntity): Boolean {
val structures = queriedEntity.world.getChunk(queriedEntity.blockPos).structureReferences
val registry = queriedEntity.world.registryManager.get(RegistryKeys.STRUCTURE)
return (structureCondition == null || structures.any { structureCondition.fits(it.key, registry) })
}
companion object {
const val ADAPTER_VARIANT = "structure"
}
}
@@ -126,7 +126,7 @@ object CobblemonHeldItemManager : BaseCobblemonHeldItemManager() {
this.take(pokemon, itemID)
return
}
val sourceName = battleMessage.getSourceBattlePokemon(battle)?.getName() ?: Text.of("UNKNOWN")
val sourceName = battleMessage.getSourceBattlePokemon(battle)?.getName() ?: return // there MUST be a source
val effect = battleMessage.effect()
val text = when {
effect?.id != null -> battleLang("enditem.${effect.id}", battlerName, itemName, sourceName)
@@ -1,30 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.registry
import com.cobblemon.mod.common.api.conditional.RegistryLikeCondition
import com.cobblemon.mod.common.api.conditional.RegistryLikeIdentifierCondition
import com.cobblemon.mod.common.api.conditional.RegistryLikeTagCondition
import net.minecraft.registry.tag.TagKey
import net.minecraft.util.Identifier
import net.minecraft.world.gen.structure.Structure
/**
* A [RegistryLikeCondition] that expects a [TagKey] attached to the [Structure] registry.
*
* @property tag The tag to check for the structure to match.
*/
class StructureTagCondition(tag: TagKey<Structure>) : RegistryLikeTagCondition<Structure>(tag)
/**
* A [RegistryLikeCondition] that expects an [Identifier] to match.
*
* @property identifier The identifier for the structure being referenced.
*/
class StructureIdentifierCondition(identifier: Identifier) : RegistryLikeIdentifierCondition<Structure>(identifier)
@@ -63,7 +63,6 @@ object DataKeys {
const val POKEMON_OWNER_ID = "PokemonOwnerId"
const val POKEMON_HIDE_LABEL = "HideLabel"
const val POKEMON_UNBATTLEABLE = "Unbattleable"
const val POKEMON_COUNTS_TOWARDS_SPAWN_CAP = "CountsTowardsSpawnCap"
// Evolution stuff
const val POKEMON_EVOLUTIONS = "Evolutions"
@@ -9,7 +9,6 @@
package com.cobblemon.mod.common.util
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
import com.cobblemon.mod.common.api.battles.model.actor.BattleActor
import com.cobblemon.mod.common.api.reactive.Observable.Companion.filter
@@ -22,7 +21,6 @@ import net.minecraft.entity.Entity
import net.minecraft.entity.player.PlayerEntity
import net.minecraft.entity.player.PlayerInventory
import net.minecraft.item.ItemStack
import net.minecraft.registry.Registries
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.sound.SoundCategory
import net.minecraft.sound.SoundEvents
@@ -266,5 +264,3 @@ fun PlayerEntity.giveOrDropItemStack(stack: ItemStack, playSound: Boolean = true
}
}
/** Retrieves the battle theme associated with this player, or the default PVP theme if null. */
fun ServerPlayerEntity.getBattleTheme() = Cobblemon.playerData.get(this).battleTheme?.let { Registries.SOUND_EVENT.get(it) } ?: CobblemonSounds.PVP_BATTLE
@@ -1,32 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.util
import com.cobblemon.mod.common.duck.SoundManagerDuck
import net.minecraft.client.sound.SoundInstance
import net.minecraft.client.sound.SoundManager
import net.minecraft.client.sound.Source
import net.minecraft.sound.SoundCategory
import net.minecraft.util.Identifier
/**
* Pauses the audio [Source]s belonging to the queried [SoundInstance]s.
*
* @param id The [Identifier] of the [SoundInstance] to pause. If null, will pause all sounds belonging to the specified [category].
* @param category The [SoundCategory] that [id] is queried from. If null, will query [id] from all categories.
*/
fun SoundManager.pauseSounds(id: Identifier?, category: SoundCategory?) = (this as SoundManagerDuck).pauseSounds(id, category)
/**
* Resumes the audio [Source]s belonging to the queried [SoundInstance]s.
*
* @param id The [Identifier] of the [SoundInstance] to resume. If null, will resume all sounds belonging to the specified [category].
* @param category The [SoundCategory] that [id] is queried from. If null, will query [id] from all categories.
*/
fun SoundManager.resumeSounds(id: Identifier?, category: SoundCategory?) = (this as SoundManagerDuck).resumeSounds(id, category)
@@ -1,30 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.util.adapters
import com.cobblemon.mod.common.api.conditional.RegistryLikeAdapter
import com.cobblemon.mod.common.api.conditional.RegistryLikeIdentifierCondition
import com.cobblemon.mod.common.api.conditional.RegistryLikeTagCondition
import com.cobblemon.mod.common.registry.StructureIdentifierCondition
import com.cobblemon.mod.common.registry.StructureTagCondition
import net.minecraft.registry.RegistryKeys
import net.minecraft.world.gen.structure.Structure
/**
* A type adapter for [StructureLikeCondition]s.
*
* @author Hiroku, Licious, whatsy
* @since December 5th, 2023
*/
object StructureLikeConditionAdapter : RegistryLikeAdapter<Structure> {
override val registryLikeConditions = mutableListOf(
RegistryLikeTagCondition.resolver(RegistryKeys.STRUCTURE, ::StructureTagCondition),
RegistryLikeIdentifierCondition.resolver(::StructureIdentifierCondition)
)
}
@@ -1,25 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.villager
import com.cobblemon.mod.common.CobblemonItems
import net.minecraft.item.Item
object VillagerGatherableItems {
val villagerGatherableItems = setOf<Item> (
CobblemonItems.BLUE_MINT_SEEDS,
CobblemonItems.CYAN_MINT_SEEDS,
CobblemonItems.GREEN_MINT_SEEDS,
CobblemonItems.PINK_MINT_SEEDS,
CobblemonItems.RED_MINT_SEEDS,
CobblemonItems.REVIVAL_HERB,
CobblemonItems.WHITE_MINT_SEEDS,
CobblemonItems.VIVICHOKE_SEEDS,
)
}
@@ -5,282 +5,76 @@
"loop": true,
"bones": {
"arm_right": {
"rotation": [0, -15, -22.5]
"rotation": [0, -45, -22.5]
},
"arm_right2": {
"rotation": [-45.57631, -67.43529, 49.34308]
"rotation": [-22.5, -45, 0]
},
"hand_right": {
"rotation": [0, 0, -7.5]
"rotation": [0, 0, 22.5]
},
"finger_right_middle": {
"rotation": [0, 7.5, 0]
"rotation": [0, 22.5, 0]
},
"finger_right_index": {
"rotation": [0, -7.5, 0]
"rotation": [0, 0, 0]
},
"thumb_right": {
"rotation": [55.91138, -24.4908, -33.87357]
"rotation": [24.14867, -20.70481, -9.00717]
},
"thumb_right2": {
"rotation": [0, 15, 0]
"rotation": [0, 0, 0]
},
"arm_left": {
"rotation": [0, 45, 22.5]
},
"arm_left2": {
"rotation": [-22.5, 45, 0]
},
"hand_left": {
"rotation": [0, 0, -22.5]
},
"finger_left_middle": {
"rotation": [0, -22.5, 0]
},
"thumb_left": {
"rotation": [24.14867, 20.70481, 9.00717]
},
"arm_bottom_right": {
"rotation": [79.72012, -18.25045, -71.47767]
},
"arm_bottom_right2": {
"rotation": [0, -77.5, 0]
"rotation": [0, -67.5, 22.5]
},
"hand_bottom_right": {
"rotation": [0, -32.5, 0]
},
"finger_right_middle2": {
"rotation": [0, 0, -25]
},
"finger_right_index2": {
"rotation": [0, 0, -25]
},
"thumb_bottom_right": {
"rotation": [0, 0, 0]
},
"finger_bottom_right_index": {
"rotation": [0, -17.5, 0]
},
"leg_right": {
"rotation": [0, 5, 0]
},
"foot_right1": {
"rotation": [0, 7.5, 0]
},
"leg_left": {
"rotation": [0, -5, 0]
},
"foot_left1": {
"rotation": [0, -7.5, 0]
},
"arm_left": {
"rotation": [0, 15, 22.5]
},
"arm_left2": {
"rotation": [-45.57631, 67.43529, -49.34308]
},
"hand_left": {
"rotation": [0, 0, 7.5]
},
"finger_left_middle": {
"rotation": [0, -7.5, 0]
},
"finger_left_middle2": {
"rotation": [0, 0, 25]
},
"finger_left_index": {
"rotation": [0, 7.5, 0]
},
"finger_left_index2": {
"rotation": [0, 0, 25]
},
"thumb_left": {
"rotation": [55.91138, 24.4908, 33.87357]
},
"thumb_left2": {
"rotation": [0, -15, 0]
},
"finger_bottom_right_pinky": {
"rotation": [0, -12.5, 0]
"rotation": [0, -22.5, 22.5]
},
"arm_bottom_left": {
"rotation": [79.72012, 18.25045, 71.47767]
},
"arm_bottom_left2": {
"rotation": [0, 77.5, 0]
"rotation": [0, 67.5, -22.5]
},
"hand_bottom_left": {
"rotation": [0, 32.5, 0]
},
"thumb_bottom_left": {
"rotation": [0, 0, 0]
},
"finger_bottom_left_index": {
"rotation": [0, 17.5, 0]
},
"finger_bottom_left_pinky": {
"rotation": [0, 12.5, 0]
}
}
},
"animation.graveler.test": {
"loop": true,
"bones": {
"arm_right": {
"rotation": [0, -15, -22.5]
},
"arm_right2": {
"rotation": [-41.69141, -58.31143, 22.68826]
},
"hand_right": {
"rotation": [0, 0, -7.5]
},
"finger_right_middle": {
"rotation": [0, 7.5, 0]
},
"finger_right_index": {
"rotation": [0, -7.5, 0]
},
"thumb_right": {
"rotation": [55.91138, -24.4908, -33.87357]
},
"thumb_right2": {
"rotation": [0, 15, 0]
},
"arm_bottom_right": {
"rotation": [79.72012, -18.25045, -71.47767]
},
"arm_bottom_right2": {
"rotation": [0, -77.5, 0]
},
"hand_bottom_right": {
"rotation": [0, -32.5, 0]
},
"finger_right_middle2": {
"rotation": [0, 0, -25]
},
"finger_right_index2": {
"rotation": [0, 0, -25]
},
"thumb_bottom_right": {
"rotation": [0, 0, 0]
},
"finger_bottom_right_index": {
"rotation": [0, -17.5, 0]
},
"leg_right": {
"rotation": [25.47246, 11.786, 3.23037],
"position": [-0.25, 1, 1]
},
"foot_right1": {
"rotation": [9.32127, 8.41779, -4.82471]
},
"leg_left": {
"rotation": [-12.5, -5, 0],
"position": [0, -0.1, -0.5]
},
"foot_left1": {
"rotation": [12.6604, -2.1851, -0.8646]
},
"arm_left": {
"rotation": [0, -40, 22.5]
},
"arm_left2": {
"rotation": [16.67725, 51.45351, 26.34959]
},
"hand_left": {
"rotation": [0, 10, 7.5]
},
"finger_left_middle": {
"rotation": [0, -7.5, 0]
},
"finger_left_middle2": {
"rotation": [0, 0, 25]
},
"finger_left_index": {
"rotation": [0, 7.5, 0]
},
"finger_left_index2": {
"rotation": [0, 0, 25]
},
"thumb_left": {
"rotation": [63.41138, 24.4908, 33.87357]
},
"thumb_left2": {
"rotation": [0, -15, 0]
},
"finger_bottom_right_pinky": {
"rotation": [0, -12.5, 0]
},
"arm_bottom_left": {
"rotation": [134.63306, -17.24316, 46.7838],
"position": [0, -1, 0]
},
"arm_bottom_left2": {
"rotation": [11.07464, -11.97201, -32.15081],
"position": [-0.75, -0.25, -0.25]
},
"hand_bottom_left": {
"rotation": [0, -10, 0],
"position": [-0.5, 0, 0]
},
"thumb_bottom_left": {
"rotation": [2.57028, 5.44216, -64.59837],
"position": [0, 0, 0.25]
},
"finger_bottom_left_index": {
"rotation": [6.384, -9.72777, -7.28677]
},
"finger_bottom_left_pinky": {
"rotation": [4.00319, -7.05166, 4.06876]
},
"torso": {
"rotation": [5, 0, 7.5]
},
"mouth": {
"position": [0, 0, 0.1]
},
"foot_right2": {
"rotation": [-30, 0, 0]
},
"crest": {
"rotation": [0, 0, 0]
},
"crest2": {
"rotation": [0, 0, 0]
},
"eyebrow_left": {
"rotation": [0, 0, -17.5]
},
"mouth_grin": {
"position": [0, 0, -0.1]
"rotation": [0, 22.5, -22.5]
}
}
},
"animation.graveler.blink": {
"animation_length": 0.16667,
"bones": {
"eyebrow_left": {
"rotation": {
"0.0": [0, 0, -22.5],
"0.125": {"pre": [0, 0, -22.5], "post": [0, 0, -22.5]},
"0.1667": {"pre": [0, 0, -22.5], "post": [0, 0, 0]}
},
"eyelid_right": {
"position": {
"0.0": [0, 0.25, 0],
"0.125": {"pre": [0, 0.25, 0], "post": [0, 0.25, 0]},
"0.1667": {"pre": [0, 0.25, 0], "post": [0, 0, 0]}
}
},
"eyebrow_right": {
"rotation": {
"0.0": [0, 0, 22.5],
"0.125": {"pre": [0, 0, 22.5], "post": [0, 0, 22.5]},
"0.1667": {"pre": [0, 0, 22.5], "post": [0, 0, 0]}
},
"position": {
"0.0": [0, 0.25, 0],
"0.125": {"pre": [0, 0.25, 0], "post": [0, 0.25, 0]},
"0.1667": {"pre": [0, 0.25, 0], "post": [0, 0, 0]}
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
},
"eyelid_left": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
}
}
@@ -1,112 +1,68 @@
{
"format_version": "1.8.0",
"animations": {
"animation.golem.test": {
"animation.golem.ground_idle": {
"loop": true,
"bones": {
"body": {
"position": [0, -0.75, 0]
"jaw": {
"rotation": [0, 0, 0]
},
"torso": {
"rotation": [2.5, 0, 0]
"arm_right": {
"rotation": [25, -22.5, 22.5]
},
"head": {
"rotation": [7.5, 0, 0]
"arm_right2": {
"rotation": [-9.00717, -20.70481, 24.14867]
},
"left_upper_arm": {
"hand_right": {
"rotation": [-45, -22.5, 0]
},
"finger_right": {
"rotation": [0, 0, 22.5]
},
"left_lower_arm": {
"rotation": [3.56463, 54.92219, 4.35299]
"finger_right2": {
"rotation": [0, 22.5, 0]
},
"left_hand": {
"rotation": [0, 0, -52.5],
"position": [0, 0, 0]
"finger_right3": {
"rotation": [0, -22.5, 0]
},
"left_middle_finger_claw": {
"rotation": [0, 0, 40]
"arm_left": {
"rotation": [25, 22.5, -22.5]
},
"left_middle_finger": {
"rotation": [0, 0, 27.5]
"arm_left2": {
"rotation": [-9.00717, 20.70481, -24.14867]
},
"left_thumb": {
"rotation": [41.09768, -15.19586, -13.11512]
"hand_left": {
"rotation": [-45, 22.5, 0]
},
"left_thumb_claw": {
"rotation": [40, 0, 0]
},
"left_pinky_finger": {
"rotation": [-43.67038, 20.35084, -14.86213]
},
"left_pinky_claw": {
"rotation": [-42.5, 0, 0]
},
"left_upper_leg": {
"rotation": [-5, -22.5, 0]
},
"left_lower_leg": {
"rotation": [12.5, 0, 0]
},
"left_foot": {
"rotation": [-7.5, 0, 0]
},
"right_upper_arm": {
"finger_left": {
"rotation": [0, 0, -22.5]
},
"right_upper_leg": {
"rotation": [-5, 22.5, 0]
"finger_left2": {
"rotation": [0, -22.5, 0]
},
"right_lower_leg": {
"rotation": [15, 0, 0]
"finger_left3": {
"rotation": [0, 22.5, 0]
},
"right_foot": {
"rotation": [-10, 0, 0]
},
"right_lower_arm": {
"rotation": [3.56463, -54.92219, -4.35299]
},
"right_hand": {
"rotation": [0, 0, 52.5],
"position": [0, 0, 0]
},
"right_middle_finger": {
"rotation": [0, 0, -27.5]
},
"right_middle_finger_claw": {
"rotation": [0, 0, -40]
},
"right_thumb": {
"rotation": [41.09768, 15.19586, 13.11512]
},
"right_thumb_claw": {
"rotation": [40, 0, 0]
},
"right_pinky_finger": {
"rotation": [-43.67038, -20.35084, 14.86213]
},
"right_pinky_claw": {
"rotation": [-42.5, 0, 0]
},
"jaw": {
"rotation": [42.5, 0, 0]
"leg_right": {
"rotation": [0, 0, 0]
}
}
},
"animation.golem.blink": {
"animation_length": 0.16667,
"bones": {
"left_eyelid": {
"eyelid_right": {
"position": {
"0.0": [0.1, 0, -0.1],
"0.125": {"pre": [0.1, 0, -0.1], "post": [0.1, 0, -0.1]},
"0.1667": {"pre": [0.1, 0, -0.1], "post": [0, 0, 0]}
"0.0": [0.1, 0, 0],
"0.125": [0.1, 0, 0],
"0.1667": [0, 0, 0]
}
},
"right_eyelid": {
"eyelid_left": {
"position": {
"0.0": [-0.1, 0, -0.1],
"0.125": {"pre": [-0.1, 0, -0.1], "post": [-0.1, 0, -0.1]},
"0.1667": {"pre": [-0.1, 0, -0.1], "post": [0, 0, 0]}
"0.0": [-0.1, 0, 0],
"0.125": [-0.1, 0, 0],
"0.1667": [0, 0, 0]
}
}
}
@@ -1,75 +0,0 @@
{
"format_version": "1.8.0",
"animations": {
"animation.drifloon.ground_idle": {
"loop": true,
"bones": {
"body": {
"rotation": [5, 0, 0],
"position": [0, 8, 0]
},
"cloud": {
"rotation": [0, 0, -2.5]
},
"cloud_end": {
"rotation": [0, 0, -10]
},
"arm_left": {
"rotation": [0, 32.5, 42.5]
},
"arm_left2": {
"rotation": [-3.28396, -12.06754, 35.34721]
},
"arm_left3": {
"rotation": [-1.10693, -12.45167, 5.12076]
},
"arm_left4": {
"rotation": [-0.6574, -7.4713, 5.04292]
},
"arm_left5": {
"rotation": [-1.943, -4.8746, 7.41238]
},
"arm_end_left": {
"rotation": [0, -10, 0]
},
"arm_right": {
"rotation": [0, -32.5, -42.5]
},
"arm_right2": {
"rotation": [-3.28396, 12.06754, -35.34721]
},
"arm_right3": {
"rotation": [-1.10693, 12.45167, -5.12076]
},
"arm_right4": {
"rotation": [0.21803, 2.49048, 5.00474]
},
"arm_right5": {
"rotation": [0, 15, 0]
},
"arm_end_right": {
"rotation": [0, 10, 0]
}
}
},
"animation.drifloon.blink": {
"animation_length": 0.16667,
"bones": {
"eyelid_left": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
},
"eyelid_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
}
}
}
}
}
@@ -1,77 +0,0 @@
{
"format_version": "1.8.0",
"animations": {
"animation.drifblim.ground_idle": {
"loop": true,
"bones": {
"body": {
"position": [0, 16, 0]
},
"arm_front_left_rotation": {
"rotation": [30, 0, 0]
},
"arm_front_left2": {
"rotation": [17.5, 0, 0]
},
"hand_front_left": {
"rotation": [10, 0, 0]
},
"arm_back_left_rotation": {
"rotation": [-30, 0, 0]
},
"arm_back_left2": {
"rotation": [-17.5, 0, 0]
},
"hand_back_left": {
"rotation": [-10, 0, 0]
},
"arm_front_right_rotation": {
"rotation": [30, 0, 0]
},
"arm_front_right2": {
"rotation": [17.5, 0, 0]
},
"hand_front_right": {
"rotation": [10, 0, 0]
},
"arm_back_right_rotation": {
"rotation": [-30, 0, 0]
},
"arm_back_right2": {
"rotation": [-17.5, 0, 0]
},
"hand_back_right": {
"rotation": [-10, 0, 0]
},
"cloud": {
"rotation": [5, 0, 0]
},
"cloud_end": {
"rotation": [-2.5, 0, 0]
},
"body_bottom": {
"rotation": [12.5, 0, 0]
}
}
},
"animation.drifblim.blink": {
"animation_length": 0.16667,
"bones": {
"eyelid_left": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
},
"eyelid_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
}
}
}
}
}
@@ -262,11 +262,6 @@
"1.125": [0, 0, 0]
}
}
},
"sound_effects": {
"0.3333": {
"effect": "pokemon.scatterbug.cry"
}
}
},
"animation.scatterbug.faint": {
@@ -931,37 +926,115 @@
"eyelid_left": {
"position": {
"0.0417": [0.1, -0.1, 0],
"0.0833": {"pre": [0.1, -0.1, 0], "post": [0, 0, 0]},
"0.1667": [0, 0, 0],
"0.2083": {"pre": [0, 0, 0], "post": [0.1, -0.1, 0]},
"0.375": {"pre": [0.1, -0.1, 0], "post": [0, 0, 0]},
"0.8333": [0, 0, 0],
"0.875": {"pre": [0, 0, 0], "post": [0.1, -0.1, 0]},
"1.0417": {"pre": [0.1, -0.1, 0], "post": [0, 0, 0]},
"1.125": [0, 0, 0],
"1.1667": {"pre": [0, 0, 0], "post": [0.1, -0.1, 0]},
"1.3333": {"pre": [0.1, -0.1, 0], "post": [0, 0, 0]},
"1.625": [0, 0, 0],
"1.6667": {"pre": [0, 0, 0], "post": [0.1, -0.1, 0]},
"1.8333": {"pre": [0.1, -0.1, 0], "post": [0, 0, 0]}
"0.0833": {
"pre": [0.1, -0.1, 0],
"post": [0, 0, 0]
},
"0.1667": {
"pre": [0, 0, 0],
"post": [0, 0, 0]
},
"0.2083": {
"pre": [0, 0, 0],
"post": [0.1, -0.1, 0]
},
"0.375": {
"pre": [0.1, -0.1, 0],
"post": [0, 0, 0]
},
"0.8333": {
"pre": [0, 0, 0],
"post": [0, 0, 0]
},
"0.875": {
"pre": [0, 0, 0],
"post": [0.1, -0.1, 0]
},
"1.0417": {
"pre": [0.1, -0.1, 0],
"post": [0, 0, 0]
},
"1.125": {
"pre": [0, 0, 0],
"post": [0, 0, 0]
},
"1.1667": {
"pre": [0, 0, 0],
"post": [0.1, -0.1, 0]
},
"1.3333": {
"pre": [0.1, -0.1, 0],
"post": [0, 0, 0]
},
"1.625": {
"pre": [0, 0, 0],
"post": [0, 0, 0]
},
"1.6667": {
"pre": [0, 0, 0],
"post": [0.1, -0.1, 0]
},
"1.8333": {
"pre": [0.1, -0.1, 0],
"post": [0, 0, 0]
}
}
},
"eyelid_right": {
"position": {
"0.0417": [-0.1, -0.1, 0],
"0.0833": {"pre": [-0.1, -0.1, 0], "post": [0, 0, 0]},
"0.1667": [0, 0, 0],
"0.2083": {"pre": [0, 0, 0], "post": [-0.1, -0.1, 0]},
"0.375": {"pre": [-0.1, -0.1, 0], "post": [0, 0, 0]},
"0.8333": [0, 0, 0],
"0.875": {"pre": [0, 0, 0], "post": [-0.1, -0.1, 0]},
"1.0417": {"pre": [-0.1, -0.1, 0], "post": [0, 0, 0]},
"1.125": [0, 0, 0],
"1.1667": {"pre": [0, 0, 0], "post": [-0.1, -0.1, 0]},
"1.3333": {"pre": [-0.1, -0.1, 0], "post": [0, 0, 0]},
"1.625": [0, 0, 0],
"1.6667": {"pre": [0, 0, 0], "post": [-0.1, -0.1, 0]},
"1.8333": {"pre": [-0.1, -0.1, 0], "post": [0, 0, 0]}
"0.0833": {
"pre": [-0.1, -0.1, 0],
"post": [0, 0, 0]
},
"0.1667": {
"pre": [0, 0, 0],
"post": [0, 0, 0]
},
"0.2083": {
"pre": [0, 0, 0],
"post": [-0.1, -0.1, 0]
},
"0.375": {
"pre": [-0.1, -0.1, 0],
"post": [0, 0, 0]
},
"0.8333": {
"pre": [0, 0, 0],
"post": [0, 0, 0]
},
"0.875": {
"pre": [0, 0, 0],
"post": [-0.1, -0.1, 0]
},
"1.0417": {
"pre": [-0.1, -0.1, 0],
"post": [0, 0, 0]
},
"1.125": {
"pre": [0, 0, 0],
"post": [0, 0, 0]
},
"1.1667": {
"pre": [0, 0, 0],
"post": [-0.1, -0.1, 0]
},
"1.3333": {
"pre": [-0.1, -0.1, 0],
"post": [0, 0, 0]
},
"1.625": {
"pre": [0, 0, 0],
"post": [0, 0, 0]
},
"1.6667": {
"pre": [0, 0, 0],
"post": [-0.1, -0.1, 0]
},
"1.8333": {
"pre": [-0.1, -0.1, 0],
"post": [0, 0, 0]
}
}
},
"fluff": {
@@ -122,11 +122,6 @@
}
}
}
},
"sound_effects": {
"0.125": {
"effect": "pokemon.spewpa.cry"
}
}
},
"animation.spewpa.pose": {
@@ -376,13 +371,19 @@
"eyelid_left": {
"position": {
"1.375": [0, 0, 0],
"1.4167": {"pre": [0, 0, 0], "post": [0.1, 0, -0.1]}
"1.4167": {
"pre": [0, 0, 0],
"post": [0.1, 0, -0.1]
}
}
},
"eyelid_right": {
"position": {
"1.375": [0, 0, 0],
"1.4167": {"pre": [0, 0, 0], "post": [-0.1, 0, -0.1]}
"1.4167": {
"pre": [0, 0, 0],
"post": [-0.1, 0, -0.1]
}
}
}
},
@@ -23,63 +23,56 @@
{
"name": "torso",
"parent": "body",
"pivot": [0, 4, 0],
"pivot": [0, 4.5, 0],
"cubes": [
{"origin": [-4.5, 3, -4.5], "size": [9, 5, 9], "uv": [0, 0]},
{"origin": [-4.49, 1.5, -4.49], "size": [3, 2, 3], "uv": [0, 52]},
{"origin": [1.49, 1.5, -4.49], "size": [3, 2, 3], "uv": [0, 57]},
{"origin": [-1.5, 2.01, -4.5], "size": [3, 1, 3], "inflate": -0.01, "uv": [9, 45]},
{"origin": [0.75, 3.5, -4.5], "size": [4, 2, 0], "inflate": 0.03, "pivot": [0.5, 3.5, -4.5], "rotation": [0, 0, -20], "uv": [0, 49]},
{"origin": [-4.75, 3.5, -4.5], "size": [4, 2, 0], "inflate": 0.03, "pivot": [-0.5, 3.5, -4.5], "rotation": [0, 0, 20], "uv": [0, 46], "mirror": true},
{"origin": [-4.5, 0, -1.5], "size": [9, 3, 6], "inflate": 0.01, "uv": [0, 31]}
{"origin": [-4.5, 2, -4.5], "size": [9, 6, 9], "uv": [0, 0]},
{"origin": [-4.5, 0, -1.5], "size": [9, 2, 6], "inflate": 0.01, "uv": [0, 31]}
]
},
{
"name": "eye_right",
"parent": "torso",
"pivot": [-2.54168, 4.04548, -4.525],
"pivot": [-2.54168, 4.54548, -4.525],
"cubes": [
{"origin": [-4, 3, -4.5], "size": [3, 2, 0], "inflate": 0.01, "uv": [0, 0]},
{"origin": [-2.5, 3, -4.5], "size": [1, 2, 0], "inflate": 0.015, "uv": [0, 5]}
{"origin": [-4, 3.5, -4.525], "size": [3, 2, 0], "inflate": 0.01, "pivot": [-2, 5, -4.525], "rotation": [0, 0, 5], "uv": [0, 0]}
]
},
{
"name": "eyelid_right",
"parent": "eye_right",
"pivot": [-2.54168, 4.04548, -3.925],
"pivot": [-2.54168, 4.54548, -3.925],
"cubes": [
{"origin": [-4, 3, -4.4], "size": [3, 2, 1], "inflate": 0.02, "uv": [0, 2]}
{"origin": [-4, 3.5, -4.425], "size": [3, 2, 1], "inflate": 0.02, "pivot": [-2, 5, -4.425], "rotation": [0, 0, 5], "uv": [0, 2]}
]
},
{
"name": "eye_left",
"parent": "torso",
"pivot": [2.54168, 4.04548, -4.525],
"pivot": [2.54168, 4.54548, -4.525],
"cubes": [
{"origin": [1, 3, -4.5], "size": [3, 2, 0], "inflate": 0.01, "uv": [0, 0], "mirror": true},
{"origin": [1.5, 3, -4.5], "size": [1, 2, 0], "inflate": 0.015, "uv": [0, 7], "mirror": true}
{"origin": [1, 3.5, -4.525], "size": [3, 2, 0], "inflate": 0.01, "pivot": [2, 5, -4.525], "rotation": [0, 0, -5], "uv": [0, 0], "mirror": true}
]
},
{
"name": "eyelid_left",
"parent": "eye_left",
"pivot": [2.54168, 4.04548, -3.925],
"pivot": [2.54168, 4.54548, -3.925],
"cubes": [
{"origin": [1, 3, -4.4], "size": [3, 2, 1], "inflate": 0.02, "uv": [0, 2], "mirror": true}
{"origin": [1, 3.5, -4.425], "size": [3, 2, 1], "inflate": 0.02, "pivot": [2, 5, -4.425], "rotation": [0, 0, -5], "uv": [0, 2], "mirror": true}
]
},
{
"name": "jaw",
"parent": "torso",
"pivot": [0, 2, -0.5],
"pivot": [0, 2, -1.5],
"cubes": [
{"origin": [-4, 0, -4.25], "size": [8, 2, 3], "uv": [0, 40]}
{"origin": [-4, 0, -4.25], "size": [8, 2, 3], "uv": [0, 39]}
]
},
{
"name": "arm_right",
"parent": "torso",
"pivot": [-4.5, 4.5, 0.25],
"pivot": [-4.5, 3.5, 0.25],
"cubes": [
{"origin": [-9.5, 2.5, -0.75], "size": [5, 2, 2], "uv": [27, 4]}
]
@@ -95,7 +88,7 @@
{
"name": "hand_right",
"parent": "arm_right2",
"pivot": [-15.5, 4.25, 0.25],
"pivot": [-15.5, 4.75, 0.25],
"cubes": [
{"origin": [-18.5, 2.25, -0.75], "size": [3, 4, 2], "uv": [0, 18]}
]
@@ -183,7 +176,7 @@
{
"name": "arm_left",
"parent": "torso",
"pivot": [4.5, 4.5, 0.25],
"pivot": [4.5, 3.5, 0.25],
"cubes": [
{"origin": [4.5, 2.5, -0.75], "size": [5, 2, 2], "uv": [27, 4], "mirror": true}
]
@@ -199,7 +192,7 @@
{
"name": "hand_left",
"parent": "arm_left2",
"pivot": [15.5, 4.25, 0.25],
"pivot": [15.5, 4.75, 0.25],
"cubes": [
{"origin": [15.5, 2.25, -0.75], "size": [3, 4, 2], "uv": [0, 18], "mirror": true}
]
@@ -5,8 +5,8 @@
"description": {
"identifier": "geometry.graveler",
"texture_width": 64,
"texture_height": 128,
"visible_bounds_width": 5,
"texture_height": 64,
"visible_bounds_width": 4,
"visible_bounds_height": 2.5,
"visible_bounds_offset": [0, 0.75, 0]
},
@@ -23,427 +23,276 @@
{
"name": "torso",
"parent": "body",
"pivot": [0, 4, -1],
"pivot": [0, 4, 0],
"cubes": [
{"origin": [-7, 4, -7], "size": [14, 14, 14], "uv": [0, 0]},
{"origin": [-1, 10.75, -7], "size": [2, 1, 0], "inflate": 0.025, "uv": [10, 8]},
{"origin": [-1, 10, -7], "size": [2, 1, 0], "inflate": 0.02, "uv": [10, 9]},
{"origin": [1, 18, -5], "size": [4, 1, 4], "uv": [42, 8]},
{"origin": [-5, 12, 7], "size": [4, 4, 1], "uv": [32, 51]},
{"origin": [0, 5, 6.75], "size": [3, 3, 1], "uv": [6, 45]},
{"origin": [1, 14, 6.75], "size": [3, 3, 1], "uv": [14, 34]},
{"origin": [-7.75, 7, 1], "size": [1, 3, 3], "uv": [0, 53]},
{"origin": [6.5, 13, -5], "size": [1, 2, 2], "uv": [14, 58]},
{"origin": [-7.5, 5, -4], "size": [1, 2, 2], "uv": [56, 57]},
{"origin": [7, 5, 1], "size": [1, 4, 4], "uv": [0, 45]},
{"origin": [4, 9, 6.5], "size": [2, 2, 1], "uv": [5, 53]},
{"origin": [-6, 7, 6.5], "size": [2, 2, 1], "uv": [17, 28]},
{"origin": [-6, 17.75, -1], "size": [3, 1, 3], "uv": [10, 49]},
{"origin": [-2, 17.5, 3], "size": [2, 1, 2], "uv": [31, 36]},
{"origin": [-5, 3.5, 2], "size": [2, 1, 2], "uv": [56, 23]},
{"origin": [2, 3.25, 3], "size": [3, 1, 3], "uv": [48, 29]}
{"origin": [-6.5, 4, -6], "size": [13, 13, 12], "uv": [0, 0]},
{"origin": [-5, 11.24714, -6.13086], "size": [10, 6, 0], "pivot": [2, 13.74714, -6.13086], "rotation": [2.5, 0, 0], "uv": [0, 25]}
]
},
{
"name": "mouth",
"parent": "torso",
"pivot": [0, 9, -7],
"pivot": [0, 8, -6],
"cubes": [
{"origin": [-5, 8, -7], "size": [10, 1, 0], "inflate": 0.01, "uv": [42, 13]},
{"origin": [-5, 8.5, -7], "size": [10, 1, 0], "inflate": 0.01, "uv": [37, 28]}
]
},
{
"name": "mouth_open",
"parent": "torso",
"pivot": [0, 9, -6.9],
"cubes": [
{"origin": [-5, 7, -6.9], "size": [10, 2, 0], "inflate": 0.01, "uv": [0, 62]},
{"origin": [-5, 8.5, -6.9], "size": [10, 1, 0], "inflate": 0.02, "uv": [0, 64]}
]
},
{
"name": "mouth_grin",
"parent": "torso",
"pivot": [0, 9, -6.9],
"cubes": [
{"origin": [-5, 7, -6.9], "size": [10, 2, 0], "inflate": 0.01, "uv": [0, 68]},
{"origin": [-5, 8.5, -6.9], "size": [9, 1, 0], "inflate": 0.02, "uv": [0, 70]},
{"origin": [4.03, 8.97, -6.9], "size": [1, 1, 0], "inflate": 0.02, "uv": [0, 71]}
{"origin": [-5, 7, -6], "size": [10, 2, 0], "inflate": 0.01, "uv": [12, 45]}
]
},
{
"name": "eye_right",
"parent": "torso",
"pivot": [-2.29721, 11.38116, -7.05],
"pivot": [-2.29721, 10.63116, -6.05],
"cubes": [
{"origin": [-4.5, 10, -7], "size": [4, 2, 0], "inflate": 0.01, "uv": [19, 49]}
{"origin": [-4.70279, 9.71039, -6.05], "size": [4, 2, 0], "inflate": 0.01, "pivot": [-2.70279, 11.21039, -6.05], "rotation": [0, 0, 10], "uv": [8, 32]}
]
},
{
"name": "eyelid_right",
"parent": "eye_right",
"pivot": [-2.5, 11, -6.4],
"pivot": [-2.29721, 10.63116, -5.45],
"cubes": [
{"origin": [-4.5, 10, -6.9], "size": [3, 2, 1], "inflate": 0.025, "uv": [53, 0]},
{"origin": [-2, 10, -6.9], "size": [1, 2, 1], "inflate": 0.02, "uv": [60, 5]}
{"origin": [-4.70279, 9.71039, -5.95], "size": [4, 2, 1], "inflate": 0.02, "pivot": [-2.70279, 11.21039, -5.95], "rotation": [0, 0, 10], "uv": [0, 34], "mirror": true}
]
},
{
"name": "eye_left",
"parent": "torso",
"pivot": [2.29721, 11.38116, -7.05],
"pivot": [2.29721, 10.63116, -6.05],
"cubes": [
{"origin": [0.5, 10, -7], "size": [4, 2, 0], "inflate": 0.01, "uv": [53, 3]}
{"origin": [0.70279, 9.71039, -6.05], "size": [4, 2, 0], "inflate": 0.01, "pivot": [2.70279, 11.21039, -6.05], "rotation": [0, 0, -10], "uv": [8, 32], "mirror": true}
]
},
{
"name": "eyelid_left",
"parent": "eye_left",
"pivot": [2.5, 11, -6.4],
"pivot": [2.29721, 10.63116, -5.45],
"cubes": [
{"origin": [1.5, 10, -6.9], "size": [3, 2, 1], "inflate": 0.025, "uv": [10, 65], "mirror": true},
{"origin": [1, 10, -6.9], "size": [1, 2, 1], "inflate": 0.02, "uv": [18, 65], "mirror": true}
{"origin": [0.70279, 9.71039, -5.95], "size": [4, 2, 1], "inflate": 0.02, "pivot": [2.70279, 11.21039, -5.95], "rotation": [0, 0, -10], "uv": [0, 34]}
]
},
{
"name": "arm_right",
"parent": "torso",
"pivot": [-7, 13.5, 0],
"pivot": [-6.5, 13, -0.25],
"cubes": [
{"origin": [-13, 10.5, -1.5], "size": [7, 3, 3], "uv": [20, 28]},
{"origin": [-9.5, 13, -1], "size": [2, 1, 2], "uv": [34, 56]}
{"origin": [-12.5, 11.5, -1.75], "size": [7, 3, 3], "uv": [20, 25]}
]
},
{
"name": "arm_right2",
"parent": "arm_right",
"pivot": [-13, 12, 1],
"pivot": [-12.5, 13, 1.25],
"cubes": [
{"origin": [-19, 10.5, -2], "size": [5, 3, 4], "uv": [36, 36]},
{"origin": [-14, 10.5, -1.5], "size": [1, 3, 3], "inflate": 0.01, "uv": [55, 5]},
{"origin": [-15.5, 13, -1], "size": [3, 1, 2], "inflate": 0.01, "uv": [36, 62]}
{"origin": [-17.5, 11.5, -1.75], "size": [5, 3, 3], "inflate": 0.01, "uv": [38, 0]}
]
},
{
"name": "hand_right",
"parent": "arm_right2",
"pivot": [-19, 12, 0.25],
"pivot": [-17.5, 13, -0.25],
"cubes": [
{"origin": [-21.5, 10.5, -2.5], "size": [3, 3, 5], "inflate": 0.01, "uv": [42, 0]}
{"origin": [-19.5, 11.5, -2.5], "size": [2, 3, 4], "uv": [40, 37]}
]
},
{
"name": "finger_right_middle",
"parent": "hand_right",
"pivot": [-21.5, 13.5, 1.25],
"pivot": [-19.5, 14.25, 0.5],
"cubes": [
{"origin": [-23.5, 12.5, 0.25], "size": [2, 1, 2], "inflate": 0.01, "uv": [54, 61]}
{"origin": [-21.5, 13.25, -0.5], "size": [2, 1, 2], "inflate": 0.01, "uv": [48, 9]}
]
},
{
"name": "finger_right_middle2",
"parent": "finger_right_middle",
"pivot": [-23.5, 13.5, 1.25],
"pivot": [-21.5, 14.25, 0.5],
"cubes": [
{"origin": [-24.5, 12.5, 0.25], "size": [1, 1, 2], "uv": [44, 59]}
{"origin": [-22.5, 13.25, -0.5], "size": [1, 1, 2], "uv": [50, 12]}
]
},
{
"name": "finger_right_index",
"parent": "hand_right",
"pivot": [-21.5, 13.5, -1.25],
"pivot": [-19.5, 14.25, -1.5],
"cubes": [
{"origin": [-23.5, 12.5, -2.25], "size": [2, 1, 2], "inflate": 0.01, "uv": [55, 43]}
{"origin": [-21.5, 13.25, -2.5], "size": [2, 1, 2], "inflate": 0.01, "uv": [0, 31]}
]
},
{
"name": "finger_right_index2",
"parent": "finger_right_index",
"pivot": [-23.5, 13.5, -1.25],
"pivot": [-21.5, 14.25, -1.5],
"cubes": [
{"origin": [-24.5, 12.5, -2.25], "size": [1, 1, 2], "uv": [50, 59]}
{"origin": [-22.5, 13.25, -2.5], "size": [1, 1, 2], "uv": [0, 5]}
]
},
{
"name": "thumb_right",
"parent": "hand_right",
"pivot": [-21, 11, -2],
"pivot": [-18.5, 12, -2.25],
"cubes": [
{"origin": [-22.5, 10, -2.5], "size": [2, 2, 1], "inflate": 0.02, "uv": [20, 61]}
{"origin": [-20.5, 11.5, -2.75], "size": [2, 1, 1], "inflate": 0.01, "uv": [45, 25]}
]
},
{
"name": "thumb_right2",
"parent": "thumb_right",
"pivot": [-22.5, 11, -2.5],
"pivot": [-20.5, 12, -2.75],
"cubes": [
{"origin": [-23.5, 10, -2.5], "size": [1, 2, 1], "inflate": 0.01, "uv": [10, 0]}
{"origin": [-21.5, 11.5, -2.75], "size": [1, 1, 1], "uv": [41, 25]}
]
},
{
"name": "arm_left",
"parent": "torso",
"pivot": [7, 13.5, 0],
"pivot": [6.5, 13, -0.25],
"cubes": [
{"origin": [6, 10.5, -1.5], "size": [7, 3, 3], "uv": [0, 28]},
{"origin": [7.5, 13, -1], "size": [2, 1, 2], "uv": [42, 56]}
{"origin": [5.5, 11.5, -1.75], "size": [7, 3, 3], "uv": [20, 25], "mirror": true}
]
},
{
"name": "arm_left2",
"parent": "arm_left",
"pivot": [13, 12, 1],
"pivot": [12.5, 13, 1.25],
"cubes": [
{"origin": [14, 10.5, -2], "size": [5, 3, 4], "uv": [0, 34]},
{"origin": [13, 10.5, -1.5], "size": [1, 3, 3], "inflate": 0.01, "uv": [8, 53]},
{"origin": [12.5, 13, -1], "size": [3, 1, 2], "inflate": 0.01, "uv": [24, 62]}
{"origin": [12.5, 11.5, -1.75], "size": [5, 3, 3], "inflate": 0.01, "uv": [38, 0], "mirror": true}
]
},
{
"name": "hand_left",
"parent": "arm_left2",
"pivot": [19, 12, 0.25],
"pivot": [17.5, 13, -0.25],
"cubes": [
{"origin": [18.5, 10.5, -2.5], "size": [3, 3, 5], "inflate": 0.01, "uv": [15, 41]}
{"origin": [17.5, 11.5, -2.5], "size": [2, 3, 4], "uv": [40, 37], "mirror": true}
]
},
{
"name": "finger_left_middle",
"parent": "hand_left",
"pivot": [21.5, 13.5, 1.25],
"pivot": [19.5, 14.25, 0.5],
"cubes": [
{"origin": [21.5, 12.5, 0.25], "size": [2, 1, 2], "inflate": 0.01, "uv": [48, 62]}
{"origin": [19.5, 13.25, -0.5], "size": [2, 1, 2], "inflate": 0.01, "uv": [48, 9], "mirror": true}
]
},
{
"name": "finger_left_middle2",
"parent": "finger_left_middle",
"pivot": [23.5, 13.5, 1.25],
"pivot": [21.5, 14.25, 0.5],
"cubes": [
{"origin": [23.5, 12.5, 0.25], "size": [1, 1, 2], "uv": [38, 59]}
{"origin": [21.5, 13.25, -0.5], "size": [1, 1, 2], "uv": [50, 12], "mirror": true}
]
},
{
"name": "finger_left_index",
"parent": "hand_left",
"pivot": [21.5, 13.5, -1.25],
"pivot": [19.5, 14.25, -1.5],
"cubes": [
{"origin": [21.5, 12.5, -2.25], "size": [2, 1, 2], "inflate": 0.01, "uv": [50, 56]}
{"origin": [19.5, 13.25, -2.5], "size": [2, 1, 2], "inflate": 0.01, "uv": [0, 31], "mirror": true}
]
},
{
"name": "finger_left_index2",
"parent": "finger_left_index",
"pivot": [23.5, 13.5, -1.25],
"pivot": [21.5, 14.25, -1.5],
"cubes": [
{"origin": [23.5, 12.5, -2.25], "size": [1, 1, 2], "uv": [32, 59]}
{"origin": [21.5, 13.25, -2.5], "size": [1, 1, 2], "uv": [0, 5], "mirror": true}
]
},
{
"name": "thumb_left",
"parent": "hand_left",
"pivot": [21, 11, -2],
"pivot": [18.5, 12, -2.25],
"cubes": [
{"origin": [20.5, 10, -2.5], "size": [2, 2, 1], "inflate": 0.02, "uv": [6, 59]}
{"origin": [18.5, 11.5, -2.75], "size": [2, 1, 1], "inflate": 0.01, "uv": [45, 25], "mirror": true}
]
},
{
"name": "thumb_left2",
"parent": "thumb_left",
"pivot": [22.5, 11, -2.5],
"pivot": [20.5, 12, -2.75],
"cubes": [
{"origin": [22.5, 10, -2.5], "size": [1, 2, 1], "inflate": 0.01, "uv": [0, 0]}
{"origin": [20.5, 11.5, -2.75], "size": [1, 1, 1], "uv": [41, 25], "mirror": true}
]
},
{
"name": "arm_bottom_right",
"parent": "torso",
"pivot": [-6.25, 7.25, -5.5],
"pivot": [-5.75, 7.25, -4.5],
"rotation": [0, -45, 0],
"cubes": [
{"origin": [-9.25, 5.75, -6.5], "size": [4, 3, 2], "uv": [45, 46]}
{"origin": [-8.75, 5.75, -5.5], "size": [4, 3, 2], "uv": [38, 6]}
]
},
{
"name": "arm_bottom_right2",
"parent": "arm_bottom_right",
"pivot": [-9.25, 7.25, -4.5],
"pivot": [-8.75, 7.25, -3.5],
"cubes": [
{"origin": [-12.25, 5.75, -6.5], "size": [3, 3, 2], "inflate": 0.01, "uv": [52, 51]}
{"origin": [-11.75, 5.75, -5.5], "size": [3, 3, 2], "inflate": 0.01, "uv": [0, 37]}
]
},
{
"name": "hand_bottom_right",
"parent": "arm_bottom_right2",
"pivot": [-12.25, 7.25, -4.5],
"pivot": [-11.75, 7.25, -3.5],
"cubes": [
{"origin": [-14.25, 5.75, -6.5], "size": [2, 3, 2], "uv": [26, 55]}
{"origin": [-13.75, 5.75, -5.5], "size": [2, 3, 2], "uv": [0, 0]}
]
},
{
"name": "thumb_bottom_right",
"parent": "hand_bottom_right",
"pivot": [-13.75, 8.5, -6],
"pivot": [-13.25, 8.5, -5.25],
"cubes": [
{"origin": [-15.25, 8, -6.5], "size": [2, 1, 1], "inflate": 0.01, "uv": [44, 62]}
{"origin": [-15.25, 8, -5.75], "size": [2, 1, 1], "uv": [48, 6]}
]
},
{
"name": "finger_bottom_right_index",
"parent": "hand_bottom_right",
"pivot": [-14.25, 7.5, -4.5],
"pivot": [-13.75, 6.75, -3.5],
"cubes": [
{"origin": [-16.25, 7, -5.5], "size": [2, 1, 1], "uv": [32, 62]}
]
},
{
"name": "finger_bottom_right_pinky",
"parent": "hand_bottom_right",
"pivot": [-14.25, 6.25, -4.5],
"cubes": [
{"origin": [-16.25, 5.75, -5.5], "size": [2, 1, 1], "uv": [25, 60]}
{"origin": [-15.75, 5.75, -4.5], "size": [2, 2, 1], "uv": [16, 31]}
]
},
{
"name": "arm_bottom_left",
"parent": "torso",
"pivot": [6.25, 7.25, -5.5],
"pivot": [5.75, 7.25, -4.5],
"rotation": [0, 45, 0],
"cubes": [
{"origin": [5.25, 5.75, -6.5], "size": [4, 3, 2], "uv": [0, 8]}
{"origin": [4.75, 5.75, -5.5], "size": [4, 3, 2], "uv": [38, 6], "mirror": true}
]
},
{
"name": "arm_bottom_left2",
"parent": "arm_bottom_left",
"pivot": [9.25, 7.25, -4.5],
"pivot": [8.75, 7.25, -3.5],
"cubes": [
{"origin": [9.25, 5.75, -6.5], "size": [3, 3, 2], "inflate": 0.01, "uv": [42, 51]}
{"origin": [8.75, 5.75, -5.5], "size": [3, 3, 2], "inflate": 0.01, "uv": [0, 37], "mirror": true}
]
},
{
"name": "hand_bottom_left",
"parent": "arm_bottom_left2",
"pivot": [12.25, 7.25, -4.5],
"pivot": [11.75, 7.25, -3.5],
"cubes": [
{"origin": [12.25, 5.75, -6.5], "size": [2, 3, 2], "uv": [26, 41]}
{"origin": [11.75, 5.75, -5.5], "size": [2, 3, 2], "uv": [0, 0], "mirror": true}
]
},
{
"name": "thumb_bottom_left",
"parent": "hand_bottom_left",
"pivot": [13.75, 8.5, -6],
"pivot": [13.25, 8.5, -5.25],
"cubes": [
{"origin": [13.25, 8, -6.5], "size": [2, 1, 1], "inflate": 0.01, "uv": [58, 11]}
{"origin": [13.25, 8, -5.75], "size": [2, 1, 1], "uv": [48, 6], "mirror": true}
]
},
{
"name": "finger_bottom_left_index",
"parent": "hand_bottom_left",
"pivot": [14.25, 7.5, -4.5],
"pivot": [13.75, 6.75, -3.5],
"cubes": [
{"origin": [14.25, 7, -5.5], "size": [2, 1, 1], "uv": [57, 49]}
]
},
{
"name": "finger_bottom_left_pinky",
"parent": "hand_bottom_left",
"pivot": [14.25, 6.25, -4.5],
"cubes": [
{"origin": [14.25, 5.75, -5.5], "size": [2, 1, 1], "uv": [13, 53]}
]
},
{
"name": "crest",
"parent": "torso",
"pivot": [0, 11.75, -7],
"rotation": [8, 0, 0],
"cubes": [
{"origin": [-3, 14.75, -7], "size": [6, 2, 1], "inflate": 0.01, "uv": [41, 43]},
{"origin": [-4.5, 11.75, -7], "size": [9, 3, 1], "inflate": 0.01, "uv": [0, 41]}
]
},
{
"name": "left_crest",
"parent": "crest",
"pivot": [0, 11.75, -7]
},
{
"name": "crest2",
"parent": "left_crest",
"pivot": [-4, 11.75, -7],
"rotation": [0, 0, 55],
"cubes": [
{"origin": [-8.75, 14.75, -7], "size": [4, 2, 1], "pivot": [-5.75, 15.75, -6.5], "rotation": [0, -2.5, 0], "uv": [0, 65]}
]
},
{
"name": "crest3",
"parent": "left_crest",
"pivot": [-4, 11.75, -7],
"rotation": [0, 0, 35],
"cubes": [
{"origin": [-7.75, 13.25, -7], "size": [4, 2, 1], "pivot": [-4.75, 14.25, -6.5], "rotation": [0, -4, 0], "uv": [16, 55]}
]
},
{
"name": "crest4",
"parent": "left_crest",
"pivot": [-4.5, 11.75, -7],
"rotation": [0, 0, 12.5],
"cubes": [
{"origin": [-6.5, 11.75, -7], "size": [2, 2, 1], "pivot": [-4.5, 12.75, -6.5], "rotation": [0, -7.5, 0], "uv": [0, 59]}
]
},
{
"name": "right_crest",
"parent": "crest",
"pivot": [0, 11.75, -7]
},
{
"name": "crest5",
"parent": "right_crest",
"pivot": [4, 11.75, -7],
"rotation": [0, 0, -55],
"cubes": [
{"origin": [4.75, 14.75, -7], "size": [4, 2, 1], "pivot": [5.75, 15.75, -6.5], "rotation": [0, 2.5, 0], "uv": [54, 40]}
]
},
{
"name": "crest6",
"parent": "right_crest",
"pivot": [4, 11.75, -7],
"rotation": [0, 0, -35],
"cubes": [
{"origin": [3.75, 13.25, -7], "size": [4, 2, 1], "pivot": [4.75, 14.25, -6.5], "rotation": [0, 4, 0], "uv": [53, 33]}
]
},
{
"name": "crest7",
"parent": "right_crest",
"pivot": [4.5, 11.75, -7],
"rotation": [0, 0, -12.5],
"cubes": [
{"origin": [4.5, 11.75, -7], "size": [2, 2, 1], "pivot": [4.5, 12.75, -6.5], "rotation": [0, 7.5, 0], "uv": [20, 58]}
]
},
{
"name": "eyebrow_left",
"parent": "torso",
"pivot": [-1, 10.75, -7],
"rotation": [0, 0, 22.5],
"cubes": [
{"origin": [-5, 10.75, -7], "size": [4, 1, 0], "inflate": 0.03, "uv": [21, 65]}
]
},
{
"name": "eyebrow_right",
"parent": "torso",
"pivot": [1, 10.75, -7],
"rotation": [0, 0, -22.5],
"cubes": [
{"origin": [1, 10.75, -7], "size": [4, 1, 0], "inflate": 0.03, "uv": [0, 13]}
{"origin": [13.75, 5.75, -4.5], "size": [2, 2, 1], "uv": [16, 31], "mirror": true}
]
},
{
@@ -451,7 +300,7 @@
"parent": "body",
"pivot": [-3, 4, 0],
"cubes": [
{"origin": [-4.5, 1, -2], "size": [3, 4, 4], "uv": [31, 43]}
{"origin": [-4.5, 1, -2], "size": [3, 4, 4], "uv": [12, 37]}
]
},
{
@@ -459,15 +308,15 @@
"parent": "leg_right",
"pivot": [-3, 2, 0],
"cubes": [
{"origin": [-5, 0, -2.75], "size": [4, 2, 5], "uv": [35, 29]}
{"origin": [-5, 0, -1.75], "size": [4, 2, 4], "uv": [36, 27]}
]
},
{
"name": "foot_right2",
"parent": "foot_right1",
"pivot": [-3, 0, -2.75],
"pivot": [-3, 0, -1.75],
"cubes": [
{"origin": [-5, 0, -4.75], "size": [4, 2, 2], "inflate": 0.01, "uv": [20, 51]}
{"origin": [-5, 0, -3.75], "size": [4, 2, 2], "uv": [0, 42]}
]
},
{
@@ -475,7 +324,7 @@
"parent": "body",
"pivot": [3, 4, 0],
"cubes": [
{"origin": [1.5, 1, -2], "size": [3, 4, 4], "uv": [0, 0]}
{"origin": [1.5, 1, -2], "size": [3, 4, 4], "uv": [30, 33]}
]
},
{
@@ -483,15 +332,15 @@
"parent": "leg_left",
"pivot": [3, 2, 0],
"cubes": [
{"origin": [1, 0, -2.75], "size": [4, 2, 5], "uv": [18, 34]}
{"origin": [1, 0, -1.75], "size": [4, 2, 4], "uv": [18, 31]}
]
},
{
"name": "foot_left2",
"parent": "foot_left1",
"pivot": [3, 0, -2.75],
"pivot": [3, 0, -1.75],
"cubes": [
{"origin": [1, 0, -4.75], "size": [4, 2, 2], "inflate": 0.01, "uv": [50, 36]}
{"origin": [1, 0, -3.75], "size": [4, 2, 2], "uv": [26, 41]}
]
}
]
@@ -4,11 +4,11 @@
{
"description": {
"identifier": "geometry.golem",
"texture_width": 128,
"texture_height": 128,
"visible_bounds_width": 6,
"visible_bounds_height": 3.5,
"visible_bounds_offset": [0, 1.25, 0]
"texture_width": 64,
"texture_height": 64,
"visible_bounds_width": 3,
"visible_bounds_height": 2.5,
"visible_bounds_offset": [0, 0.75, 0]
},
"bones": [
{
@@ -18,311 +18,261 @@
{
"name": "body",
"parent": "golem",
"pivot": [0, 1, 0]
"pivot": [0, 0, 0]
},
{
"name": "torso",
"parent": "body",
"pivot": [0, 8, 0],
"pivot": [0, 8, 1.25],
"cubes": [
{"origin": [-10, 8, -10], "size": [20, 20, 20], "uv": [0, 40]},
{"origin": [-10, 8, -10], "size": [20, 20, 20], "inflate": 0.25, "uv": [0, 0]}
{"origin": [-7.5, 6, -6.25], "size": [15, 15, 15], "uv": [0, 0]}
]
},
{
"name": "head",
"parent": "torso",
"pivot": [0, 18, -10.2],
"pivot": [0, 12.75, -6.25],
"rotation": [5, 0, 0],
"cubes": [
{"origin": [-4, 15, -16.2], "size": [8, 6, 8], "inflate": 0.01, "uv": [60, 0]},
{"origin": [-5, 13.5, -13.19], "size": [10, 4, 5], "inflate": 0.01, "uv": [23, 80]},
{"origin": [-2.5, 15, -18.2], "size": [5, 4, 2], "inflate": 0.01, "uv": [60, 52]}
{"origin": [-3, 12.75, -9.25], "size": [6, 3, 4], "uv": [34, 56]},
{"origin": [-3, 10.75, -12.25], "size": [6, 5, 3], "uv": [0, 49]},
{"origin": [-3.5, 9.75, -9.25], "size": [7, 3, 4], "uv": [40, 37]}
]
},
{
"name": "eye_right",
"parent": "head",
"pivot": [3, 14, -9.75],
"cubes": [
{"origin": [3, 13, -12], "size": [0, 2, 4], "inflate": 0.01, "pivot": [3, 14, -9.75], "rotation": [5, 0, 0], "uv": [0, 53]}
]
},
{
"name": "eyelid_right",
"parent": "eye_right",
"pivot": [2.4, 13.97821, -9.99905],
"cubes": [
{"origin": [1.9, 13, -12], "size": [1, 2, 4], "inflate": 0.02, "pivot": [2.9, 14, -9.75], "rotation": [5, 0, 0], "uv": [4, 57]}
]
},
{
"name": "eye_left",
"parent": "head",
"pivot": [-3, 14, -9.75],
"cubes": [
{"origin": [-3, 13, -12], "size": [0, 2, 4], "inflate": 0.01, "pivot": [-3, 14, -9.75], "rotation": [5, 0, 0], "uv": [0, 53], "mirror": true}
]
},
{
"name": "eyelid_left",
"parent": "eye_left",
"pivot": [-2.4, 13.97821, -9.99905],
"cubes": [
{"origin": [-2.9, 13, -12], "size": [1, 2, 4], "inflate": 0.02, "pivot": [-2.9, 14, -9.75], "rotation": [5, 0, 0], "uv": [4, 57], "mirror": true}
]
},
{
"name": "jaw",
"parent": "head",
"pivot": [0, 15.5, -12.2],
"pivot": [0, 10.75, -9.25],
"cubes": [
{"origin": [-2.5, 13.5, -18.2], "size": [5, 2, 2], "uv": [0, 56]},
{"origin": [1.5, 15, -17.7], "size": [1, 1, 0], "pivot": [2, 15.5, -17.7], "rotation": [35.26439, -30, -54.73561], "uv": [2, 0]},
{"origin": [-2.5, 15, -17.7], "size": [1, 1, 0], "pivot": [-2, 15.5, -17.7], "rotation": [35.26439, 30, 54.73561], "uv": [0, 0]},
{"origin": [-4, 13.5, -16.2], "size": [8, 2, 4], "uv": [60, 14]}
{"origin": [-2.5, 9.75, -12.25], "size": [5, 1, 3], "uv": [38, 30]},
{"origin": [-2.25, 10.54952, -12.27181], "size": [1, 1, 0], "pivot": [-1.75, 11.24952, -12.27181], "rotation": [2.5, 0, 0], "uv": [11, 0]},
{"origin": [1.25, 10.54952, -12.27181], "size": [1, 1, 0], "pivot": [1.75, 11.24952, -12.27181], "rotation": [2.5, 0, 0], "uv": [11, 1]}
]
},
{
"name": "eyes",
"parent": "head",
"pivot": [0, 18, -14.2]
},
{
"name": "left_eye",
"parent": "eyes",
"pivot": [4.01, 18, -14.2],
"cubes": [
{"origin": [4.01, 17, -14.2], "size": [0, 2, 2], "inflate": 0.01, "uv": [15, 0]},
{"origin": [4.01, 17, -16.2], "size": [0, 2, 2], "inflate": 0.01, "uv": [0, 8]},
{"origin": [4.01, 17.5, -15.7], "size": [0, 1, 1], "inflate": 0.02, "uv": [2, 0]}
]
},
{
"name": "left_eyelid",
"parent": "eyes",
"pivot": [3.91, 18, -14.1],
"cubes": [
{"origin": [3.91, 17, -16.1], "size": [0, 2, 4], "inflate": 0.03, "uv": [91, -4]}
]
},
{
"name": "right_eyelid",
"parent": "eyes",
"pivot": [-3.91, 18, -14.1],
"cubes": [
{"origin": [-3.91, 17, -16.1], "size": [0, 2, 4], "inflate": 0.03, "uv": [94, -2], "mirror": true}
]
},
{
"name": "right_eye",
"parent": "eyes",
"pivot": [-4.01, 18, -14.2],
"cubes": [
{"origin": [-4.01, 17, -14.2], "size": [0, 2, 2], "inflate": 0.01, "uv": [0, 10]},
{"origin": [-4.01, 17, -16.2], "size": [0, 2, 2], "inflate": 0.01, "uv": [0, 0]},
{"origin": [-4.01, 17.5, -15.7], "size": [0, 1, 1], "inflate": 0.02, "uv": [0, 0]}
]
},
{
"name": "left_upper_arm",
"name": "arm_right",
"parent": "torso",
"pivot": [10, 18, -4],
"pivot": [-7.5, 11.75, -1.25],
"cubes": [
{"origin": [9, 15, -6], "size": [5, 5, 5], "uv": [0, 10]}
{"origin": [-9.5, 10.25, -2.75], "size": [2, 3, 3], "inflate": 0.01, "uv": [18, 49]}
]
},
{
"name": "left_lower_arm",
"parent": "left_upper_arm",
"pivot": [14, 17.5, -1],
"name": "arm_right2",
"parent": "arm_right",
"pivot": [-9.5, 11.75, 0.25],
"cubes": [
{"origin": [14, 15.5, -6], "size": [8, 4, 5], "uv": [83, 40]}
{"origin": [-13.5, 10.25, -2.75], "size": [4, 3, 3], "uv": [0, 6]}
]
},
{
"name": "left_hand",
"parent": "left_lower_arm",
"pivot": [22, 17, -3.5],
"name": "hand_right",
"parent": "arm_right2",
"pivot": [-13.5, 11.75, -1.25],
"cubes": [
{"origin": [21, 15.5, -6], "size": [5, 3, 5], "inflate": 0.01, "uv": [0, 48]}
{"origin": [-15.5, 10.25, -2.75], "size": [2, 3, 3], "inflate": 0.01, "uv": [45, 9]}
]
},
{
"name": "left_middle_finger",
"parent": "left_hand",
"pivot": [26, 18, -3.5],
"name": "finger_right",
"parent": "hand_right",
"pivot": [-15, 13, -1.25],
"cubes": [
{"origin": [26, 16, -4.5], "size": [3, 2, 2], "inflate": 0.01, "uv": [71, 87]}
{"origin": [-17, 12.5, -1.75], "size": [2, 1, 1], "uv": [48, 47]},
{"origin": [-18, 12.5, -1.25], "size": [1, 1, 0], "uv": [0, 8]}
]
},
{
"name": "left_middle_finger_claw",
"parent": "left_middle_finger",
"pivot": [29, 18, -3.5],
"name": "finger_right2",
"parent": "hand_right",
"pivot": [-15, 11, 0],
"cubes": [
{"origin": [29, 16, -3.5], "size": [3, 2, 0], "inflate": 0.01, "uv": [60, 2]}
{"origin": [-17, 10.5, -0.5], "size": [2, 1, 1], "uv": [34, 45]},
{"origin": [-18, 10.5, 0], "size": [1, 1, 0], "uv": [0, 7]}
]
},
{
"name": "left_thumb",
"parent": "left_hand",
"pivot": [24, 18, -6],
"name": "finger_right3",
"parent": "hand_right",
"pivot": [-15, 11, -2.5],
"cubes": [
{"origin": [23, 16, -9], "size": [2, 2, 3], "inflate": 0.01, "uv": [84, 0]}
{"origin": [-17, 10.5, -3], "size": [2, 1, 1], "uv": [0, 45]},
{"origin": [-18, 10.5, -2.5], "size": [1, 1, 0], "uv": [0, 6]}
]
},
{
"name": "left_thumb_claw",
"parent": "left_thumb",
"pivot": [24, 18, -9],
"cubes": [
{"origin": [24, 16, -12], "size": [0, 2, 3], "inflate": 0.01, "uv": [66, 55]}
]
},
{
"name": "left_pinky_finger",
"parent": "left_hand",
"pivot": [24, 18, -1],
"cubes": [
{"origin": [23, 16, -1], "size": [2, 2, 3], "inflate": 0.01, "uv": [63, 83]}
]
},
{
"name": "left_pinky_claw",
"parent": "left_pinky_finger",
"pivot": [24, 18, 2],
"cubes": [
{"origin": [24, 16, 2], "size": [0, 2, 3], "inflate": 0.01, "uv": [60, 55]}
]
},
{
"name": "right_upper_arm",
"name": "arm_left",
"parent": "torso",
"pivot": [-10, 18, -4],
"pivot": [7.5, 11.75, -1.25],
"cubes": [
{"origin": [-14, 15, -6], "size": [5, 5, 5], "uv": [0, 0]}
{"origin": [7.5, 10.25, -2.75], "size": [2, 3, 3], "inflate": 0.01, "uv": [14, 41]}
]
},
{
"name": "right_lower_arm",
"parent": "right_upper_arm",
"pivot": [-14, 17.5, -1],
"name": "arm_left2",
"parent": "arm_left",
"pivot": [9.5, 11.75, 0.25],
"cubes": [
{"origin": [-22, 15.5, -6], "size": [8, 4, 5], "uv": [80, 64]}
{"origin": [9.5, 10.25, -2.75], "size": [4, 3, 3], "uv": [0, 0]}
]
},
{
"name": "right_hand",
"parent": "right_lower_arm",
"pivot": [-22, 17, -3.5],
"name": "hand_left",
"parent": "arm_left2",
"pivot": [13.5, 11.75, -1.25],
"cubes": [
{"origin": [-26, 15.5, -6], "size": [5, 3, 5], "inflate": 0.01, "uv": [0, 40]}
{"origin": [13.5, 10.25, -2.75], "size": [2, 3, 3], "inflate": 0.01, "uv": [16, 30]}
]
},
{
"name": "right_middle_finger",
"parent": "right_hand",
"pivot": [-26, 18, -3.5],
"name": "finger_left",
"parent": "hand_left",
"pivot": [15, 13, -1.25],
"cubes": [
{"origin": [-29, 16, -4.5], "size": [3, 2, 2], "inflate": 0.01, "uv": [53, 86]}
{"origin": [15, 12.5, -1.75], "size": [2, 1, 1], "uv": [44, 34]},
{"origin": [17, 12.5, -1.25], "size": [1, 1, 0], "uv": [0, 2]}
]
},
{
"name": "right_middle_finger_claw",
"parent": "right_middle_finger",
"pivot": [-29, 18, -3.5],
"name": "finger_left2",
"parent": "hand_left",
"pivot": [15, 11, 0],
"cubes": [
{"origin": [-32, 16, -3.5], "size": [3, 2, 0], "inflate": 0.01, "uv": [60, 0]}
{"origin": [15, 10.5, -0.5], "size": [2, 1, 1], "uv": [34, 43]},
{"origin": [17, 10.5, 0], "size": [1, 1, 0], "uv": [0, 1]}
]
},
{
"name": "right_thumb",
"parent": "right_hand",
"pivot": [-24, 18, -6],
"name": "finger_left3",
"parent": "hand_left",
"pivot": [15, 11, -2.5],
"cubes": [
{"origin": [-25, 16, -9], "size": [2, 2, 3], "inflate": 0.01, "uv": [48, 80]}
{"origin": [15, 10.5, -3], "size": [2, 1, 1], "uv": [0, 43]},
{"origin": [17, 10.5, -2.5], "size": [1, 1, 0], "uv": [0, 0]}
]
},
{
"name": "right_thumb_claw",
"parent": "right_thumb",
"pivot": [-24, 18, -9],
"cubes": [
{"origin": [-24, 16, -12], "size": [0, 2, 3], "inflate": 0.01, "uv": [14, 55]}
]
},
{
"name": "right_pinky_finger",
"parent": "right_hand",
"pivot": [-24, 18, -1],
"cubes": [
{"origin": [-25, 16, -1], "size": [2, 2, 3], "inflate": 0.01, "uv": [74, 52]}
]
},
{
"name": "right_pinky_claw",
"parent": "right_pinky_finger",
"pivot": [-24, 18, 2],
"cubes": [
{"origin": [-24, 16, 2], "size": [0, 2, 3], "inflate": 0.01, "uv": [12, 53]}
]
},
{
"name": "left_upper_leg",
"name": "leg_right",
"parent": "body",
"pivot": [7, 10, 1],
"rotation": [-30, 0, 0],
"pivot": [-6.25, 8, 1.25],
"rotation": [-10, 0, 0],
"cubes": [
{"origin": [3, 4, -3], "size": [8, 7, 7], "uv": [80, 14]}
{"origin": [-8.75, 4, -1.75], "size": [5, 5, 6], "inflate": 0.01, "uv": [22, 30]}
]
},
{
"name": "left_lower_leg",
"parent": "left_upper_leg",
"pivot": [7, 4, -3],
"rotation": [30, 0, 0],
"name": "leg_right2",
"parent": "leg_right",
"pivot": [-6.25, 4, -1.75],
"rotation": [20, 0, 0],
"cubes": [
{"origin": [3.5, -2, -3], "size": [7, 6, 6], "uv": [80, 52]}
{"origin": [-8.25, 0, -1.75], "size": [4, 4, 5], "uv": [35, 47]}
]
},
{
"name": "left_foot",
"parent": "left_lower_leg",
"pivot": [7, -1, 0],
"name": "foot_right",
"parent": "leg_right2",
"pivot": [-6.25, 1, 0.75],
"rotation": [-10, 0, 0],
"cubes": [
{"origin": [3.5, -3, -5.5], "size": [7, 3, 9], "inflate": 0.01, "uv": [0, 80]}
{"origin": [-8.25, -1, -2.25], "size": [4, 2, 6], "inflate": 0.01, "uv": [20, 41]}
]
},
{
"name": "left_front_toes",
"parent": "left_foot",
"pivot": [7, 0, -5.5],
"name": "toe_right_back",
"parent": "foot_right",
"pivot": [-6.25, 1, 3.75],
"cubes": [
{"origin": [8, -3, -9.5], "size": [0, 3, 4], "inflate": 0.01, "uv": [58, 79]},
{"origin": [10, -3, -9.5], "size": [0, 3, 4], "inflate": 0.01, "uv": [63, 76]},
{"origin": [6, -3, -9.5], "size": [0, 3, 4], "inflate": 0.01, "uv": [0, 79]},
{"origin": [4, -3, -9.5], "size": [0, 3, 4], "inflate": 0.01, "uv": [84, 1]}
{"origin": [-6.25, -1, 3.75], "size": [0, 2, 2], "uv": [23, 28]}
]
},
{
"name": "left_back_toe",
"parent": "left_foot",
"pivot": [7, 0, 3.5],
"name": "toes_right_front",
"parent": "foot_right",
"pivot": [-6.25, 1, -1.75],
"cubes": [
{"origin": [7, -3, 3.5], "size": [0, 3, 4], "inflate": 0.01, "uv": [55, 76]}
{"origin": [-7.93026, -1, -5.14816], "size": [0, 2, 3], "pivot": [-8.42266, 0, -3.23498], "rotation": [0, 10, 0], "uv": [0, 31]},
{"origin": [-6.85, -1, -5.25], "size": [0, 2, 3], "uv": [0, 38]},
{"origin": [-5.65, -1, -5.25], "size": [0, 2, 3], "uv": [34, 38]},
{"origin": [-4.56777, -1, -5.14781], "size": [0, 2, 3], "pivot": [-4.07537, 0, -3.23463], "rotation": [0, -10, 0], "uv": [38, 31]}
]
},
{
"name": "right_upper_leg",
"name": "leg_left",
"parent": "body",
"pivot": [-7, 10, 1],
"rotation": [-30, 0, 0],
"pivot": [6.25, 8, 1.25],
"rotation": [-10, 0, 0],
"cubes": [
{"origin": [-11, 4, -3], "size": [8, 7, 7], "uv": [73, 73]}
{"origin": [3.75, 4, -1.75], "size": [5, 5, 6], "inflate": 0.01, "uv": [0, 30]}
]
},
{
"name": "right_lower_leg",
"parent": "right_upper_leg",
"pivot": [-7, 4, -3],
"rotation": [30, 0, 0],
"name": "leg_left2",
"parent": "leg_left",
"pivot": [6.25, 4, -1.75],
"rotation": [20, 0, 0],
"cubes": [
{"origin": [-10.5, -2, -3], "size": [7, 6, 6], "uv": [80, 28]}
{"origin": [4.25, 0, -1.75], "size": [4, 4, 5], "uv": [45, 0]}
]
},
{
"name": "right_foot",
"parent": "right_lower_leg",
"pivot": [-7, -1, 0],
"name": "foot_left",
"parent": "leg_left2",
"pivot": [6.25, 1, 0.75],
"rotation": [-10, 0, 0],
"cubes": [
{"origin": [-10.5, -3, -5.5], "size": [7, 3, 9], "inflate": 0.01, "uv": [60, 40]}
{"origin": [4.25, -1, -2.25], "size": [4, 2, 6], "inflate": 0.01, "uv": [0, 41]}
]
},
{
"name": "right_front_toes",
"parent": "right_foot",
"pivot": [-7, 0, -5.5],
"name": "toe_left_back",
"parent": "foot_left",
"pivot": [6.25, 1, 3.75],
"cubes": [
{"origin": [-8, -3, -9.5], "size": [0, 3, 4], "inflate": 0.01, "uv": [0, 76]},
{"origin": [-10, -3, -9.5], "size": [0, 3, 4], "inflate": 0.01, "uv": [60, 42]},
{"origin": [-6, -3, -9.5], "size": [0, 3, 4], "inflate": 0.01, "uv": [60, 39]},
{"origin": [-4, -3, -9.5], "size": [0, 3, 4], "inflate": 0.01, "uv": [60, 36]}
{"origin": [6.25, -1, 3.75], "size": [0, 2, 2], "uv": [11, 4]}
]
},
{
"name": "right_back_toe",
"parent": "right_foot",
"pivot": [-7, 0, 3.5],
"name": "toes_left_front",
"parent": "foot_left",
"pivot": [6.25, 1, -1.75],
"cubes": [
{"origin": [-7, -3, 3.5], "size": [0, 3, 4], "inflate": 0.01, "uv": [60, 0]}
{"origin": [7.93026, -1, -5.14816], "size": [0, 2, 3], "pivot": [8.42266, 0, -3.23498], "rotation": [0, -10, 0], "uv": [0, 29]},
{"origin": [6.85, -1, -5.25], "size": [0, 2, 3], "uv": [0, 27]},
{"origin": [5.65, -1, -5.25], "size": [0, 2, 3], "uv": [6, 9]},
{"origin": [4.56777, -1, -5.14781], "size": [0, 2, 3], "pivot": [4.07537, 0, -3.23463], "rotation": [0, 10, 0], "uv": [0, 9]}
]
}
]
@@ -18,7 +18,7 @@
{
"name": "body",
"parent": "tyrogue",
"pivot": [0, 9, 0]
"pivot": [0, 0, 0]
},
{
"name": "torso",
@@ -1,250 +0,0 @@
{
"format_version": "1.12.0",
"minecraft:geometry": [
{
"description": {
"identifier": "geometry.drifloon",
"texture_width": 64,
"texture_height": 32,
"visible_bounds_width": 4,
"visible_bounds_height": 3.5,
"visible_bounds_offset": [0, 1.25, 0]
},
"bones": [
{
"name": "drifloon",
"pivot": [0, 0, 0]
},
{
"name": "body",
"parent": "drifloon",
"pivot": [0, 15, 0],
"cubes": [
{"origin": [-5, 14.5, -5], "size": [10, 9, 10], "uv": [0, 0]}
]
},
{
"name": "eyes",
"parent": "body",
"pivot": [0, 19, -5.01]
},
{
"name": "eye_left",
"parent": "eyes",
"pivot": [3.5, 19, -5],
"cubes": [
{"origin": [3, 18, -4.81], "size": [1, 2, 0], "inflate": 0.2, "uv": [2, 0], "mirror": true}
]
},
{
"name": "eyelid_left",
"parent": "eye_left",
"pivot": [3.5, 19, -4.41],
"cubes": [
{"origin": [2.5, 17.5, -4.91], "size": [2, 3, 1], "inflate": 0.01, "uv": [0, 2]}
]
},
{
"name": "eye_right",
"parent": "eyes",
"pivot": [-3.5, 19, -5],
"cubes": [
{"origin": [-4, 18, -4.81], "size": [1, 2, 0], "inflate": 0.2, "uv": [2, 0], "mirror": true}
]
},
{
"name": "eyelid_right",
"parent": "eye_right",
"pivot": [-3.5, 19, -4.41],
"cubes": [
{"origin": [-4.5, 17.5, -4.91], "size": [2, 3, 1], "inflate": 0.01, "uv": [0, 6], "mirror": true}
]
},
{
"name": "mouth",
"parent": "body",
"pivot": [0, 18.5, -5],
"cubes": [
{"origin": [-2, 16.5, -5.01], "size": [4, 4, 0], "pivot": [0, 18.5, -5], "rotation": [0, 0, 45], "uv": [30, 6]}
]
},
{
"name": "mouth_open",
"parent": "mouth",
"pivot": [0, 18.5, -4.92],
"cubes": [
{"origin": [-0.5, 18, -4.92], "size": [1, 1, 0], "uv": [38, 6]}
]
},
{
"name": "cloud",
"parent": "body",
"pivot": [0, 23.5, 0],
"rotation": [0.00001, -30, -0.00003],
"cubes": [
{"origin": [-3, 23.5, -2.5], "size": [6, 3, 5], "uv": [0, 19]},
{"origin": [-3, 25, -2.5], "size": [6, 2, 0], "pivot": [0, 25, -2.5], "rotation": [15, 0, 0], "uv": [0, 27]},
{"origin": [-3, 23, -2.5], "size": [6, 2, 0], "pivot": [0, 25, -2.5], "rotation": [-15, 0, 0], "uv": [0, 29]},
{"origin": [-3, 25, 2.5], "size": [6, 2, 0], "pivot": [0, 25, 2.5], "rotation": [-15, 0, 0], "uv": [12, 27]},
{"origin": [-3, 23, 2.5], "size": [6, 2, 0], "pivot": [0, 25, 2.5], "rotation": [15, 0, 0], "uv": [12, 29]},
{"origin": [0, 26.5, -2.5], "size": [3, 0, 5], "pivot": [0, 26.5, 0], "rotation": [0, 0, -15], "uv": [22, 19]},
{"origin": [-3, 26.5, -2.5], "size": [3, 0, 5], "pivot": [0, 26.5, 0], "rotation": [0, 0, 15], "uv": [19, 24]},
{"origin": [-3, 25, -2.5], "size": [0, 2, 5], "pivot": [-3, 25, 0], "rotation": [0, 0, -15], "uv": [17, 14]},
{"origin": [-3, 23, -2.5], "size": [0, 2, 5], "pivot": [-3, 25, 0], "rotation": [0, 0, 15], "uv": [17, 16]}
]
},
{
"name": "cloud_end",
"parent": "cloud",
"pivot": [3, 23.5, 0],
"rotation": [0.00001, 0, -0.00003],
"cubes": [
{"origin": [3, 23.5, 0], "size": [3, 2, 0], "uv": [24, 29]}
]
},
{
"name": "arms",
"parent": "body",
"pivot": [0, 14.5, 0]
},
{
"name": "arm_left",
"parent": "arms",
"pivot": [1.5, 14.5, 0],
"cubes": [
{"origin": [1.5, 13.5, 0], "size": [3, 1, 0], "uv": [46, 0]}
]
},
{
"name": "arm_left2",
"parent": "arm_left",
"pivot": [4.5, 14, 0],
"cubes": [
{"origin": [4.5, 13.5, 0], "size": [4, 1, 0], "inflate": 0.01, "uv": [46, 1]}
]
},
{
"name": "arm_left3",
"parent": "arm_left2",
"pivot": [8.5, 14, 0],
"cubes": [
{"origin": [8.5, 13.5, 0], "size": [4, 1, 0], "uv": [46, 2]}
]
},
{
"name": "arm_left4",
"parent": "arm_left3",
"pivot": [12.5, 14, 0],
"cubes": [
{"origin": [12.5, 13.5, 0], "size": [4, 1, 0], "inflate": 0.01, "uv": [46, 3]}
]
},
{
"name": "arm_left5",
"parent": "arm_left4",
"pivot": [16.5, 14, 0],
"cubes": [
{"origin": [16.5, 13.5, 0], "size": [4, 1, 0], "uv": [46, 4]}
]
},
{
"name": "arm_end_left",
"parent": "arm_left5",
"pivot": [20.5, 14, 0],
"cubes": [
{"origin": [20.5, 11.5, 0], "size": [3, 5, 0], "uv": [40, 6]}
]
},
{
"name": "arm_right",
"parent": "arms",
"pivot": [-1.5, 14.5, 0],
"cubes": [
{"origin": [-4.5, 13.5, 0], "size": [3, 1, 0], "uv": [52, 0], "mirror": true}
]
},
{
"name": "arm_right2",
"parent": "arm_right",
"pivot": [-4.5, 14, 0],
"cubes": [
{"origin": [-8.5, 13.5, 0], "size": [4, 1, 0], "inflate": 0.01, "uv": [54, 1], "mirror": true}
]
},
{
"name": "arm_right3",
"parent": "arm_right2",
"pivot": [-8.5, 14, 0],
"cubes": [
{"origin": [-12.5, 13.5, 0], "size": [4, 1, 0], "uv": [54, 2], "mirror": true}
]
},
{
"name": "arm_right4",
"parent": "arm_right3",
"pivot": [-12.5, 14, 0],
"cubes": [
{"origin": [-16.5, 13.5, 0], "size": [4, 1, 0], "inflate": 0.01, "uv": [54, 3], "mirror": true}
]
},
{
"name": "arm_right5",
"parent": "arm_right4",
"pivot": [-16.5, 14, 0],
"cubes": [
{"origin": [-20.5, 13.5, 0], "size": [4, 1, 0], "uv": [54, 4], "mirror": true}
]
},
{
"name": "arm_end_right",
"parent": "arm_right5",
"pivot": [-20.5, 14, 0],
"cubes": [
{"origin": [-23.5, 11.5, 0], "size": [3, 5, 0], "uv": [46, 6], "mirror": true}
]
},
{
"name": "flaps",
"parent": "body",
"pivot": [0, 14.5, 0]
},
{
"name": "flap_front",
"parent": "flaps",
"pivot": [0, 14.5, -1],
"rotation": [-25, 0, 0],
"cubes": [
{"origin": [-2, 11.5, -1], "size": [4, 3, 0], "uv": [30, 0]}
]
},
{
"name": "flap_back",
"parent": "flaps",
"pivot": [0, 14.5, 1],
"rotation": [25, 0, 0],
"cubes": [
{"origin": [-2, 11.5, 1], "size": [4, 3, 0], "uv": [30, 3]}
]
},
{
"name": "flap_left",
"parent": "flaps",
"pivot": [1, 14.5, 0],
"rotation": [0, 0, -25],
"cubes": [
{"origin": [1, 11.5, -2], "size": [0, 3, 4], "uv": [38, -4]}
]
},
{
"name": "flap_right",
"parent": "flaps",
"pivot": [-1, 14.5, 0],
"rotation": [0, 0, 25],
"cubes": [
{"origin": [-1, 11.5, -2], "size": [0, 3, 4], "uv": [38, -1], "mirror": true}
]
}
]
}
]
}
@@ -1,292 +0,0 @@
{
"format_version": "1.12.0",
"minecraft:geometry": [
{
"description": {
"identifier": "geometry.drifblim",
"texture_width": 128,
"texture_height": 128,
"visible_bounds_width": 5,
"visible_bounds_height": 4.5,
"visible_bounds_offset": [0, 1.75, 0]
},
"bones": [
{
"name": "drifblim",
"pivot": [0, 0, 0]
},
{
"name": "body",
"parent": "drifblim",
"pivot": [0, 14, 0],
"cubes": [
{"origin": [-12, 14, -12], "size": [24, 23, 24], "uv": [0, 0]},
{"origin": [-9, 8.5, -9], "size": [18, 6, 18], "uv": [0, 47]},
{"origin": [-12, 14, -0.5], "size": [24, 23, 1], "inflate": 0.01, "uv": [76, 68]},
{"origin": [-9, 8.5, -0.5], "size": [18, 6, 1], "inflate": 0.01, "uv": [38, 93]}
]
},
{
"name": "eyes",
"parent": "body",
"pivot": [0, 26, -12.01]
},
{
"name": "eye_left",
"parent": "eyes",
"pivot": [10, 27.5, -12.01],
"cubes": [
{"origin": [9, 26, -12.01], "size": [2, 3, 0], "uv": [0, 0]}
]
},
{
"name": "eyelid_left",
"parent": "eye_left",
"pivot": [10, 27.5, -11.41],
"cubes": [
{"origin": [9, 26, -11.91], "size": [2, 3, 1], "inflate": 0.01, "uv": [0, 3]}
]
},
{
"name": "eye_right",
"parent": "eyes",
"pivot": [-10, 27.5, -12.01],
"cubes": [
{"origin": [-11, 26, -12.01], "size": [2, 3, 0], "uv": [4, 0], "mirror": true}
]
},
{
"name": "eyelid_right",
"parent": "eye_right",
"pivot": [-10, 27.5, -11.41],
"cubes": [
{"origin": [-11, 26, -11.91], "size": [2, 3, 1], "inflate": 0.01, "uv": [6, 3], "mirror": true}
]
},
{
"name": "mouth",
"parent": "body",
"pivot": [0, 23, -12.01],
"cubes": [
{"origin": [-5, 18, -12.01], "size": [10, 10, 0], "pivot": [0, 23, -12], "rotation": [0, 0, 45], "uv": [72, 0]}
]
},
{
"name": "mouth_open",
"parent": "mouth",
"pivot": [0, 23, -11.92],
"cubes": [
{"origin": [-1, 21.5, -11.92], "size": [2, 3, 0], "uv": [72, 10]}
]
},
{
"name": "arms",
"parent": "body",
"pivot": [0, 14, 0]
},
{
"name": "arm_front_left",
"parent": "arms",
"pivot": [9, 14, -9],
"rotation": [0, -45, 0]
},
{
"name": "arm_front_left_rotation",
"parent": "arm_front_left",
"pivot": [9, 14, -9],
"rotation": [30, 0, 0],
"cubes": [
{"origin": [6, 14, -17], "size": [6, 0, 12], "uv": [-12, 71]}
]
},
{
"name": "arm_front_left2",
"parent": "arm_front_left_rotation",
"pivot": [9, 14, -17],
"cubes": [
{"origin": [5, 14, -28], "size": [8, 0, 11], "inflate": 0.01, "uv": [13, 71]}
]
},
{
"name": "hand_front_left",
"parent": "arm_front_left2",
"pivot": [9, 14, -28],
"cubes": [
{"origin": [4, 14, -39], "size": [10, 0, 11], "inflate": 0.02, "uv": [45, 71]}
]
},
{
"name": "arm_back_left",
"parent": "arms",
"pivot": [9, 14, 9],
"rotation": [0, 45, 0]
},
{
"name": "arm_back_left_rotation",
"parent": "arm_back_left",
"pivot": [9, 14, 9],
"rotation": [-30, 0, 0],
"cubes": [
{"origin": [6, 14, 5], "size": [6, 0, 12], "uv": [-12, 83]}
]
},
{
"name": "arm_back_left2",
"parent": "arm_back_left_rotation",
"pivot": [9, 14, 17],
"cubes": [
{"origin": [5, 14, 17], "size": [8, 0, 11], "inflate": 0.01, "uv": [13, 82]}
]
},
{
"name": "hand_back_left",
"parent": "arm_back_left2",
"pivot": [9, 14, 28],
"cubes": [
{"origin": [4, 14, 28], "size": [10, 0, 11], "inflate": 0.02, "uv": [45, 82]}
]
},
{
"name": "arm_front_right",
"parent": "arms",
"pivot": [-9, 14, -9],
"rotation": [0, 45, 0]
},
{
"name": "arm_front_right_rotation",
"parent": "arm_front_right",
"pivot": [-9, 14, -9],
"rotation": [30, 0, 0],
"cubes": [
{"origin": [-12, 14, -17], "size": [6, 0, 12], "uv": [0, 71], "mirror": true}
]
},
{
"name": "arm_front_right2",
"parent": "arm_front_right_rotation",
"pivot": [-9, 14, -17],
"cubes": [
{"origin": [-13, 14, -28], "size": [8, 0, 11], "inflate": 0.01, "uv": [29, 71], "mirror": true}
]
},
{
"name": "hand_front_right",
"parent": "arm_front_right2",
"pivot": [-9, 14, -28],
"cubes": [
{"origin": [-14, 14, -39], "size": [10, 0, 11], "inflate": 0.02, "uv": [65, 92], "mirror": true}
]
},
{
"name": "arm_back_right",
"parent": "arms",
"pivot": [-9, 14, 9],
"rotation": [0, -45, 0]
},
{
"name": "arm_back_right_rotation",
"parent": "arm_back_right",
"pivot": [-9, 14, 9],
"rotation": [-30, 0, 0],
"cubes": [
{"origin": [-12, 14, 5], "size": [6, 0, 12], "uv": [0, 83], "mirror": true}
]
},
{
"name": "arm_back_right2",
"parent": "arm_back_right_rotation",
"pivot": [-9, 14, 17],
"cubes": [
{"origin": [-13, 14, 17], "size": [8, 0, 11], "inflate": 0.01, "uv": [29, 82], "mirror": true}
]
},
{
"name": "hand_back_right",
"parent": "arm_back_right2",
"pivot": [-9, 14, 28],
"cubes": [
{"origin": [-14, 14, 28], "size": [10, 0, 11], "inflate": 0.02, "uv": [85, 92], "mirror": true}
]
},
{
"name": "cloud",
"parent": "body",
"pivot": [0, 37, 0],
"cubes": [
{"origin": [-5.5, 36, -6], "size": [11, 7, 12], "uv": [80, 0]},
{"origin": [-5.5, 40, -6], "size": [11, 3, 0], "pivot": [-0.5, 40, -6], "rotation": [20, 0, 0], "uv": [96, 31]},
{"origin": [-5.5, 37, -6], "size": [11, 3, 0], "pivot": [-0.5, 40, -6], "rotation": [-20, 0, 0], "uv": [96, 34]},
{"origin": [-5.5, 40, 6], "size": [11, 3, 0], "pivot": [-0.5, 40, 6], "rotation": [-22.5, 0, 0], "uv": [96, 37]},
{"origin": [-5.5, 37, 6], "size": [11, 3, 0], "pivot": [-0.5, 40, 6], "rotation": [20, 0, 0], "uv": [96, 40]},
{"origin": [-5.5, 43, -6], "size": [11, 0, 6], "pivot": [-0.5, 43, 0], "rotation": [-15, 0, 0], "uv": [92, 43]},
{"origin": [-5.5, 43, 0], "size": [11, 0, 6], "pivot": [-0.5, 43, 0], "rotation": [15, 0, 0], "uv": [92, 49]},
{"origin": [5.5, 40, -6], "size": [0, 3, 12], "pivot": [5.5, 40, 0], "rotation": [0, 0, 20], "uv": [96, 7]},
{"origin": [5.5, 37, -6], "size": [0, 3, 12], "pivot": [5.5, 40, 0], "rotation": [0, 0, -20], "uv": [96, 10]},
{"origin": [-5.5, 40, -6], "size": [0, 3, 12], "pivot": [-5.5, 40, 0], "rotation": [0, 0, -20], "uv": [96, 13], "mirror": true},
{"origin": [-5.5, 37, -6], "size": [0, 3, 12], "pivot": [-5.5, 40, 0], "rotation": [0, 0, 20], "uv": [96, 16], "mirror": true}
]
},
{
"name": "cloud_end",
"parent": "cloud",
"pivot": [0, 37.5, -6],
"rotation": [-10, 0, 0],
"cubes": [
{"origin": [0, 37.5, -12], "size": [0, 3, 7], "uv": [98, 48]}
]
},
{
"name": "body_bottom",
"parent": "body",
"pivot": [0, 8.5, 0],
"cubes": [
{"origin": [-3, 6.5, -3], "size": [6, 3, 6], "uv": [54, 56]},
{"origin": [3, 6.5, -0.5], "size": [0, 3, 1], "inflate": 0.01, "uv": [36, 92]},
{"origin": [-3, 6.5, -0.5], "size": [0, 3, 1], "inflate": 0.01, "uv": [36, 95], "mirror": true}
]
},
{
"name": "flaps",
"parent": "body_bottom",
"pivot": [0, 6.5, 0]
},
{
"name": "flap_front",
"parent": "flaps",
"pivot": [0, 6.5, -3],
"rotation": [-25, 0, 0],
"cubes": [
{"origin": [-5, -0.5, -3], "size": [10, 7, 0], "uv": [54, 47]}
]
},
{
"name": "flap_back",
"parent": "flaps",
"pivot": [0, 6.5, 3],
"rotation": [25, 0, 0],
"cubes": [
{"origin": [-5, -0.5, 3], "size": [10, 7, 0], "uv": [74, 47]}
]
},
{
"name": "flap_left",
"parent": "flaps",
"pivot": [3, 6.5, 0],
"rotation": [0, 0, -25],
"cubes": [
{"origin": [3, -0.5, -5], "size": [0, 7, 10], "uv": [78, 44]}
]
},
{
"name": "flap_right",
"parent": "flaps",
"pivot": [-3, 6.5, 0],
"rotation": [0, 0, 25],
"cubes": [
{"origin": [-3, -0.5, -5], "size": [0, 7, 10], "uv": [78, 51], "mirror": true}
]
}
]
}
]
}
@@ -7,13 +7,7 @@
"poser": "cobblemon:noctowl",
"model": "cobblemon:noctowl.geo",
"texture": "cobblemon:textures/pokemon/0164_noctowl/noctowl.png",
"layers": [
{
"name": "emissive",
"texture": "cobblemon:textures/pokemon/0164_noctowl/noctowl_emissive.png",
"emissive": "true"
}
]
"layers": []
},
{
"aspects": [
@@ -1,19 +0,0 @@
{
"species": "cobblemon:drifloon",
"order": 0,
"variations": [
{
"aspects": [],
"poser": "cobblemon:drifloon",
"model": "cobblemon:drifloon.geo",
"texture": "cobblemon:textures/pokemon/0425_drifloon/drifloon.png",
"layers": []
},
{
"aspects": [
"shiny"
],
"texture": "cobblemon:textures/pokemon/0425_drifloon/drifloon_shiny.png"
}
]
}
@@ -1,19 +0,0 @@
{
"species": "cobblemon:drifblim",
"order": 0,
"variations": [
{
"aspects": [],
"poser": "cobblemon:drifblim",
"model": "cobblemon:drifblim.geo",
"texture": "cobblemon:textures/pokemon/0426_drifblim/drifblim.png",
"layers": []
},
{
"aspects": [
"shiny"
],
"texture": "cobblemon:textures/pokemon/0426_drifblim/drifblim_shiny.png"
}
]
}
@@ -47,8 +47,6 @@
"item.cobblemon.yellow_apricorn": "Gelbe Aprikoko",
"item.cobblemon.vivichoke_seeds": "Vitalknospensamen",
"item.cobblemon.vivichoke": "Vitalknospe",
"item.cobblemon.apricorn_boat": "Aprikoko Boot",
"item.cobblemon.apricorn_chest_boat": "Aprikoko Boot mit Truhe",
"item.cobblemon.link_cable": "Linkkabel",
"item.cobblemon.dragon_scale": "Drachenhaut",
"item.cobblemon.kings_rock": "Königsstein",
@@ -150,10 +148,8 @@
"item.cobblemon.choice_band": "Wahlband",
"item.cobblemon.choice_scarf": "Wahlschal",
"item.cobblemon.choice_specs": "Wahlbrille",
"item.cobblemon.cleanse_tag": "Schutzsticker",
"item.cobblemon.dragon_fang": "Drachenzahn",
"item.cobblemon.exp_share": "EP-Teiler",
"item.cobblemon.fairy_feather": "Feendaune",
"item.cobblemon.focus_band": "Fokusband",
"item.cobblemon.hard_stone": "Granitstein",
"item.cobblemon.heavy_duty_boots": "Plateauschuhe",
@@ -193,11 +189,6 @@
"item.cobblemon.power_bracer": "Machtreif",
"item.cobblemon.power_lens": "Machtlinse",
"item.cobblemon.power_weight": "Machtgewicht",
"item.cobblemon.flame_orb": "Heiß-Orb",
"item.cobblemon.light_orb": "Light Orb",
"item.cobblemon.smoke_ball": "Rauchball",
"item.cobblemon.toxic_orb": "Toxik-Orb",
"item.cobblemon.life_orb": "Life Orb",
"item.cobblemon.poke_ball.tooltip": "1× Fangquote",
"item.cobblemon.slate_ball.tooltip": "1× Fangquote",
"item.cobblemon.azure_ball.tooltip": "1× Fangquote",
@@ -245,8 +236,8 @@
"item.cobblemon.roasted_leek": "Gebratener Lauch",
"item.cobblemon.leek_and_potato_stew": "Lauch-Kartoffeleintopf",
"item.cobblemon.braised_vivichoke": "Geschmorte Vitalknospe",
"item.cobblemon.vivichoke_dip": "Vitalknospen-Dip",
"item.cobblemon.berry_juice": "Beerensaft",
"item.cobblemon.vivichoke_dip": "Vivichoke Dip",
"item.cobblemon.berry_juice": "Berry Juice",
"item.cobblemon.remedy": "Arznei",
"item.cobblemon.fine_remedy": "Superarznei",
"item.cobblemon.superb_remedy": "Hyperarznei",
@@ -288,7 +279,6 @@
"block.cobblemon.apricorn_leaves": "Aprikoko Blätter",
"block.cobblemon.apricorn_fence": "Aprikoko Zaun",
"block.cobblemon.apricorn_sign": "Aprikoko Holzschild",
"block.cobblemon.apricorn_hanging_sign": "Aprikokoholzängeschild",
"block.cobblemon.apricorn_stairs": "Aprikoko Treppe",
"block.cobblemon.apricorn_pressure_plate": "Aprikoko Druckplatte",
"block.cobblemon.apricorn_button": "Aprikokoknopf",
@@ -316,7 +306,7 @@
"block.cobblemon.white_mint": "Weiße Minzesamen",
"block.cobblemon.vivichoke_seeds": "Vitalknospensamen",
"block.cobblemon.pep_up_flower": "Ätherkraut",
"block.cobblemon.potted_pep_up_flower": "Eingetopfte Ätherkraut Blume",
"block.cobblemon.potted_pep_up_flower": "Potted Pep-Up Flower",
"cobblemon.overflow_no_pc": "Deine Party war voll und du hast keinen PC!",
"cobblemon.overflow_no_space": "Deine und %1$s Party war voll!",
"cobblemon.overflow_to_pc": "Deine Party war voll! %1$s wurde zu %2$s hinzugefügt.",
@@ -431,58 +421,58 @@
"cobblemon.drop.item.inventory": "Du erhältst %2$s (%1$sx).",
"cobblemon.drop.item.full": "Dein Inventar war voll, %1$s wurde fallen gelassen.",
"cobblemon.mint.interact": "%1$s's Statuswerte haben sich geändert!",
"cobblemon.mint.same_nature": "%1$s Statuswerte bleiben unverändert, von %2$s.",
"cobblemon.mint.same_nature": "%1$s's stats seem unaffected by the %2$s.",
"itemGroup.cobblemon.plants": "Pflanzen",
"item.cobblemon.aguav_berry": "Gauvebeere",
"item.cobblemon.aguav_berry.tooltip": "Stellt 1/3 der KP bei 1/4 oder weniger verbleibenden KP wieder her; \nbewirkt Verwirrung bei Pokémon mit einem -SpV Wesen",
"item.cobblemon.aguav_berry.tooltip": "Restores 1/3 max HP at 1/4 max HP or less; confuses if -SpD Nature",
"item.cobblemon.apicot_berry": "Apikobeere",
"item.cobblemon.apicot_berry.tooltip": "Erhöht die Sp. Verteidigung des Trägers um eine Stufe, bei 1/4 oder weniger verbleibenden KP",
"item.cobblemon.apicot_berry.tooltip": "Raises holder's Sp. Def by 1 stage when at 1/4 max HP or less",
"item.cobblemon.aspear_berry": "Wilbirbeere",
"item.cobblemon.aspear_berry.tooltip": "Der Träger wird geheilt, wenn er eingefroren ist",
"item.cobblemon.aspear_berry.tooltip": "Holder is cured if it is frozen",
"item.cobblemon.babiri_berry": "Babiribeere",
"item.cobblemon.babiri_berry.tooltip": "Als getragenes Item schwächt diese Beere sehr effektive gegnerische Attacken vom Typ Stahl",
"item.cobblemon.babiri_berry.tooltip": "Halves damage taken from a supereffective Steel-type attack",
"item.cobblemon.belue_berry": "Myrtilbeere",
"item.cobblemon.belue_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.belue_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.bluk_berry": "Morbbeere",
"item.cobblemon.bluk_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.bluk_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.charti_berry": "Chiaribeere",
"item.cobblemon.charti_berry.tooltip": "Als getragenes Item schwächt diese Beere sehr effektive gegnerische Attacken vom Typ Gestein",
"item.cobblemon.charti_berry.tooltip": "Halves damage taken from a supereffective Rock-type attack",
"item.cobblemon.cheri_berry": "Amrenabeere",
"item.cobblemon.cheri_berry.tooltip": "Als getragenes Item heilt diese Beere das Pokémon von Paralyse",
"item.cobblemon.cheri_berry.tooltip": "Holder cures itself if it is paralyzed",
"item.cobblemon.chesto_berry": "Maronbeere",
"item.cobblemon.chesto_berry.tooltip": "Als getragenes Item lässt diese Beere das Pokémon aufwachen, wenn es in Schlaf versetzt wird",
"item.cobblemon.chesto_berry.tooltip": "Holder wakes up if it is asleep",
"item.cobblemon.chilan_berry": "Latchibeere",
"item.cobblemon.chilan_berry.tooltip": "Als getragenes Item schwächt diese Beere eine gegnerische Attacke vom Typ Normal",
"item.cobblemon.chilan_berry.tooltip": "Halves damage taken from a Normal-type attack",
"item.cobblemon.chople_berry": "Rospelbeere",
"item.cobblemon.chople_berry.tooltip": "Als getragenes Item schwächt diese Beere sehr effektive gegnerische Attacken vom Typ Kampf.",
"item.cobblemon.coba_berry": "Kobabeere",
"item.cobblemon.coba_berry.tooltip": "Halves damage taken from a supereffective Flying-type attack",
"item.cobblemon.coba_berry.tooltip": "Als getragenes Item schwächt diese Beere sehr effektive gegnerische Attacken vom Typ Flug.",
"item.cobblemon.colbur_berry": "Burleobeere",
"item.cobblemon.colbur_berry.tooltip": "Als getragenes Item schwächt diese Beere sehr effektive gegnerische Attacken vom Typ Unlicht.",
"item.cobblemon.cornn_berry": "Saimbeere",
"item.cobblemon.cornn_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.cornn_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.custap_berry": "Eipfelbeere",
"item.cobblemon.custap_berry.tooltip": "Holder moves first in its priority bracket when at 1/4 max HP or less",
"item.cobblemon.durin_berry": "Durinbeere",
"item.cobblemon.durin_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.durin_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.enigma_berry": "Enigmabeere",
"item.cobblemon.enigma_berry.tooltip": "Als getragenes Item füllt diese Beere 1/4 KP eines Pokémon auf, wenn es von sehr effektiven Attacken getroffen wird.",
"item.cobblemon.figy_berry": "Giefebeere",
"item.cobblemon.figy_berry.tooltip": "Stellt 1/3 der KP bei 1/4 oder weniger verbleibenden KP wieder her; \nbewirkt Verwirrung bei Pokémon mit einem -Atk Wesen",
"item.cobblemon.figy_berry.tooltip": "Restores 1/3 max HP at 1/4 max HP or less; confuses if -Atk Nature",
"item.cobblemon.ganlon_berry": "Linganbeere",
"item.cobblemon.ganlon_berry.tooltip": "Erhöht die Verteidigung des Trägers um eine Stufe, bei 1/4 oder weniger verbleibenden KP",
"item.cobblemon.ganlon_berry.tooltip": "Raises holder's Defense by 1 stage when at 1/4 max HP or less",
"item.cobblemon.grepa_berry": "Labrusbeere",
"item.cobblemon.grepa_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.grepa_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.haban_berry": "Terirobeere",
"item.cobblemon.haban_berry.tooltip": "Als getragenes Item schwächt diese Beere sehr effektive gegnerische Attacken vom Typ Drache",
"item.cobblemon.haban_berry.tooltip": "Halves damage taken from a supereffective Dragon-type attack",
"item.cobblemon.hondew_berry": "Honmelbeere",
"item.cobblemon.hondew_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.hondew_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.hopo_berry": "Pfohbeere",
"item.cobblemon.hopo_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.hopo_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.iapapa_berry": "Yapabeere",
"item.cobblemon.iapapa_berry.tooltip": "Restores 1/3 max HP at 1/4 max HP or less; confuses if -Def Nature",
"item.cobblemon.jaboca_berry": "Jabocabeere",
"item.cobblemon.jaboca_berry.tooltip": "Der Angreifer verliert 1/8 seiner max. KP, wenn der Träger von einer physischen Attacke getroffen wird",
"item.cobblemon.jaboca_berry.tooltip": "If holder is hit by a physical move, attacker loses 1/8 of its max HP",
"item.cobblemon.kasib_berry": "Zitarzbeere",
"item.cobblemon.kasib_berry.tooltip": "Halves damage taken from a supereffective Ghost-type attack",
"item.cobblemon.kebia_berry": "Grarzbeere",
@@ -490,7 +480,7 @@
"item.cobblemon.kee_berry": "Akibeere",
"item.cobblemon.kee_berry.tooltip": "Raises holder's Defense by 1 stage after it is hit by a physical attack",
"item.cobblemon.kelpsy_berry": "Setangbeere",
"item.cobblemon.kelpsy_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.kelpsy_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.lansat_berry": "Lansatbeere",
"item.cobblemon.lansat_berry.tooltip": "Holder gains the Focus Energy effect when at 1/4 max HP or less",
"item.cobblemon.leppa_berry": "Jonagobeere",
@@ -502,45 +492,45 @@
"item.cobblemon.mago_berry": "Magobeere",
"item.cobblemon.mago_berry.tooltip": "Restores 1/3 max HP at 1/4 max HP or less; confuses if -Spe Nature",
"item.cobblemon.magost_berry": "Magostbeere",
"item.cobblemon.magost_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.magost_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.maranga_berry": "Tarabeere",
"item.cobblemon.maranga_berry.tooltip": "Raises holder's Sp. Def by 1 stage after it is hit by a special attack",
"item.cobblemon.micle_berry": "Wunfrubeere",
"item.cobblemon.micle_berry.tooltip": "Holder's next move has 1.2x accuracy when at 1/4 max HP or less",
"item.cobblemon.nanab_berry": "Nanabbeere",
"item.cobblemon.nanab_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.nanab_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.touga_berry": "Tougabeere",
"item.cobblemon.touga_berry.tooltip": "Holder is cured if it is confused",
"item.cobblemon.nomel_berry": "Tronzibeere",
"item.cobblemon.nomel_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.nomel_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.occa_berry": "Koakobeere",
"item.cobblemon.occa_berry.tooltip": "Halves damage taken from a supereffective Fire-type attack",
"item.cobblemon.oran_berry": "Sinelbeere",
"item.cobblemon.oran_berry.tooltip": "Restores 10 HP when at 1/2 max HP or less",
"item.cobblemon.pamtre_berry": "Pallmbeere",
"item.cobblemon.pamtre_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.pamtre_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.passho_berry": "Foepasbeere",
"item.cobblemon.passho_berry.tooltip": "Als getragenes Item schwächt diese Beere sehr effektive gegnerische Attacken vom Typ Wasser",
"item.cobblemon.passho_berry.tooltip": "Halves damage taken from a supereffective Water-type attack",
"item.cobblemon.payapa_berry": "Pyapabeere",
"item.cobblemon.payapa_berry.tooltip": "Als getragenes Item schwächt diese Beere sehr effektive gegnerische Attacken vom Typ Psycho",
"item.cobblemon.payapa_berry.tooltip": "Halves damage taken from a supereffective Psychic-type attack",
"item.cobblemon.pecha_berry": "Pirsifbeere",
"item.cobblemon.pecha_berry.tooltip": "Der Träger wird geheilt, wenn er vergiftet ist",
"item.cobblemon.pecha_berry.tooltip": "Holder is cured if it is poisoned",
"item.cobblemon.persim_berry": "Persimbeere",
"item.cobblemon.persim_berry.tooltip": "Der Träger wird geheilt, wenn er verwirrt ist",
"item.cobblemon.persim_berry.tooltip": "Holder is cured if it is confused",
"item.cobblemon.petaya_berry": "Tahaybeere",
"item.cobblemon.petaya_berry.tooltip": "Erhöht die Sp. Angriff des Trägers um eine Stufe, bei 1/4 oder weniger verbleibenden KP",
"item.cobblemon.petaya_berry.tooltip": "Raises holder's Sp. Atk by 1 stage when at 1/4 max HP or less",
"item.cobblemon.pinap_berry": "Sananabeere",
"item.cobblemon.pinap_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.pinap_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.pomeg_berry": "Granabeere",
"item.cobblemon.pomeg_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.pomeg_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.qualot_berry": "Qualotbeere",
"item.cobblemon.qualot_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.qualot_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.rabuta_berry": "Rabutabeere",
"item.cobblemon.rabuta_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.rabuta_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.rawst_berry": "Fragiabeere",
"item.cobblemon.rawst_berry.tooltip": "Holder is cured if it is burned",
"item.cobblemon.razz_berry": "Himmihbeere",
"item.cobblemon.razz_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.razz_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.rindo_berry": "Grindobeere",
"item.cobblemon.rindo_berry.tooltip": "Halves damage taken from a supereffective Grass-type attack",
"item.cobblemon.roseli_berry": "Hibisbeere",
@@ -554,19 +544,19 @@
"item.cobblemon.sitrus_berry": "Tsitrubeere",
"item.cobblemon.sitrus_berry.tooltip": "Restores 1/4 max HP when at 1/2 max HP or less",
"item.cobblemon.spelon_berry": "Kiwanbeere",
"item.cobblemon.spelon_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.spelon_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.starf_berry": "Krambobeere",
"item.cobblemon.starf_berry.tooltip": "Raises a random stat by 2 when at 1/4 max HP or less",
"item.cobblemon.tamato_berry": "Tamotbeere",
"item.cobblemon.tamato_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.tamato_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.tanga_berry": "Tanigabeere",
"item.cobblemon.tanga_berry.tooltip": "Halves damage taken from a supereffective Bug-type attack",
"item.cobblemon.wacan_berry": "Kerzalbeere",
"item.cobblemon.wacan_berry.tooltip": "Halves damage taken from a supereffective Electric-type attack",
"item.cobblemon.watmel_berry": "Wasmelbeere",
"item.cobblemon.watmel_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.watmel_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.wepear_berry": "Nirbebeere",
"item.cobblemon.wepear_berry.tooltip": "Kann vom Träger nicht gegessen werden",
"item.cobblemon.wepear_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.wiki_berry": "Wikibeere",
"item.cobblemon.wiki_berry.tooltip": "Restores 1/3 max HP at 1/4 max HP or less; confuses if -SpA Nature",
"item.cobblemon.yache_berry": "Kiroyabeere",
@@ -624,9 +614,9 @@
"advancements.cobblemon.healing_machine": "Heilkraft",
"advancements.cobblemon.healing_machine.description": "Warte bis die Heilmaschine aufgeladen ist und heile dann dein Team",
"advancements.cobblemon.obtain_leek": "There's a Leek in the Boat!",
"advancements.cobblemon.obtain_leek.description": "Finde einen Fitlauch, eine wilde Pflanze, die im Süßwasser wächst",
"advancements.cobblemon.obtain_leek.description": "Obtain a Medicinal Leek, a wild crop that grows in freshwater",
"advancements.cobblemon.medicinal_brew": "Lokale Apotheke",
"advancements.cobblemon.medicinal_brew.description": "Braue einen Fitlauch, um die Basis für deine Heilbedürfnisse zu schaffen",
"advancements.cobblemon.medicinal_brew.description": "Brew a Medicinal Leek to create the basis for your healing needs",
"advancements.cobblemon.brew_potion": "You cannot handle my Potions",
"advancements.cobblemon.brew_potion.description": "Brew an Oran Berry into Medicinal Brew to create a Potion",
"advancements.cobblemon.brew_full_restore": "Champion's Choice",
@@ -651,22 +641,22 @@
"advancements.cobblemon.obtain_berry.description": "Obtain any Berry, wild crops that grow on the surface and have many uses",
"advancements.cobblemon.obtain_mutated_berry": "An Unexpected Result",
"advancements.cobblemon.obtain_mutated_berry.description": "Plant Berry Trees of different types next to each other and witness Mutation in action",
"advancements.cobblemon.obtain_all_berries": "Hoppla, all die Beeren!",
"advancements.cobblemon.obtain_all_berries": "Oops, all Berries!",
"advancements.cobblemon.obtain_all_berries.description": "Obtain one of every Berry in Cobblemon",
"advancements.cobblemon.use_pasture": "Free Roam: Enabled",
"advancements.cobblemon.use_pasture.description": "Craft a Pasture Block and allow your friends to wander",
"advancements.cobblemon.catch_all_vivillon": "Vivillonaire",
"advancements.cobblemon.catch_all_vivillon.description": "Besitze ein Vivillon mit jedem Muster",
"advancements.cobblemon.catch_all_vivillon": "Gemusterte Flügel",
"advancements.cobblemon.catch_all_vivillon.description": "Obtain all patterns of Vivillon",
"advancements.cobblemon.evolve_veevees": "Valued Veevees",
"advancements.cobblemon.evolve_veevees.description": "Entwickle Evoli in 8 verschiedene Formen weiter",
"advancements.cobblemon.evolve_shedinja": "Phantomhülle",
"advancements.cobblemon.evolve_veevees.description": "Evolve Eevee into 8 different forms",
"advancements.cobblemon.evolve_shedinja": "Ghost in the Shell",
"advancements.cobblemon.evolve_shedinja.description": "Have an extra Poké Ball in your inventory and obtain a Shedinja",
"advancements.cobblemon.trade_pokemon": "Pass gut auf es auf!",
"advancements.cobblemon.trade_pokemon.description": "Tausche ein Pokémon mit einem anderen Trainer",
"advancements.cobblemon.trade_shelmet_karrablast": "Ich möchte einen Diebstahl melden!",
"advancements.cobblemon.trade_shelmet_karrablast.description": "Tausche ein Schnuthelm mit einem Laukaps",
"advancements.cobblemon.trade_pokemon": "Take Good Care!",
"advancements.cobblemon.trade_pokemon.description": "Trade a Pokémon with another Trainer",
"advancements.cobblemon.trade_shelmet_karrablast": "I'd like to report a theft!",
"advancements.cobblemon.trade_shelmet_karrablast.description": "Trade a Shelmet and Karrablast",
"advancements.cobblemon.max_level_baby": "Darwin? Kenn ich nicht.",
"advancements.cobblemon.max_level_baby.description": "Bringe ein Basis-Pokémon einer Entwicklungsreihe auf Level 100",
"advancements.cobblemon.max_level_baby.description": "Take a first-stage Pokémon capable of evolution up to level 100",
"advancements.cobblemon.use_candy": "Süßer Zahn",
"advancements.cobblemon.use_candy.description": "Verwende ein beliebiges EP-Bonbon auf einem Pokémon",
"advancements.cobblemon.own_zangoose_seviper": "Freunde widerwillen",
@@ -691,7 +681,7 @@
"cobblemon.battle.crit": "Ein Volltreffer!",
"cobblemon.battle.nothing": "Nichts geschieht!",
"cobblemon.battle.clearallboost": "Werteveränderungen wurden zurückgesetzt.",
"cobblemon.battle.clearallnegativeboost": "Alle negativen Statuswertveränderungen von %1$s wurden entfernt!",
"cobblemon.battle.clearallnegativeboost": "%1$s's negative stat changes were removed!",
"cobblemon.battle.clearallnegativeboost.zeffect": "Z-Kraft von %1$s stellt seine Statuswerte wieder her!",
"cobblemon.battle.unboost.slight": "%1$s's %2$s ist gesunken.",
"cobblemon.battle.unboost.sharp": "%1$s's %2$s ist stark gesunken.",
@@ -712,20 +702,17 @@
"cobblemon.battle.recharge": "%1$s muss sich ausruhen.",
"cobblemon.capture.broke_free": "%1$s ist ausgebrochen!",
"cobblemon.capture.not_your_turn": "Du bist nicht am Zug.",
"cobblemon.capture.attempted_capture": "%1$s threw their %2$s at %3$s!",
"cobblemon.capture.attempted_capture": "%1$s warf ein/e %2$s nach %3$s!",
"cobblemon.capture.succeeded": "Hurra! %1$s wurde gefangen.",
"cobblemon.capture.not_wild": "Dieses %1$s ist kein wildes Pokemon.",
"cobblemon.capture.in_battle": "Dieses %1$s ist bereits in einen Kampf verwickelt und kann nicht gefangen werden.",
"cobblemon.capture.busy": "Das %1$s ist beschäftigt!",
"cobblemon.capture.you_in_battle": "Du bist in einen Kampf verwickelt.",
"cobblemon.capture.not_single": "Du kannst wilde Pokémon nur in einem 1v1 Kampf fangen.",
"cobblemon.capture.cannot_be_caught": "This Pokémon cannot be captured.",
"cobblemon.you_in_battle": "Du kannst das während eines Kampfes nicht tun!",
"cobblemon.battle.turn": "Es ist jetzt Runde %1$s",
"cobblemon.battle.side_subject.ally": "dein",
"cobblemon.battle.side_subject.opponent": "der feindlicher",
"cobblemon.battle.transform": "%1$s transformed into %2$s",
"cobblemon.battle.endability": "%1$s's Ability was suppressed!",
"cobblemon.battle.weather.raindance.start": "Es fängt an zu regnen!",
"cobblemon.battle.weather.raindance.upkeep": "Der strömende Regen lässt nicht nach!",
"cobblemon.battle.weather.raindance.end": "Der Regen lässt nach!",
@@ -738,24 +725,7 @@
"cobblemon.battle.weather.hail.start": "Es fängt an zu hageln!",
"cobblemon.battle.weather.hail.upkeep": "Der Hagelsturm tobt!",
"cobblemon.battle.weather.hail.end": "Es hat aufgehört zu hageln!",
"cobblemon.battle.weather.snow.start": "It started to snow!",
"cobblemon.battle.weather.snow.upkeep": "The snow is falling down.",
"cobblemon.battle.weather.snow.end": "The snow stopped.",
"cobblemon.battle.start.bide": "%1$s speichert Energie!",
"cobblemon.battle.start.magnetrise": "%1$s schwebt aufgrund von Elektromagnetismus!",
"cobblemon.battle.start.disable": "%1$s's %2$s was disabled!",
"cobblemon.battle.start.nightmare": "Nachtmahr sucht %1$s heim!",
"cobblemon.battle.start.imprison": "%1$s versiegelt jene gegnerischen Attacken, die es selbst auch beherrscht!",
"cobblemon.battle.start.snatch": "%1$s wartet auf einen Angriff!",
"cobblemon.battle.start.noretreat": "%1$s kann nicht mehr fliehen, weil es Finalformation eingesetzt hat!",
"cobblemon.battle.start.saltcure": "%1$s is being salt cured!",
"cobblemon.battle.start.shedtail": "%1$s shed its tail to create a decoy!",
"cobblemon.battle.start.smackdown": "%1$s fell straight down!",
"cobblemon.battle.start.torment": "%1$s wird der Attacke Folterknecht unterworfen!",
"cobblemon.battle.start.foresight": "%1$s wurde erkannt!",
"cobblemon.battle.start.telekinesis": "%1$s wurde zum Schweben gebracht!",
"cobblemon.battle.start.laserfocus": "%1$s schärft seine Sinne!",
"cobblemon.battle.start.lockon": "%2$s zielt auf %1$s!",
"cobblemon.battle.start.yawn": "%1$s wurde schläfrig gemacht!",
"cobblemon.battle.start.perish": "Abgesang von %1$s steht bei %2$s!",
"cobblemon.battle.start.leechseed": "%1$s wurde bepflanzt!",
@@ -768,26 +738,8 @@
"cobblemon.battle.start.uproar": "%1$s verursacht Aufruhr!",
"cobblemon.battle.start.curse": "%1$s nimmt einen Teil seiner KP und legt einen Fluch auf %2$s!",
"cobblemon.battle.start.miracleeye": "%1$s wurde erkannt!",
"cobblemon.battle.start.dynamax": "%1$s hat sich Dynamaximiert!",
"cobblemon.battle.start.gmax": "%1$s hat sich Gigadynamaximiert!",
"cobblemon.battle.start.encore": "%1$s gibt eine Zugabe!",
"cobblemon.battle.start.futuresight": "%1$s foresaw an attack!",
"cobblemon.battle.start.ingrain": "%1$s planted its roots!",
"cobblemon.battle.start.healblock": "%1$s was prevented from healing!",
"cobblemon.battle.start.mimic": "%1$s learned %2$s!",
"cobblemon.battle.start.octolock": "%1$s can no longer escape because of Octolock!",
"cobblemon.battle.start.burnup": "%1$s burned itself out!",
"cobblemon.battle.start.typechange": "%1$s transformed into the %2$s type!",
"cobblemon.battle.start.doomdesire": "%1$s chose Doom Desire as its destiny!",
"cobblemon.battle.start.doubleshock": "%1$s used up all of its electricity!",
"cobblemon.battle.start.stockpile": "%1$s stockpiled %2$s!",
"cobblemon.battle.start.powertrick": "%1$s switched its Attack and Defense!",
"cobblemon.battle.start.powershift": "%1$s swapped its offensive stats with its defensive stats!",
"cobblemon.battle.start.substitute": "%1$s put in a substitute!",
"cobblemon.battle.start.embargo": "%1$s can't use items anymore!",
"cobblemon.battle.start.typeadd": "%2$s type was added to %1$s!",
"cobblemon.battle.start.reflecttype": "%1$s's type became the same as %2$s's type!",
"cobblemon.battle.start.tarshot": "%1$s became weaker to fire!",
"cobblemon.battle.start.dynamax": "%1$s Dynamaxed!",
"cobblemon.battle.start.gmax": "%1$s Gigantamaxed!",
"cobblemon.battle.fieldstart.electricterrain": "Elektrische Energie fließt durch den Boden!",
"cobblemon.battle.fieldstart.grassyterrain": "Dichtes Gras schießt aus dem Boden!",
"cobblemon.battle.fieldstart.gravity": "Die Erdanziehung wurde verstärkt!",
@@ -809,9 +761,6 @@
"cobblemon.battle.fieldend.watersport": "Nassmacher hört auf zu wirken!",
"cobblemon.battle.fieldend.wonderroom": "Der Wunderraum verpufft. Verteidigung und Spezial-Verteidigung werden wieder zurückgesetzt!",
"cobblemon.battle.fieldactivate.perishsong": "Alle Pokémon, die dem Abgesang gelauscht haben, gehen nach drei Runden K.O.!",
"cobblemon.battle.fieldactivate.iondeluge": "Ein elektrisch geladener Niederschlag regnet auf das Kampffeld herab!",
"cobblemon.battle.fieldactivate.fairylock": "No one will be able to run away during the next turn!",
"cobblemon.battle.fieldactivate.teatime": "It's teatime! Everyone dug in to their Berries!",
"cobblemon.battle.sidestart.stealthrock": "Um die Pokémon auf gegnerischer Seite schweben spitze Steine!",
"cobblemon.battle.sidestart.spikes": "Die Pokémon auf %1$s's Seite sind von Stacheln umgeben!",
"cobblemon.battle.sidestart.toxicspikes": "Die Pokémon auf %1$s's Seite sind überall von giftigen Stacheln umgeben!",
@@ -821,8 +770,6 @@
"cobblemon.battle.sidestart.auroraveil": "Auroraschleier stärkt %1$s's Pokémon gegen physische und Spezial-Attacken!",
"cobblemon.battle.sidestart.tailwind": "%1$s's Pokémon erhalten Rückenwind!",
"cobblemon.battle.sidestart.safeguard": "%1$s's Team wird von einem Schleier umhüllt!",
"cobblemon.battle.sidestart.luckychant": "Lucky Chant shielded %1$s team from critical hits!",
"cobblemon.battle.sidestart.mist": "%1$s team became shrouded in mist!",
"cobblemon.battle.sideend.stealthrock": "Die Stacheln, die auf %1$s's Seite herumlagen, sind verschwunden!",
"cobblemon.battle.sideend.spikes": "Die Stacheln, die auf %1$s's Seite herumlagen, sind verschwunden!",
"cobblemon.battle.sideend.toxicspikes": "Die giftigen Stacheln, die auf %1$s's Seite herumlagen, sind verschwunden!",
@@ -832,8 +779,6 @@
"cobblemon.battle.sideend.auroraveil": "Der Auroraschleier, der %1$s's Team umgab, hat sich gelüftet!",
"cobblemon.battle.sideend.tailwind": "Der Rückenwind auf %1$s's Seite hat sich gelegt!",
"cobblemon.battle.sideend.safeguard": "Der mystische Schleier, der %1$s's Team umgab, hat sich gelüftet!",
"cobblemon.battle.sideend.luckychant": "%1$s team's Lucky Chant wore off!",
"cobblemon.battle.sideend.mist": "%1$s team is no longer protected by mist!",
"cobblemon.battle.cant.generic": "%1$s kann %2$s nicht benutzen!",
"cobblemon.battle.cant.truant": "%1$s faulenzt!",
"cobblemon.battle.cant.flinch": "%1$s ist zurückgeschreckt und kann nicht angreifen!",
@@ -848,11 +793,6 @@
"cobblemon.battle.cant.taunt": "%1$s kann %2$s nach Verhöhner nicht benutzen!",
"cobblemon.battle.cant.throatchop": "%1$s kann die Attacke durch die Wirkung von Neck Strike nicht einsetzen!",
"cobblemon.battle.activate.confusion": "%1$s ist verwirrt!",
"cobblemon.battle.activate.happyhour": "Goldene Zeiten sind angebrochen!",
"cobblemon.battle.activate.mindreader": "%2$s read the mind of %1$s!",
"cobblemon.battle.activate.magmastorm": "%1$s wurde in wirbelndem Magma eingeschlossen!",
"cobblemon.battle.activate.powersplit": "%1$s addiert seine Kräfte mit jenen des Zieles und teilt sie gerecht auf!",
"cobblemon.battle.activate.pursuit": "(%1$s is being withdrawn...)",
"cobblemon.battle.activate.gravity": "%1$s kann wegen der erhöhten Erdanziehung nicht mehr in der Luft bleiben!",
"cobblemon.battle.activate.mistyterrain": "%1$s wird von Nebelfeld geschützt!",
"cobblemon.battle.activate.psychicterrain": "%1$s wird von Psychofeld geschützt!",
@@ -861,15 +801,12 @@
"cobblemon.battle.activate.trapped": "%1$s kann nicht mehr fliehen!",
"cobblemon.battle.activate.bind": "%1$s wurde durch Klammergriff von %2$s verletzt!",
"cobblemon.battle.activate.wrap": "%1$s wurde von %2$s umwickelt!",
"cobblemon.battle.activate.snatch": "%1$s übernimmt die Wirkung der Attacke von %2$s!",
"cobblemon.battle.activate.sandtomb": "%1$s wurde durch Sandgrab gefangen!",
"cobblemon.battle.activate.struggle": "%1$s hat keine Attacken mehr übrig!",
"cobblemon.battle.activate.stickyweb": "%1$s ist im Klebenetz gefangen!",
"cobblemon.battle.activate.courtchange": "%1$s hat die Effekte, die auf den beiden Seiten des Kampffeldes wirken, miteinander getauscht!",
"cobblemon.battle.activate.guardsplit": "%1$s addiert seine Schutzkräfte mit jenen des Zieles und teilt sie gerecht auf!",
"cobblemon.battle.activate.spite": "%2$s von %1$s wird um %3$s AP reduziert!",
"cobblemon.battle.activate.lockon": "%1$s zielt auf %2$s!",
"cobblemon.battle.activate.protosynthesis": "Das Sonnenlicht hat %1$ss Paläosynthese aktiviert!",
"cobblemon.battle.activate.protosynthesis": "The harsh sunlight activated %1$s's Protosynthesis!",
"cobblemon.battle.activate.bide": "%1$s speichert Energie!",
"cobblemon.battle.activate.protect": "%1$s schützt sich selbst!",
"cobblemon.battle.activate.magnitude": "Intensität %1$s!",
@@ -879,39 +816,15 @@
"cobblemon.battle.activate.attract": "%1$s hat sich in in %2$s verliebt!",
"cobblemon.battle.activate.firespin": "%1$s wurde in wirbelndem Feuer eingeschlossen!",
"cobblemon.battle.activate.trick": "%1$s tauscht Items mit dem Ziel!",
"cobblemon.battle.activate.quickclaw": "%1$s ist, durch die Flinkklaue, schneller am Zug!",
"cobblemon.battle.activate.quickclaw": "%1$s can act faster than normal, thanks to its Quick Claw!",
"cobblemon.battle.activate.focusband": "%1$s hält mithilfe des Items %2$s durch!",
"cobblemon.battle.activate.forewarn": "%2$s's %3$s was revealed!",
"cobblemon.battle.activate.forewarn": "%1$s von %2$s wurde enthüllt!",
"cobblemon.battle.activate.disguise": "Sein Kostüm hat die Attacke absorbiert!",
"cobblemon.battle.activate.liquidooze": "%1$s saugt Kloakensoße auf!",
"cobblemon.battle.activate.whirlpool": "%1$s wird in dem Strudel gefangen!",
"cobblemon.battle.activate.clamp": "%1$s wurde von %2$s geschnappt!",
"cobblemon.battle.activate.afteryou": "%1$s lässt sich auf Galanterie ein!",
"cobblemon.battle.activate.beatup": "%1$s's attack!",
"cobblemon.battle.activate.celebrate": "Glückwunsch, %1$s!",
"cobblemon.battle.activate.substitute": "Der Delegator steckt den Schlag für %1$s ein!",
"cobblemon.battle.activate.infestation": "%1$s has become infested!",
"cobblemon.battle.activate.phantomforce": "Es durchbrach den Schutz von %1$s!",
"cobblemon.battle.activate.matblock": "%3$s was blocked by the kicked-up mat!",
"cobblemon.battle.activate.electricterrain": "%1$s surrounds itself with electrified terrain!",
"cobblemon.battle.activate.ingrain": "%1$s anchored itself with its roots!",
"cobblemon.battle.activate.mist": "%1$s is protected by the mist!",
"cobblemon.battle.activate.poltergeist": "%1$s is about to be attacked by its %3$s!",
"cobblemon.battle.activate.powder": "When the flame touched the powder on the Pokémon, it exploded!",
"cobblemon.battle.activate.quash": "%1$s's move was postponed!",
"cobblemon.battle.activate.quickguard": "Quick Guard protected %1$s",
"cobblemon.battle.activate.safeguard": "%1$s is protected by Safeguard!",
"cobblemon.battle.activate.sketch": "%1$s sketched %3$s!",
"cobblemon.battle.activate.grudge": "%1$s's %3$s lost all of its PP due to the grudge!",
"cobblemon.battle.activate.speedswap": "%1$s switched Speed with its target!",
"cobblemon.battle.activate.switcheroo": "%1$s switched items with its target!",
"cobblemon.battle.activate.skillswap": "%1$s swapped Abilities with its target!",
"cobblemon.battle.activate.wideguard": "Wide Guard protected %1$s!",
"cobblemon.battle.activate.craftyshield": "Crafty Shield protected %1$s!",
"cobblemon.battle.activate.tidyup": "Tidying up complete!",
"cobblemon.battle.prepare.bounce": "%1$s springt hoch in die Luft!",
"cobblemon.battle.prepare.dig": "%1$s vergräbt sich in der Erde!",
"cobblemon.battle.prepare.shelltrap": "%1$s hat eine Panzerfalle gelegt!",
"cobblemon.battle.prepare.dive": "%1$s taucht unter!",
"cobblemon.battle.prepare.fly": "%1$s fliegt hoch empor!",
"cobblemon.battle.prepare.freezeshock": "%1$s wird von einem kühlen Licht umhüllt!",
@@ -925,10 +838,6 @@
"cobblemon.battle.prepare.skydrop": "%1$s took its target into the sky!",
"cobblemon.battle.prepare.solarbeam": "%1$s absorbiert Sonnenlicht!",
"cobblemon.battle.swapboost.generic": "%1$s tauscht die Statuswertveränderungen mit %2$s!",
"cobblemon.battle.swapboost.guardswap": "%1$s switched all changes to its Defense and Sp. Def with its target!",
"cobblemon.battle.swapboost.powerswap": "%1$s switched all changes to its Attack and Sp. Atk with its target!",
"cobblemon.battle.swapboost.heartswap": "%1$s switched stat changes with its target!",
"cobblemon.battle.copyboost.generic": "%1$s copied %2$s's stat changes!",
"cobblemon.battle.singleturn.protect": "%1$s schützt sich selbst!",
"cobblemon.battle.singleturn.endure": "%1$s macht sich bereit!",
"cobblemon.battle.singleturn.craftyshield": "Die Pokémon auf %1$s's Seite werden von Trickschutz behütet!",
@@ -958,11 +867,7 @@
"cobblemon.battle.damage.leechseed": "Egelsamen schadet %1$s!",
"cobblemon.battle.damage.sandstorm": "Der Sandsturm fügt %1$s Schaden zu!",
"cobblemon.battle.damage.hail": "%1$s wird von Hagelkörnern getroffen!",
"cobblemon.battle.damage.saltcure": "%1$s is hurt by Salt Cure!",
"cobblemon.battle.damage.nightmare": "Nachtmahr schadet %1$s!",
"cobblemon.battle.damage.magmastorm": "%1$s took damage from the magma!",
"cobblemon.battle.damage.stealthrock": "%1$s wird von spitzen Steinen getroffen!",
"cobblemon.battle.damage.highjumpkick": "%1$s crashed into the ground!",
"cobblemon.battle.damage.spikes": "%1$s wurde durch Stachler verletzt!",
"cobblemon.battle.damage.recoil": "%1$s erleidet Schaden durch Rückstoß!",
"cobblemon.battle.damage.item": "%1$s wurde durch das Item %2$s verletzt!",
@@ -973,21 +878,8 @@
"cobblemon.battle.damage.whirlpool": "%1$s was hurt by Whirlpool!",
"cobblemon.battle.damage.clamp": "%1$s was hurt by Clamp!",
"cobblemon.battle.damage.curse": "%1$s wurde durch den Fluch verletzt!",
"cobblemon.battle.damage.firespin": "%1$s is hurt by Fire Spin!",
"cobblemon.battle.damage.axekick": "%1$s crashed into the ground!",
"cobblemon.battle.damage.bind": "%1$s took damage from Bind!",
"cobblemon.battle.damage.baddreams": "%1$s took damage from Bad Dreams!",
"cobblemon.battle.damage.mindblown": "%1$s cut its own HP to power up its move!",
"cobblemon.battle.damage.infestation": "%1$s took damage from the infestation!",
"cobblemon.battle.damage.spikyshield": "%1$s was damaged from contact!",
"cobblemon.battle.damage.flameburst": "%1$s wurde ebenfalls vom Funkenflug erfasst!",
"cobblemon.battle.end.bind": "%1$s is no longer being squeezed!",
"cobblemon.battle.end.wrap": "%1$s wurde von Wickel befreit!",
"cobblemon.battle.end.magnetrise": "Der Elektromagnetismus von %1$s hört auf zu wirken!",
"cobblemon.battle.end.doomdesire": "%1$s took the Doom Desire attack!",
"cobblemon.battle.end.leechseed": "%1$s was freed from Leech Seed!",
"cobblemon.battle.end.powershift": "%1$s swapped its offensive stats with its defensive stats!",
"cobblemon.battle.end.torment": "%1$s is no longer tormented!",
"cobblemon.battle.end.disable": "Die Attacke von %1$s ist nicht mehr blockiert!",
"cobblemon.battle.end.protosynthesis": "The effects of %1$s's Protosynthesis wore off!",
"cobblemon.battle.end.taunt": "Verhöhner wirkt nicht mehr auf %1$s!",
@@ -997,40 +889,11 @@
"cobblemon.battle.end.whirlpool": "%1$s wurde von Whirlpool befreit!",
"cobblemon.battle.end.clamp": "%1$s wurde von Schnapper befreit!",
"cobblemon.battle.end.dynamax": "%1$s returned to normal!",
"cobblemon.battle.end.telekinesis": "%1$s wurde von der Wirkung von Telekinese befreit!",
"cobblemon.battle.end.encore": "Die Zugabe von %1$s ist beendet!",
"cobblemon.battle.end.attract": "%1$s ist nicht mehr verliebt!",
"cobblemon.battle.end.futuresight": "%1$s took the Future Sight attack!",
"cobblemon.battle.end.embargo": "%1$s's can use items again!",
"cobblemon.battle.end.substitute": "Der Delegator von %1$s hört auf zu wirken!",
"cobblemon.battle.end.uproar": "%1$s beruhigt sich!",
"cobblemon.battle.end.powertrick": "%1$s tauscht den Wert seines Angriffs mit dem seiner Verteidigung!",
"cobblemon.battle.end.healblock": "%1$s's Heal Block wore off!",
"cobblemon.battle.end.skydrop": "%1$s was freed from the Sky Drop!",
"cobblemon.battle.block.uproar": "Aber der Aufruhr hält %1$s wach!",
"cobblemon.battle.fail.substitute": "But it could not create a substitute!",
"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 %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 stats did not get lowered!",
"cobblemon.battle.sethp.painsplit": "Die Kontrahenten teilen sich ihre KP!",
"cobblemon.battle.ability.sturdy": "%1$s übersteht die Attacke!",
"cobblemon.battle.ability.unnerve": "%1$s machte den Gegner zu nervös, um Beeren zu essen!",
"cobblemon.battle.ability.anticipation": "%1$s erschaudert!",
"cobblemon.battle.ability.airlock": "Die wetterbedingten Effekte wurden aufgehoben!",
"cobblemon.battle.ability.trace": "%1$s traced the opposing %2$s's %3$s!",
"cobblemon.battle.ability.receiver": "Die Fähigkeit %2$s von %1$s wurde übernommen!",
"cobblemon.battle.ability.generic": "%1$s's %2$s activated!",
"cobblemon.battle.ability.magicbounce": "%2$s von %1$s wurde zurückgelenkt!",
"cobblemon.battle.errors.busy": "%1$s ist beschäftigt!",
@@ -1041,9 +904,7 @@
"cobblemon.battle.error.insufficient_pokemon": "%1$s hat %2 Pokémon doch %3 sind nötig.",
"cobblemon.battle.error.insufficient_pokemon.personal": "Du hast %1 nutzbare Pokémon doch du brauchst %2.",
"cobblemon.battle.error.pokemon_is_trapped": "[Unverfügbare Auswahl] Kann nicht austauschen: Der aktive Pokémon ist gefangen",
"cobblemon.battle.error.canceled": "There's a time and place for everything, but not now!",
"cobblemon.battle.immune": "Aber %1$s ist immun!",
"cobblemon.battle.invertboost": "%1$s's stat changes were inverted!",
"cobblemon.battle.missed": "Aber es ging daneben.",
"cobblemon.battle.hit_count": "%1$s-mal getroffen!",
"cobblemon.battle.hit_count_singular": "1-mal getroffen!",
@@ -1062,14 +923,13 @@
"cobblemon.battle.enditem.incinerate": "%2$s von %1$s ist verbrannt und somit nutzlos geworden!",
"cobblemon.battle.enditem.airballoon": "Der Luftballon von %1$s ist geplatzt!",
"cobblemon.battle.enditem.redcard": "%1$s zeigt %3$s die Rote Karte!",
"cobblemon.battle.enditem.pluck": "%3$s hat dem %1$s seine %2$s weggefuttert!",
"cobblemon.battle.enditem.berryjuice": "%1$s's Berry Juice activated!",
"cobblemon.battle.enditem.generic": "%1$s used its %2$s!",
"cobblemon.battle.enditem.mentalherb": "%1$s shook off mental effects due to its Mental Herb!",
"cobblemon.battle.enditem.powerherb": "%1$s became fully charged due to its Power Herb!",
"cobblemon.battle.enditem.mirrorherb": "%1$s copied stat changes with its Mirror Herb!",
"cobblemon.battle.enditem.whiteherb": "%1$s returned its status to normal using its White Herb!",
"cobblemon.battle.enditem.corrosivegas": "%3$s corroded %1$s's %2$s!",
"cobblemon.battle.enditem.stealeat": "%3$s stole and ate its target's %2$s!",
"cobblemon.battle.heal.zeffect": "%1$s hat durch Z-Kraft seine KP aufgefrischt!",
"cobblemon.battle.heal.wish": "Der Wunsch von %1$s ging in Erfüllung!",
"cobblemon.battle.heal.drain": "%1$s wurden KP abgesaugt!",
@@ -1077,20 +937,18 @@
"cobblemon.battle.heal.revivalblessing": "%1$s ist wieder fit und kampfbereit!",
"cobblemon.battle.heal.aquaring": "Der Wasserring stellt KP von %1$s wieder her!",
"cobblemon.battle.heal.ingrain": "%1$s nimmt über seine Wurzeln Nährstoffe auf!",
"cobblemon.battle.heal.lunardance": "%1$s became cloaked in mystical moonlight!",
"cobblemon.battle.heal.grassyterrain": "%1$s's HP was restored.",
"cobblemon.battle.heal.leftovers": "%2$s von %1$s füllt einige KP auf!",
"cobblemon.battle.heal.item": "%2$s füllt KP von %1$s auf!",
"cobblemon.battle.heal.raindish": "%1$s restored HP from Rain Dish!",
"cobblemon.battle.heal.generic": "%1$s hat seine KP wiederhergestellt.",
"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!",
"cobblemon.battle.bagitem.use": "%1$s used their %2$s on %3$s!",
"cobblemon.battle.bagitem.use": "%1$s used a %2$s on %3$s!",
"cobblemon.battle.bagitem.cannot": "You cannot use items right now.",
"cobblemon.battle.bagitem.invalid": "Dieses item würde nicht funktionieren.",
"cobblemon.battle.bagitem.invalid": "This item would not work.",
"cobblemon.battle.zpower": "%1$s surrounded itself with its Z-Power!",
"cobblemon.battle.zbroken": "%1$s konnte den Angriff nicht abwehren und erleidet Schaden!",
"cobblemon.battle.zbroken": "%1$s couldn't fully protect itself and got hurt!",
"cobblemon.battle.terastallize": "%1$s has Terastallized into the %2$s-type!",
"cobblemon.battle.detailschange.mega": "%1$s is reacting to the Key Stone!",
"cobblemon.battle.mega": "%1$s has Mega Evolved!",
@@ -1209,7 +1067,7 @@
"cobblemon.command.checkspawns.nothing": "Hier kann gerade nichts spawnen.",
"cobblemon.interaction.ev.add": "%1$s' %2$s EVs increased by %3$s!",
"cobblemon.interaction.ev.deduct": "%1$s' %2$s EVs decreased by %3$s!",
"cobblemon.interaction.pp.restore": "PP von %1$s wurden wieder aufgefüllt.",
"cobblemon.interaction.pp.restore": "You restore the PP of %1$s.",
"cobblemon.interaction.friendsip.add": "%1$s grows closer to you!",
"cobblemon.interaction.status.cure": "%1$s is cured of its status condition!",
"cobblemon.interaction.hp.heal": "%1$s restored its HP a bit!",
@@ -1220,13 +1078,13 @@
"tag.item.cobblemon.berries": "Beeren",
"tag.item.cobblemon.cobblemon_seeds": "Samen",
"tag.item.cobblemon.evolution_items": "Evolution Items",
"tag.item.cobblemon.evolution_stones": "Entwicklungssteine",
"tag.item.cobblemon.experience_candies": "EP-Bonbons",
"tag.item.cobblemon.evolution_stones": "Evolution Stones",
"tag.item.cobblemon.experience_candies": "Experience Candies",
"tag.item.cobblemon.held.destiny_knot": "Fatumknoten",
"tag.item.cobblemon.held.everstone": "Ewigsteine",
"tag.item.cobblemon.held.experience_share": "Experience Shares",
"tag.item.cobblemon.held.is_held_item": "Tragbare Items",
"tag.item.cobblemon.held.lucky_egg": "Glücks-Eier",
"tag.item.cobblemon.held.is_held_item": "Held Items",
"tag.item.cobblemon.held.lucky_egg": "Lucky Eggs",
"tag.item.cobblemon.held.power_anklet": "Machtketten",
"tag.item.cobblemon.held.power_band": "Machtbände",
"tag.item.cobblemon.held.power_belt": "Machtgurte",
@@ -1234,13 +1092,13 @@
"tag.item.cobblemon.held.power_lens": "Machtlinsen",
"tag.item.cobblemon.held.power_weight": "Machtgewichte",
"tag.item.cobblemon.herbs": "Kräuter",
"tag.item.cobblemon.mint_leaf": "Minzenblätter",
"tag.item.cobblemon.mint_leaf": "Mint Leaves",
"tag.item.cobblemon.mints": "Minzen",
"tag.item.cobblemon.mutated_berries": "Mutation Berries",
"tag.item.cobblemon.plants": "Pflanzen",
"tag.item.cobblemon.poke_balls": "Pokébälle",
"tag.item.cobblemon.protein_ingredients": "Protein Zutaten",
"tag.item.cobblemon.zinc_ingredients": "Zink Zutaten",
"tag.item.cobblemon.protein_ingredients": "Protein Ingredients",
"tag.item.cobblemon.zinc_ingredients": "Zinc Ingredients",
"tag.item.cobblemon.seeds": "Samen",
"cobblemon.ability.adaptability": "Anpassung",
@@ -47,8 +47,6 @@
"item.cobblemon.yellow_apricorn": "Yellow fruitnut",
"item.cobblemon.vivichoke_seeds": "Seed o' vivichokity",
"item.cobblemon.vivichoke": "Vivichoke",
"item.cobblemon.apricorn_boat": "Ship o' fruitnut",
"item.cobblemon.apricorn_chest_boat": "Vessel o' Fruitnut wit' Storage",
"item.cobblemon.link_cable": "Connection rope",
"item.cobblemon.dragon_scale": "Scale o' th' drakes",
"item.cobblemon.kings_rock": "Crown o' th' seas",
@@ -150,10 +148,8 @@
"item.cobblemon.choice_band": "Bindin' o' choice",
"item.cobblemon.choice_scarf": "Cloth o' choice",
"item.cobblemon.choice_specs": "Spectacles o' choice",
"item.cobblemon.cleanse_tag": "Pap'r o' cleanse",
"item.cobblemon.dragon_fang": "Fang o' th' drakes",
"item.cobblemon.exp_share": "Power sharer",
"item.cobblemon.fairy_feather": "Feather o' th' fae",
"item.cobblemon.focus_band": "Bandin' o' focus",
"item.cobblemon.hard_stone": "Solid rock",
"item.cobblemon.heavy_duty_boots": "Resistant peg-leg",
@@ -193,11 +189,6 @@
"item.cobblemon.power_bracer": "Bracer o' pow'r",
"item.cobblemon.power_lens": "Lens o' pow'r",
"item.cobblemon.power_weight": "Weight o' pow'r",
"item.cobblemon.flame_orb": "Burnin' pearl",
"item.cobblemon.light_orb": "Pearl o' lightnin'",
"item.cobblemon.smoke_ball": "Escape pearl",
"item.cobblemon.toxic_orb": "Pearl o' toxins",
"item.cobblemon.life_orb": "Life Orb",
"item.cobblemon.poke_ball.tooltip": "Standard rate o' catch",
"item.cobblemon.slate_ball.tooltip": "Standard rate o' catch",
"item.cobblemon.azure_ball.tooltip": "Standard rate o' catch",
@@ -288,7 +279,6 @@
"block.cobblemon.apricorn_leaves": "Leaves o' fruitnut",
"block.cobblemon.apricorn_fence": "Picket o' fruitnut",
"block.cobblemon.apricorn_sign": "Seal o' fruitnut",
"block.cobblemon.apricorn_hanging_sign": "Hanged seal o' fruitnut",
"block.cobblemon.apricorn_stairs": "Stairs o' fruitnut",
"block.cobblemon.apricorn_pressure_plate": "Booby trap o' fruitnut",
"block.cobblemon.apricorn_button": "Knob o' fruitnut",
@@ -655,7 +645,7 @@
"advancements.cobblemon.obtain_all_berries.description": "Obtain all o' th' berry species",
"advancements.cobblemon.use_pasture": "Crew, on deck",
"advancements.cobblemon.use_pasture.description": "Craft a block o' crew deck, and let ye crew walk about",
"advancements.cobblemon.catch_all_vivillon": "Vivillonaire",
"advancements.cobblemon.catch_all_vivillon": "Worldwide wings",
"advancements.cobblemon.catch_all_vivillon.description": "Find all th' patterns a Vivillon can have",
"advancements.cobblemon.evolve_veevees": "Veevee vault",
"advancements.cobblemon.evolve_veevees.description": "Transmogrify the monster Eevee 8 different ways",
@@ -712,20 +702,17 @@
"cobblemon.battle.recharge": "%1$s must rechart.",
"cobblemon.capture.broke_free": "Th' %1$s broke free!",
"cobblemon.capture.not_your_turn": "Wait for th' right time to act, scallywag.",
"cobblemon.capture.attempted_capture": "%1$s threw their %2$s at %3$s!",
"cobblemon.capture.attempted_capture": "%1$s threw %2$s at th' %3$s!",
"cobblemon.capture.succeeded": "Gotcha! Caught th' %1$s.",
"cobblemon.capture.not_wild": "That %1$s is not a wild monster.",
"cobblemon.capture.in_battle": "That %1$s is in combat, so cannot be caught by ye.",
"cobblemon.capture.busy": "Th' %1$s is busy!",
"cobblemon.capture.you_in_battle": "Ye are in combat.",
"cobblemon.capture.not_single": "Ye can only capture wild monsters in a one on one duel.",
"cobblemon.capture.cannot_be_caught": "This Pokémon cannot be captured.",
"cobblemon.you_in_battle": "Ye can't do that while in combat!",
"cobblemon.battle.turn": "It now be round %1$s",
"cobblemon.battle.side_subject.ally": "yer",
"cobblemon.battle.side_subject.opponent": "th' enemy",
"cobblemon.battle.transform": "%1$s transformed into %2$s",
"cobblemon.battle.endability": "%1$s's Ability was suppressed!",
"cobblemon.battle.weather.raindance.start": "It started rainin'!",
"cobblemon.battle.weather.raindance.upkeep": "Rain continues to bucket.",
"cobblemon.battle.weather.raindance.end": "Th' storm subsides.",
@@ -738,24 +725,7 @@
"cobblemon.battle.weather.hail.start": "Th' sky spits ice!",
"cobblemon.battle.weather.hail.upkeep": "Th' hail is crashing down.",
"cobblemon.battle.weather.hail.end": "Th' hailin' ice subsides.",
"cobblemon.battle.weather.snow.start": "Th' sky spits flakes!",
"cobblemon.battle.weather.snow.upkeep": "Th' flakes o' snow fill th' air.",
"cobblemon.battle.weather.snow.end": "Th' flakes o' snow subsides.",
"cobblemon.battle.start.bide": "%1$s be storin' power!",
"cobblemon.battle.start.magnetrise": "%1$s levitated with electromagnetism!",
"cobblemon.battle.start.disable": "%1$s' %2$s be disabled!",
"cobblemon.battle.start.nightmare": "%1$s began having a nightmare!",
"cobblemon.battle.start.imprison": "%1$s sealed any moves its target shares with it!",
"cobblemon.battle.start.snatch": "%1$s is waiting for a target to make a move!",
"cobblemon.battle.start.noretreat": "%1$s can no longer escape because it used No Retreat!",
"cobblemon.battle.start.saltcure": "%1$s is being salt cured!",
"cobblemon.battle.start.shedtail": "%1$s shed its tail to create a decoy!",
"cobblemon.battle.start.smackdown": "%1$s fell straight down!",
"cobblemon.battle.start.torment": "%1$s was subjected to torment!",
"cobblemon.battle.start.foresight": "%1$s be identified!",
"cobblemon.battle.start.telekinesis": "%1$s was hurled into the air!",
"cobblemon.battle.start.laserfocus": "%1$s concentrated intensely!",
"cobblemon.battle.start.lockon": "%2$s locked sights on %1$s!",
"cobblemon.battle.start.yawn": "%1$s be gettin' drowsy!",
"cobblemon.battle.start.perish": "%2$s rounds left 'til th' siren song claims %1$s.",
"cobblemon.battle.start.leechseed": "%1$s be plantered!",
@@ -770,24 +740,6 @@
"cobblemon.battle.start.miracleeye": "%1$s be identified!",
"cobblemon.battle.start.dynamax": "%1$s grew like a kraken!",
"cobblemon.battle.start.gmax": "%1$s grew into a kraken!",
"cobblemon.battle.start.encore": "%1$s must do an encore!",
"cobblemon.battle.start.futuresight": "%1$s foresaw an attack!",
"cobblemon.battle.start.ingrain": "%1$s planted its roots!",
"cobblemon.battle.start.healblock": "%1$s was prevented from healing!",
"cobblemon.battle.start.mimic": "%1$s learned %2$s!",
"cobblemon.battle.start.octolock": "%1$s can no longer escape because of Octolock!",
"cobblemon.battle.start.burnup": "%1$s burned itself out!",
"cobblemon.battle.start.typechange": "%1$s transformed into the %2$s type!",
"cobblemon.battle.start.doomdesire": "%1$s chose Doom Desire as its destiny!",
"cobblemon.battle.start.doubleshock": "%1$s used up all of its electricity!",
"cobblemon.battle.start.stockpile": "%1$s stockpiled %2$s!",
"cobblemon.battle.start.powertrick": "%1$s switched its Attack and Defense!",
"cobblemon.battle.start.powershift": "%1$s swapped its offensive stats with its defensive stats!",
"cobblemon.battle.start.substitute": "%1$s put in a substitute!",
"cobblemon.battle.start.embargo": "%1$s can't use items anymore!",
"cobblemon.battle.start.typeadd": "%2$s type was added to %1$s!",
"cobblemon.battle.start.reflecttype": "%1$s's type became the same as %2$s's type!",
"cobblemon.battle.start.tarshot": "%1$s became weaker to fire!",
"cobblemon.battle.fieldstart.electricterrain": "Th' ground be charged!",
"cobblemon.battle.fieldstart.grassyterrain": "Th' ground gets mossy!",
"cobblemon.battle.fieldstart.gravity": "Everything be pulled t'wards th' ground!",
@@ -809,9 +761,6 @@
"cobblemon.battle.fieldend.watersport": "Th' effects of water sport have faded.",
"cobblemon.battle.fieldend.wonderroom": "Wonder room wore off, and strength and resilience returned to normal!",
"cobblemon.battle.fieldactivate.perishsong": "All monsters tha' heard th' siren song will fall in three rounds!",
"cobblemon.battle.fieldactivate.iondeluge": "A deluge of ions showers the battlefield!",
"cobblemon.battle.fieldactivate.fairylock": "No one will be able to run away during the next turn!",
"cobblemon.battle.fieldactivate.teatime": "It's teatime! Everyone dug in to their Berries!",
"cobblemon.battle.sidestart.stealthrock": "Sharp stones be scattered o'er %1$s deck!",
"cobblemon.battle.sidestart.spikes": "Spike traps be scattered across %1$s deck!",
"cobblemon.battle.sidestart.toxicspikes": "Tainted spike traps be scattered across %1$s deck!",
@@ -821,8 +770,6 @@
"cobblemon.battle.sidestart.auroraveil": "Th' veil o' aurora makes %1$s crew strong 'n' resiliant 'gainst all foe attacks!",
"cobblemon.battle.sidestart.tailwind": "%1$s crew's sails be full o' wind!",
"cobblemon.battle.sidestart.safeguard": "%1$s's crew be cloaked in a mystic'l veil!",
"cobblemon.battle.sidestart.luckychant": "Lucky Chant shielded %1$s team from critical hits!",
"cobblemon.battle.sidestart.mist": "%1$s team became shrouded in mist!",
"cobblemon.battle.sideend.stealthrock": "Th' sharp stones be swept off %1$s deck!",
"cobblemon.battle.sideend.spikes": "Th' spike traps be swept off %1$s deck!",
"cobblemon.battle.sideend.toxicspikes": "Th' tainted spike traps be swept off %1$s deck!",
@@ -832,8 +779,6 @@
"cobblemon.battle.sideend.auroraveil": "%1$s crew's veil set o'er the horizon!",
"cobblemon.battle.sideend.tailwind": "%1$s crew's sails be emptied out!",
"cobblemon.battle.sideend.safeguard": "%1$s's crew be unsafeguard'd now!",
"cobblemon.battle.sideend.luckychant": "%1$s team's Lucky Chant wore off!",
"cobblemon.battle.sideend.mist": "%1$s team is no longer protected by mist!",
"cobblemon.battle.cant.generic": "%1$s ain't able ta' use %2$s!",
"cobblemon.battle.cant.truant": "%1$s be loafin' around!",
"cobblemon.battle.cant.flinch": "Bilge-sucker! %1$s flinched!",
@@ -848,11 +793,6 @@
"cobblemon.battle.cant.taunt": "%1$s be taunted by the enemy, no time to use %2$s!",
"cobblemon.battle.cant.throatchop": "Th' throat chop be preventin' %1$s from vocalizin'!",
"cobblemon.battle.activate.confusion": "%1$s be confused!",
"cobblemon.battle.activate.happyhour": "Everyone is caught up in the happy atmosphere!",
"cobblemon.battle.activate.mindreader": "%2$s read the mind of %1$s!",
"cobblemon.battle.activate.magmastorm": "%1$s became trapped by swirling magma!",
"cobblemon.battle.activate.powersplit": "%1$s shared their pow'r with th' target!",
"cobblemon.battle.activate.pursuit": "(%1$s is being withdrawn...)",
"cobblemon.battle.activate.gravity": "%1$s couldn't stay airborne because o' th' grav'ty!",
"cobblemon.battle.activate.mistyterrain": "%1$s be shrouded in protective mists!",
"cobblemon.battle.activate.psychicterrain": "%1$s be surrounded in th' weirdness!",
@@ -861,10 +801,7 @@
"cobblemon.battle.activate.trapped": "%1$s be trapped, no chance of fleeing!",
"cobblemon.battle.activate.bind": "%1$s be squeezed by %2$s!",
"cobblemon.battle.activate.wrap": "%1$s be wrapped by %2$s!",
"cobblemon.battle.activate.snatch": "%1$s snatched %2$s's move!",
"cobblemon.battle.activate.sandtomb": "%1$s became trapped by the quicksand!",
"cobblemon.battle.activate.struggle": "%1$s be out o' actions!",
"cobblemon.battle.activate.stickyweb": "%1$s was caught in a sticky web!",
"cobblemon.battle.activate.courtchange": "%1$s swapped th' battle effects affecting each side o' th' field!",
"cobblemon.battle.activate.guardsplit": "%1$s shared their guard with th' target!",
"cobblemon.battle.activate.spite": "Th' PP o' %1$s's %2$s reduced by %3$s!",
@@ -881,37 +818,13 @@
"cobblemon.battle.activate.trick": "%1$s traded loot!",
"cobblemon.battle.activate.quickclaw": "%1$s be able to break away and act, thanks to th' sneaky swift claw!",
"cobblemon.battle.activate.focusband": "%1$s be hung standin' thanks ta' th' %2$s!",
"cobblemon.battle.activate.forewarn": "%2$s's %3$s was revealed!",
"cobblemon.battle.activate.forewarn": "%1$s's %2$s be known!",
"cobblemon.battle.activate.disguise": "It's disguise was a good decoy!",
"cobblemon.battle.activate.liquidooze": "%1$s sucked up th' ooze!",
"cobblemon.battle.activate.whirlpool": "%1$s be caught in th' raging waves!",
"cobblemon.battle.activate.clamp": "%2$s clamp'd down on %1$s!",
"cobblemon.battle.activate.afteryou": "%1$s took the kind offer!",
"cobblemon.battle.activate.beatup": "%1$s's attack!",
"cobblemon.battle.activate.celebrate": "Congratulations, %1$s!",
"cobblemon.battle.activate.substitute": "The substitute took damage for %1$s!",
"cobblemon.battle.activate.infestation": "%1$s has become infested!",
"cobblemon.battle.activate.phantomforce": "It broke through %1$s's protection!",
"cobblemon.battle.activate.matblock": "%3$s was blocked by the kicked-up mat!",
"cobblemon.battle.activate.electricterrain": "%1$s surrounds itself with electrified terrain!",
"cobblemon.battle.activate.ingrain": "%1$s anchored itself with its roots!",
"cobblemon.battle.activate.mist": "%1$s is protected by the mist!",
"cobblemon.battle.activate.poltergeist": "%1$s is about to be attacked by its %3$s!",
"cobblemon.battle.activate.powder": "When the flame touched the powder on the Pokémon, it exploded!",
"cobblemon.battle.activate.quash": "%1$s's move was postponed!",
"cobblemon.battle.activate.quickguard": "Quick Guard protected %1$s",
"cobblemon.battle.activate.safeguard": "%1$s is protected by Safeguard!",
"cobblemon.battle.activate.sketch": "%1$s sketched %3$s!",
"cobblemon.battle.activate.grudge": "%1$s's %3$s lost all of its PP due to the grudge!",
"cobblemon.battle.activate.speedswap": "%1$s switched Speed with its target!",
"cobblemon.battle.activate.switcheroo": "%1$s switched items with its target!",
"cobblemon.battle.activate.skillswap": "%1$s swapped Abilities with its target!",
"cobblemon.battle.activate.wideguard": "Wide Guard protected %1$s!",
"cobblemon.battle.activate.craftyshield": "Crafty Shield protected %1$s!",
"cobblemon.battle.activate.tidyup": "Tidying up complete!",
"cobblemon.battle.prepare.bounce": "%1$s launched skyward!",
"cobblemon.battle.prepare.dig": "%1$s burrowed its way under th' ground!",
"cobblemon.battle.prepare.shelltrap": "%1$s traps th' shell!",
"cobblemon.battle.prepare.dive": "%1$s dove b'neath th' waves!",
"cobblemon.battle.prepare.fly": "%1$s rose to th' skies!",
"cobblemon.battle.prepare.freezeshock": "%1$s be cloaked in frozen sparkin' light!",
@@ -925,10 +838,6 @@
"cobblemon.battle.prepare.skydrop": "%1$s took its target into th' sky!",
"cobblemon.battle.prepare.solarbeam": "%1$s draws in light!",
"cobblemon.battle.swapboost.generic": "%1$s switched improvements with %2$s!",
"cobblemon.battle.swapboost.guardswap": "%1$s switched all changes to its Defense and Sp. Def with its target!",
"cobblemon.battle.swapboost.powerswap": "%1$s switched all changes to its Attack and Sp. Atk with its target!",
"cobblemon.battle.swapboost.heartswap": "%1$s switched stat changes with its target!",
"cobblemon.battle.copyboost.generic": "%1$s copied %2$s's stat changes!",
"cobblemon.battle.singleturn.protect": "%1$s be protected!",
"cobblemon.battle.singleturn.endure": "%1$s be braced!",
"cobblemon.battle.singleturn.craftyshield": "Crafty shield protected %1$s's crew!",
@@ -958,11 +867,7 @@
"cobblemon.battle.damage.leechseed": "%1$s's health be sapped by leeching seeds!",
"cobblemon.battle.damage.sandstorm": "%1$s was buffeted by th' sandstorm.",
"cobblemon.battle.damage.hail": "%1$s was smacked upside by hail.",
"cobblemon.battle.damage.saltcure": "%1$s is hurt by Salt Cure!",
"cobblemon.battle.damage.nightmare": "%1$s is locked in a nightmare!",
"cobblemon.battle.damage.magmastorm": "%1$s took damage from the magma!",
"cobblemon.battle.damage.stealthrock": "Sharp stones dug into %1$s!",
"cobblemon.battle.damage.highjumpkick": "%1$s crashed into the ground!",
"cobblemon.battle.damage.spikes": "%1$s be stabbed by th' spike traps!",
"cobblemon.battle.damage.recoil": "%1$s's hurt from th' recoil!",
"cobblemon.battle.damage.item": "%1$s be hurt by its %2$s!",
@@ -973,21 +878,8 @@
"cobblemon.battle.damage.whirlpool": "%1$s be pull'd into th' whirlpool!",
"cobblemon.battle.damage.clamp": "%1$s be clamp'd tight!",
"cobblemon.battle.damage.curse": "%1$s be weaken'd by th' curse!",
"cobblemon.battle.damage.firespin": "%1$s is hurt by Fire Spin!",
"cobblemon.battle.damage.axekick": "%1$s crashed into the ground!",
"cobblemon.battle.damage.bind": "%1$s took damage from Bind!",
"cobblemon.battle.damage.baddreams": "%1$s took damage from Bad Dreams!",
"cobblemon.battle.damage.mindblown": "%1$s cut its own HP to power up its move!",
"cobblemon.battle.damage.infestation": "%1$s took damage from the infestation!",
"cobblemon.battle.damage.spikyshield": "%1$s was damaged from contact!",
"cobblemon.battle.damage.flameburst": "The bursting flame hit %1$s!",
"cobblemon.battle.end.bind": "%1$s be squeezed no longer!",
"cobblemon.battle.end.wrap": "%1$s be unwrapp'd!",
"cobblemon.battle.end.magnetrise": "%1$s's electromagnetism wore off!",
"cobblemon.battle.end.doomdesire": "%1$s took the Doom Desire attack!",
"cobblemon.battle.end.leechseed": "%1$s was freed from Leech Seed!",
"cobblemon.battle.end.powershift": "%1$s swapped its offensive stats with its defensive stats!",
"cobblemon.battle.end.torment": "%1$s is no longer tormented!",
"cobblemon.battle.end.disable": "%1$s's skill be available now!",
"cobblemon.battle.end.protosynthesis": "Th' boons of %1$s's protosynthesis ran dry!",
"cobblemon.battle.end.taunt": "%1$s fought past th' taunt!",
@@ -997,40 +889,11 @@
"cobblemon.battle.end.whirlpool": "Th' whirlpool 'round %1$s wash'd out!",
"cobblemon.battle.end.clamp": "%1$s be unclamp'd!",
"cobblemon.battle.end.dynamax": "%1$s shrunk back ta' crew!",
"cobblemon.battle.end.telekinesis": "%1$s was freed from the telekinesis!",
"cobblemon.battle.end.encore": "%1$s's Encore ended!",
"cobblemon.battle.end.attract": "%1$s got over its infatuation!",
"cobblemon.battle.end.futuresight": "%1$s took the Future Sight attack!",
"cobblemon.battle.end.embargo": "%1$s's can use items again!",
"cobblemon.battle.end.substitute": "%1$s's substitute faded!",
"cobblemon.battle.end.uproar": "%1$s calmed down.",
"cobblemon.battle.end.powertrick": "%1$s switched its Attack and Defense!",
"cobblemon.battle.end.healblock": "%1$s's Heal Block wore off!",
"cobblemon.battle.end.skydrop": "%1$s was freed from the Sky Drop!",
"cobblemon.battle.block.uproar": "But the uproar kept %1$s awake!",
"cobblemon.battle.fail.substitute": "But it could not create a substitute!",
"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": "Avast! Nothin' 'appened!",
"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 stats did not get lowered!",
"cobblemon.battle.sethp.painsplit": "Th' battlers shared their pain!",
"cobblemon.battle.ability.sturdy": "%1$s endured th' blow!",
"cobblemon.battle.ability.unnerve": "%1$s made th' opponent too nervous ta' snack!",
"cobblemon.battle.ability.anticipation": "%1$s be shakin' in anticipation!",
"cobblemon.battle.ability.airlock": "The effects o' weather disappeared.",
"cobblemon.battle.ability.trace": "%1$s traced the opposing %2$s's %3$s!",
"cobblemon.battle.ability.receiver": "%1$s's %2$s was taken over!",
"cobblemon.battle.ability.generic": "%1$s's %2$s trigger'd!",
"cobblemon.battle.ability.magicbounce": "%1$s bounced th' %2$s right back!",
"cobblemon.battle.errors.busy": "%1$s be busy!",
@@ -1041,9 +904,7 @@
"cobblemon.battle.error.insufficient_pokemon": "%1$s has %2 monsters when %3 be needed.",
"cobblemon.battle.error.insufficient_pokemon.personal": "Ye have %1 usable monsters but in need o' %2.",
"cobblemon.battle.error.pokemon_is_trapped": "[Unavailable choice] Can't swap: th' active monster be trapped",
"cobblemon.battle.error.canceled": "There's a time and place for everything, but not now!",
"cobblemon.battle.immune": "But %1$s be immune!",
"cobblemon.battle.invertboost": "%1$s's stat changes were inverted!",
"cobblemon.battle.missed": "The shot missed.",
"cobblemon.battle.hit_count": "Landed %1$s shots!",
"cobblemon.battle.hit_count_singular": "Hit once!",
@@ -1062,14 +923,13 @@
"cobblemon.battle.enditem.incinerate": "%1$s's %2$s be charrrr'd to smithereens!",
"cobblemon.battle.enditem.airballoon": "%1$s's floaties burst!",
"cobblemon.battle.enditem.redcard": "%1$s held up th' red card against %3$s!",
"cobblemon.battle.enditem.pluck": "%3$s plundered and pillaged %1$s's %2$s!",
"cobblemon.battle.enditem.berryjuice": "%1$s drank some berry rum!",
"cobblemon.battle.enditem.generic": "%1$s made use o' %2$s!",
"cobblemon.battle.enditem.mentalherb": "%1$s shook off mental fatigue through th' herb!",
"cobblemon.battle.enditem.powerherb": "%1$s became fully charged through th' herb!",
"cobblemon.battle.enditem.mirrorherb": "%1$s copied stat changes through th' herb!",
"cobblemon.battle.enditem.whiteherb": "%1$s restored statuses through th' herb!",
"cobblemon.battle.enditem.corrosivegas": "%3$s corroded %1$s's %2$s!",
"cobblemon.battle.enditem.stealeat": "%3$s stole and ate its target's %2$s!",
"cobblemon.battle.heal.zeffect": "%1$s's health went back up by th' Z voodoo!",
"cobblemon.battle.heal.wish": "%1$s's wish came to be!",
"cobblemon.battle.heal.drain": "%1$s had its health drained!",
@@ -1077,16 +937,14 @@
"cobblemon.battle.heal.revivalblessing": "%1$s was brought back from Davy Jones' Locker and is ship shape!",
"cobblemon.battle.heal.aquaring": "A veil o' th' seas restored %1$s's health!",
"cobblemon.battle.heal.ingrain": "%1$s absorbed nutrients from th' roots!",
"cobblemon.battle.heal.lunardance": "%1$s became cloaked in mystical moonlight!",
"cobblemon.battle.heal.grassyterrain": "%1$s's health be improved from th' moss.",
"cobblemon.battle.heal.leftovers": "%1$s snack'd on that %2$s!",
"cobblemon.battle.heal.item": "%1$s healed up from th' %2$s!",
"cobblemon.battle.heal.raindish": "%1$s's rain dish restored some health!",
"cobblemon.battle.heal.generic": "%1$s restored its health.",
"cobblemon.battle.heal.bagitempotion": "%1$s's HP restor'd",
"cobblemon.battle.heal.poisonheal": "%1$s restored HP from Poison Heal!",
"cobblemon.battle.curestatus.naturalcure": "%1$s be naturally cured!",
"cobblemon.battle.bagitem.use": "%1$s used their %2$s on %3$s!",
"cobblemon.battle.bagitem.use": "%1$s be usin' %2$s on %3$s!",
"cobblemon.battle.bagitem.cannot": "Ye can't use tools at current.",
"cobblemon.battle.bagitem.invalid": "No point in usin' that.",
"cobblemon.battle.zpower": "%1$s be cloak'd in th' Z-Power!",
@@ -197,11 +197,55 @@
"item.cobblemon.power_bracer": "Power Bracer",
"item.cobblemon.power_lens": "Power Lens",
"item.cobblemon.power_weight": "Power Weight",
"item.cobblemon.ability_shield": "Ability Shield",
"item.cobblemon.absorb_bulb": "Absorb Bulb",
"item.cobblemon.air_balloon": "Air Balloon",
"item.cobblemon.amulet_coin": "Amulet Coin",
"item.cobblemon.binding_band": "Binding Band",
"item.cobblemon.blunder_policy": "Blunder policy",
"item.cobblemon.cell_battery": "Cell Battery",
"item.cobblemon.clear_amulet": "Clear Amulet",
"item.cobblemon.covert_cloak": "Covert Cloak",
"item.cobblemon.damp_rock": "Damp Rock",
"item.cobblemon.eject_button": "Eject Button",
"item.cobblemon.eject_pack": "Eject Pack",
"item.cobblemon.electric_seed": "Electric Seed",
"item.cobblemon.expert_belt": "Expert Belt",
"item.cobblemon.float_stone": "Float Stone",
"item.cobblemon.focus_sash": "Focus Sash",
"item.cobblemon.flame_orb": "Flame Orb",
"item.cobblemon.grassy_seed": "Grassy Seed",
"item.cobblemon.grip_claw": "Grip Claw",
"item.cobblemon.heat_rock": "Heat Rock",
"item.cobblemon.icy_rock": "Icy Rock",
"item.cobblemon.iron_ball": "Iron Ball",
"item.cobblemon.lagging_tail": "Lagging Tail",
"item.cobblemon.light_orb": "Light Orb",
"item.cobblemon.light_ball": "Light Ball",
"item.cobblemon.loaded_dice": "Loaded Dice",
"item.cobblemon.metronome": "Metronome",
"item.cobblemon.luminous_moss": "Luminous Moss",
"item.cobblemon.misty_seed": "Misty Seed",
"item.cobblemon.protective_pads": "Protective Pads",
"item.cobblemon.psychic_seed": "Psychic Seed",
"item.cobblemon.punching_glove": "Punching Glove",
"item.cobblemon.red_card": "Red Card",
"item.cobblemon.ring_target": "Ring Target",
"item.cobblemon.room_service": "Room Service",
"item.cobblemon.scope_lens": "Scope Lens",
"item.cobblemon.shed_shell": "Shed Shell",
"item.cobblemon.shell_bell": "Shell Bell",
"item.cobblemon.smoke_ball": "Smoke Ball",
"item.cobblemon.smooth_rock": "Smooth Rock",
"item.cobblemon.soothe_bell": "Smoothe Bell",
"item.cobblemon.sticky_barb": "Sticky Barb",
"item.cobblemon.terrain_extruder": "Terrain Extruder",
"item.cobblemon.throat_spray": "Throat Spray",
"item.cobblemon.toxic_orb": "Toxic Orb",
"item.cobblemon.life_orb": "Life Orb",
"item.cobblemon.utility_umbrella": "Utility Umbrella",
"item.cobblemon.weakness_policy": "Weakness Policy",
"item.cobblemon.wide_lens": "Wide Lens",
"item.cobblemon.zoom_lens": "Zoom Lens",
"item.cobblemon.poke_ball.tooltip": "1× catch rate",
"item.cobblemon.slate_ball.tooltip": "1× catch rate",
@@ -487,7 +531,7 @@
"item.cobblemon.chople_berry": "Chople Berry",
"item.cobblemon.chople_berry.tooltip": "Halves damage taken from a supereffective Fighting-type attack",
"item.cobblemon.coba_berry": "Coba Berry",
"item.cobblemon.coba_berry.tooltip": "Halves damage taken from a supereffective Flying-type attack",
"item.cobblemon.coba_berry.tooltip": "Halves damage taken from a supereffective Flying-type attac",
"item.cobblemon.colbur_berry": "Colbur Berry",
"item.cobblemon.colbur_berry.tooltip": "Halves damage taken from a supereffective Dark-type attack",
"item.cobblemon.cornn_berry": "Cornn Berry",
@@ -746,7 +790,7 @@
"cobblemon.battle.recharge": "%1$s must recharge.",
"cobblemon.capture.broke_free": "The %1$s broke free!",
"cobblemon.capture.not_your_turn": "It's not your turn to act.",
"cobblemon.capture.attempted_capture": "%1$s threw their %2$s at %3$s!",
"cobblemon.capture.attempted_capture": "%1$s threw a %2$s at %3$s!",
"cobblemon.capture.succeeded": "Gotcha! Caught the %1$s.",
"cobblemon.capture.not_wild": "That %1$s is not a wild Pokémon.",
"cobblemon.capture.in_battle": "That %1$s is in a battle and cannot be caught by you.",
@@ -758,8 +802,6 @@
"cobblemon.battle.turn": "It is now turn %1$s",
"cobblemon.battle.side_subject.ally": "your",
"cobblemon.battle.side_subject.opponent": "the opposing",
"cobblemon.battle.transform": "%1$s transformed into %2$s",
"cobblemon.battle.endability": "%1$s's Ability was suppressed!",
"cobblemon.battle.weather.raindance.start": "It started to rain!",
"cobblemon.battle.weather.raindance.upkeep": "Rain continues to fall.",
@@ -807,24 +849,6 @@
"cobblemon.battle.start.dynamax": "%1$s Dynamaxed!",
"cobblemon.battle.start.gmax": "%1$s Gigantamaxed!",
"cobblemon.battle.start.encore": "%1$s must do an encore!",
"cobblemon.battle.start.futuresight": "%1$s foresaw an attack!",
"cobblemon.battle.start.ingrain": "%1$s planted its roots!",
"cobblemon.battle.start.healblock": "%1$s was prevented from healing!",
"cobblemon.battle.start.mimic": "%1$s learned %2$s!",
"cobblemon.battle.start.octolock": "%1$s can no longer escape because of Octolock!",
"cobblemon.battle.start.burnup": "%1$s burned itself out!",
"cobblemon.battle.start.typechange": "%1$s transformed into the %2$s type!",
"cobblemon.battle.start.doomdesire": "%1$s chose Doom Desire as its destiny!",
"cobblemon.battle.start.doubleshock": "%1$s used up all of its electricity!",
"cobblemon.battle.start.stockpile": "%1$s stockpiled %2$s!",
"cobblemon.battle.start.powertrick": "%1$s switched its Attack and Defense!",
"cobblemon.battle.start.powershift": "%1$s swapped its offensive stats with its defensive stats!",
"cobblemon.battle.start.substitute": "%1$s put in a substitute!",
"cobblemon.battle.start.embargo": "%1$s can't use items anymore!",
"cobblemon.battle.start.typeadd": "%2$s type was added to %1$s!",
"cobblemon.battle.start.reflecttype": "%1$s's type became the same as %2$s's type!",
"cobblemon.battle.start.tarshot": "%1$s became weaker to fire!",
"cobblemon.battle.fieldstart.electricterrain": "An electric current ran across the battlefield!",
"cobblemon.battle.fieldstart.grassyterrain": "Grass grew to cover the battlefield!",
@@ -850,8 +874,6 @@
"cobblemon.battle.fieldactivate.perishsong": "All Pokémon that heard the song will faint in three turns!",
"cobblemon.battle.fieldactivate.iondeluge": "A deluge of ions showers the battlefield!",
"cobblemon.battle.fieldactivate.fairylock": "No one will be able to run away during the next turn!",
"cobblemon.battle.fieldactivate.teatime": "It's teatime! Everyone dug in to their Berries!",
"cobblemon.battle.sidestart.stealthrock": "Polished stones float in the air around %1$s team!",
"cobblemon.battle.sidestart.spikes": "Spikes were scattered on the ground all around %1$s team!",
@@ -861,9 +883,7 @@
"cobblemon.battle.sidestart.lightscreen": "Light Screen made %1$s team stronger against special moves!",
"cobblemon.battle.sidestart.auroraveil": "Aurora Veil made %1$s team stronger against physical and special moves!",
"cobblemon.battle.sidestart.tailwind": "The Tailwind blew from behind %1$s team!",
"cobblemon.battle.sidestart.safeguard": "%1$s team cloaked itself in a mystical veil!",
"cobblemon.battle.sidestart.luckychant": "Lucky Chant shielded %1$s team from critical hits!",
"cobblemon.battle.sidestart.mist": "%1$s team became shrouded in mist!",
"cobblemon.battle.sidestart.safeguard": "%1$s's team cloaked itself in a mystical veil!",
"cobblemon.battle.sideend.stealthrock": "The pointed stones disappeared from around %1$s team!",
"cobblemon.battle.sideend.spikes": "The spikes disappeared from the ground around %1$s team!",
@@ -873,9 +893,7 @@
"cobblemon.battle.sideend.lightscreen": "%1$s team's Light Screen wore off!",
"cobblemon.battle.sideend.auroraveil": "%1$s team's Aurora Veil wore off!",
"cobblemon.battle.sideend.tailwind": "%1$s team's Tailwind petered out!",
"cobblemon.battle.sideend.safeguard": "%1$s team is no longer protected by Safeguard!",
"cobblemon.battle.sideend.luckychant": "%1$s team's Lucky Chant wore off!",
"cobblemon.battle.sideend.mist": "%1$s team is no longer protected by mist!",
"cobblemon.battle.sideend.safeguard": "%1$s's team is no longer protected by Safeguard!",
"cobblemon.battle.cant.generic": "%1$s can't use %2$s!",
"cobblemon.battle.cant.truant": "%1$s is loafing around!",
@@ -925,7 +943,7 @@
"cobblemon.battle.activate.trick":"%1$s switched items with its target!",
"cobblemon.battle.activate.quickclaw": "%1$s can act faster than normal, thanks to its Quick Claw!",
"cobblemon.battle.activate.focusband": "%1$s hung on using its %2$s!",
"cobblemon.battle.activate.forewarn": "%2$s's %3$s was revealed!",
"cobblemon.battle.activate.forewarn": "%1$s's %2$s was revealed!",
"cobblemon.battle.activate.disguise": "It's disguise served it as a decoy!",
"cobblemon.battle.activate.liquidooze": "%1$s sucked up the liquid ooze!",
"cobblemon.battle.activate.whirlpool": "%1$s became trapped in the vortex!",
@@ -936,23 +954,7 @@
"cobblemon.battle.activate.substitute": "The substitute took damage for %1$s!",
"cobblemon.battle.activate.infestation": "%1$s has become infested!",
"cobblemon.battle.activate.phantomforce": "It broke through %1$s's protection!",
"cobblemon.battle.activate.matblock": "%3$s was blocked by the kicked-up mat!",
"cobblemon.battle.activate.electricterrain": "%1$s surrounds itself with electrified terrain!",
"cobblemon.battle.activate.ingrain": "%1$s anchored itself with its roots!",
"cobblemon.battle.activate.mist": "%1$s is protected by the mist!",
"cobblemon.battle.activate.poltergeist": "%1$s is about to be attacked by its %3$s!",
"cobblemon.battle.activate.powder": "When the flame touched the powder on the Pokémon, it exploded!",
"cobblemon.battle.activate.quash": "%1$s's move was postponed!",
"cobblemon.battle.activate.quickguard": "Quick Guard protected %1$s",
"cobblemon.battle.activate.safeguard": "%1$s is protected by Safeguard!",
"cobblemon.battle.activate.sketch": "%1$s sketched %3$s!",
"cobblemon.battle.activate.grudge": "%1$s's %3$s lost all of its PP due to the grudge!",
"cobblemon.battle.activate.speedswap": "%1$s switched Speed with its target!",
"cobblemon.battle.activate.switcheroo": "%1$s switched items with its target!",
"cobblemon.battle.activate.skillswap": "%1$s swapped Abilities with its target!",
"cobblemon.battle.activate.wideguard": "Wide Guard protected %1$s!",
"cobblemon.battle.activate.craftyshield": "Crafty Shield protected %1$s!",
"cobblemon.battle.activate.tidyup": "Tidying up complete!",
"cobblemon.battle.activate.matblock": "%1$s was blocked by the kicked-up mat!",
"cobblemon.battle.prepare.bounce": "%1$s sprang up!",
"cobblemon.battle.prepare.dig": "%1$s burrowed its way under the ground!",
@@ -971,11 +973,6 @@
"cobblemon.battle.prepare.solarbeam": "%1$s absorbed light!",
"cobblemon.battle.swapboost.generic": "%1$s swapped stat boosts with %2$s!",
"cobblemon.battle.swapboost.guardswap": "%1$s switched all changes to its Defense and Sp. Def with its target!",
"cobblemon.battle.swapboost.powerswap": "%1$s switched all changes to its Attack and Sp. Atk with its target!",
"cobblemon.battle.swapboost.heartswap": "%1$s switched stat changes with its target!",
"cobblemon.battle.copyboost.generic": "%1$s copied %2$s's stat changes!",
"cobblemon.battle.singleturn.protect": "%1$s protected itself!",
"cobblemon.battle.singleturn.endure": "%1$s braced itself!",
@@ -1056,8 +1053,6 @@
"cobblemon.battle.end.substitute": "%1$s's substitute faded!",
"cobblemon.battle.end.uproar": "%1$s calmed down.",
"cobblemon.battle.end.powertrick": "%1$s switched its Attack and Defense!",
"cobblemon.battle.end.healblock": "%1$s's Heal Block wore off!",
"cobblemon.battle.end.skydrop": "%1$s was freed from the Sky Drop!",
"cobblemon.battle.block.uproar": "But the uproar kept %1$s awake!",
@@ -1065,19 +1060,8 @@
"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 %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.slp": "But the target is already asleep!",
"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 stats did not get lowered!",
"cobblemon.battle.sethp.painsplit": "The battlers shared their pain!",
@@ -1085,8 +1069,6 @@
"cobblemon.battle.ability.unnerve": "%1$s made the opponent too nervous to eat berries!",
"cobblemon.battle.ability.anticipation": "%1$s shuddered in anticipation!",
"cobblemon.battle.ability.airlock": "The effects of the weather disappeared.",
"cobblemon.battle.ability.trace": "%1$s traced the opposing %2$s's %3$s!",
"cobblemon.battle.ability.receiver": "%1$s's %2$s was taken over!",
"cobblemon.battle.ability.generic": "%1$s's %2$s activated!",
"cobblemon.battle.ability.magicbounce": "%1$s bounced the %2$s back!",
@@ -1098,9 +1080,7 @@
"cobblemon.battle.error.insufficient_pokemon": "%1$s has %2 Pokémon when %3 are required.",
"cobblemon.battle.error.insufficient_pokemon.personal": "You have %1 usable Pokémon but you need %2.",
"cobblemon.battle.error.pokemon_is_trapped": "[Unavailable choice] Can't switch: The active Pokémon is trapped",
"cobblemon.battle.error.canceled": "There's a time and place for everything, but not now!",
"cobblemon.battle.immune": "But %1$s is immune!",
"cobblemon.battle.invertboost": "%1$s's stat changes were inverted!",
"cobblemon.battle.missed": "But it missed.",
"cobblemon.battle.hit_count": "Hit %1$s times!",
"cobblemon.battle.hit_count_singular": "Hit 1 time!",
@@ -1121,14 +1101,13 @@
"cobblemon.battle.enditem.incinerate": "%1$s's %2$s was burned up!",
"cobblemon.battle.enditem.airballoon": "%1$s's Air Balloon popped!",
"cobblemon.battle.enditem.redcard": "%1$s held up its Red Card against %3$s!",
"cobblemon.battle.enditem.pluck": "%3$s stole and ate %1$s's %2$s!",
"cobblemon.battle.enditem.berryjuice": "%1$s's Berry Juice activated!",
"cobblemon.battle.enditem.generic": "%1$s used its %2$s!",
"cobblemon.battle.enditem.mentalherb": "%1$s shook off mental effects due to its Mental Herb!",
"cobblemon.battle.enditem.powerherb": "%1$s became fully charged due to its Power Herb!",
"cobblemon.battle.enditem.mirrorherb": "%1$s copied stat changes with its Mirror Herb!",
"cobblemon.battle.enditem.whiteherb": "%1$s returned its status to normal using its White Herb!",
"cobblemon.battle.enditem.corrosivegas": "%3$s corroded %1$s's %2$s!",
"cobblemon.battle.enditem.stealeat": "%3$s stole and ate its target's %2$s!",
"cobblemon.battle.heal.zeffect": "%1$s's HP was restored by the Z-Power!",
"cobblemon.battle.heal.wish": "%1$s's wish came true!",
@@ -1144,11 +1123,10 @@
"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!",
"cobblemon.battle.bagitem.use": "%1$s used their %2$s on %3$s!",
"cobblemon.battle.bagitem.use": "%1$s used a %2$s on %3$s!",
"cobblemon.battle.bagitem.cannot": "You cannot use items right now.",
"cobblemon.battle.bagitem.invalid": "This item would not work.",
@@ -5178,20 +5156,6 @@
"cobblemon.species.walkingwake.desc": "Ecology under research.",
"cobblemon.species.ironleaves.name": "Iron Leaves",
"cobblemon.species.ironleaves.desc": "Ecology under analysis.",
"cobblemon.species.dipplin.name": "Dipplin",
"cobblemon.species.dipplin.desc": "Dipplin is two creatures in one Pokémon. Its evolution was triggered by a special apple grown only in one place.",
"cobblemon.species.poltchageist.name": "Poltchageist",
"cobblemon.species.poltchageist.desc": "Supposedly, the regrets of a tea ceremony master who died before perfecting his craft lingered in some matcha and became a Pokémon.",
"cobblemon.species.sinistcha.name": "Sinistcha",
"cobblemon.species.sinistcha.desc": "It pretends to be tea, trying to fool people into drinking it so it can drain their life-force. Its ruse is generally unsuccessful.",
"cobblemon.species.okidogi.name": "Okidogi",
"cobblemon.species.okidogi.desc": "After all its muscles were stimulated by the toxic chain around its neck, Okidogi transformed and gained a powerful physique.",
"cobblemon.species.munkidori.name": "Munkidori",
"cobblemon.species.munkidori.desc": "The chain is made from toxins that enhance capabilities. It stimulated Munkidori's brain and caused the Pokémon's psychic powers to bloom.",
"cobblemon.species.fezandipiti.name": "Fezandipiti",
"cobblemon.species.fezandipiti.desc": "Fezandipiti owes its beautiful looks and lovely voice to the toxic stimulants emanating from the chain wrapped around its body.",
"cobblemon.species.ogerpon.name": "Ogerpon",
"cobblemon.species.ogerpon.desc": "This Pokémon's type changes based on which mask it's wearing. It confounds its enemies with nimble movements and kicks.",
"cobblemon.ability.adaptability": "Adaptability",
"cobblemon.ability.adaptability.desc": "Powers up moves of the same type as the Pokémon.",
@@ -5319,14 +5283,6 @@
"cobblemon.ability.electricsurge.desc": "Turns the ground into Electric Terrain when the Pokémon enters a battle.",
"cobblemon.ability.electromorphosis": "Electromorphosis",
"cobblemon.ability.electromorphosis.desc": "This Pokemon gains the Charge effect when it takes a hit from an attack.",
"cobblemon.ability.embodyaspectcornerstone": "Embody Aspect - Cornerstone Mask",
"cobblemon.ability.embodyaspectcornerstone.desc": "The Pokémon's heart fills with memories, causing the Cornerstone Mask to shine and the Pokémon's Defense stat to be boosted.",
"cobblemon.ability.embodyaspecthearthflame": "Embody Aspect - Hearthflame Mask",
"cobblemon.ability.embodyaspecthearthflame.desc": "The Pokémon's heart fills with memories, causing the Hearthflame Mask to shine and the Pokémon's Attack stat to be boosted.",
"cobblemon.ability.embodyaspectteal": "Embody Aspect - Teal Mask",
"cobblemon.ability.embodyaspectteal.desc": "The Pokémon's heart fills with memories, causing the Teal Mask to shine and the Pokémon's Speed stat to be boosted.",
"cobblemon.ability.embodyaspectwellspring": "Embody Aspect - Wellspring Mask",
"cobblemon.ability.embodyaspectwellspring.desc": "The Pokémon's heart fills with memories, causing the Wellspring Mask to shine and the Pokémon's Sp. Def stat to be boosted.",
"cobblemon.ability.emergencyexit": "Emergency Exit",
"cobblemon.ability.emergencyexit.desc": "The Pokémon, sensing danger, switches out when its HP becomes half or less.",
"cobblemon.ability.fairyaura": "Fairy Aura",
@@ -5393,8 +5349,6 @@
"cobblemon.ability.heavymetal.desc": "Doubles the Pokémon’s weight.",
"cobblemon.ability.honeygather": "Honey Gather",
"cobblemon.ability.honeygather.desc": "The Pokémon may gather Honey after a battle.",
"cobblemon.ability.hospitality": "Hospitality",
"cobblemon.ability.hospitality.desc": "When the Pokémon enters a battle, it showers its ally with hospitality, restoring a small amount of the ally's HP",
"cobblemon.ability.hugepower": "Huge Power",
"cobblemon.ability.hugepower.desc": "Doubles the Pokémon’s Attack stat.",
"cobblemon.ability.hungerswitch": "Hunger Switch",
@@ -5479,8 +5433,6 @@
"cobblemon.ability.merciless.desc": "The Pokémon’s attacks become critical hits if the target is poisoned.",
"cobblemon.ability.mimicry": "Mimicry",
"cobblemon.ability.mimicry.desc": "Changes the Pokémon’s type depending on the terrain.",
"cobblemon.ability.mindseye": "Mind’s Eye",
"cobblemon.ability.mindseye.desc": "The Pokémon ignores changes to opponents' evasiveness, its accuracy can't be lowered, and it can hit Ghost types with Normal-type and Fighting-type moves",
"cobblemon.ability.minus": "Minus",
"cobblemon.ability.minus.desc": "Boosts the Sp. Atk stat of the Pokémon if an ally with the Plus or Minus Ability is also in battle.",
"cobblemon.ability.mirrorarmor": "Mirror Armor",
@@ -5703,8 +5655,6 @@
"cobblemon.ability.suctioncups.desc": "This Pokémon uses suction cups to stay in one spot to negate all moves and items that force switching out.",
"cobblemon.ability.superluck": "Super Luck",
"cobblemon.ability.superluck.desc": "The Pokémon is so lucky that the critical-hit ratios of its moves are boosted.",
"cobblemon.ability.supersweetsyrup": "Supersweet Syrup",
"cobblemon.ability.supersweetsyrup.desc": "Lowers the evasion of opposing Pok�mon by 1 stage when first sent into battle",
"cobblemon.ability.supremeoverlord": "Supreme Overlord",
"cobblemon.ability.supremeoverlord.desc": "This Pokemon's moves have their power multiplied by 1+(X*0.1), where X is the total number of times any Pokemon has fainted on the user's side when this Ability became active, and X cannot be greater than 5.",
"cobblemon.ability.surgesurfer": "Surge Surfer",
@@ -5745,10 +5695,8 @@
"cobblemon.ability.toughclaws.desc": "Powers up moves that make direct contact.",
"cobblemon.ability.toxicboost": "Toxic Boost",
"cobblemon.ability.toxicboost.desc": "Powers up physical attacks when the Pokémon is poisoned.",
"cobblemon.ability.toxicchain": "Toxic Chain",
"cobblemon.ability.toxicchain.desc": "The power of the Pokémon's toxic chain may badly poison any target the Pok�mon hits with a move",
"cobblemon.ability.toxicdebris": "Toxic Debris",
"cobblemon.ability.toxicdebris.desc": "If this Pokémon is hit by a physical attack, Toxic Spikes are set on the opposing side.",
"cobblemon.ability.toxicdebris.desc": "If this Pokemon is hit by a physical attack, Toxic Spikes are set on the opposing side.",
"cobblemon.ability.trace": "Trace",
"cobblemon.ability.trace.desc": "When it enters a battle, the Pokémon copies an opposing Pokémon’s Ability.",
"cobblemon.ability.transistor": "Transistor",
@@ -47,8 +47,6 @@
"item.cobblemon.yellow_apricorn": "Bonguri Amarillo",
"item.cobblemon.vivichoke_seeds": "Semillas de Revibrote",
"item.cobblemon.vivichoke": "Revibrote",
"item.cobblemon.apricorn_boat": "Barca de bonguri",
"item.cobblemon.apricorn_chest_boat": "Barca de bonguri con cofre",
"item.cobblemon.link_cable": "Cable Link",
"item.cobblemon.dragon_scale": "Escama Dragón",
"item.cobblemon.kings_rock": "Roca del Rey",
@@ -102,11 +100,11 @@
"item.cobblemon.iron": "Hierro",
"item.cobblemon.protein": "Proteína",
"item.cobblemon.zinc": "Zinc",
"item.cobblemon.potion": "Poción",
"item.cobblemon.super_potion": "Superpoción",
"item.cobblemon.hyper_potion": "Hiperpoción",
"item.cobblemon.max_potion": "Poción Máxima",
"item.cobblemon.full_restore": "Restaurar Todo",
"item.cobblemon.potion": "Potion",
"item.cobblemon.super_potion": "Super Potion",
"item.cobblemon.hyper_potion": "Hyper Potion",
"item.cobblemon.max_potion": "Max Potion",
"item.cobblemon.full_restore": "Full Restore",
"item.cobblemon.red_mint_leaf": "Hoja de Menta Roja",
"item.cobblemon.red_mint_leaf.tooltip": "Capaz de cambiar la estadística de ataque de un Pokémon",
"item.cobblemon.blue_mint_leaf": "Hoja de Menta Azul",
@@ -142,7 +140,7 @@
"item.cobblemon.serious_mint": "Menta Seria",
"item.cobblemon.assault_vest": "Chaleco Asalto",
"item.cobblemon.auspicious_armor": "Armadura Auspiciosa",
"item.cobblemon.malicious_armor": "Armadura Maldita",
"item.cobblemon.malicious_armor": "Malicious Armor",
"item.cobblemon.black_belt": "Cinturón Negro",
"item.cobblemon.black_glasses": "Gafas de Sol",
"item.cobblemon.black_sludge": "Lodo Negro",
@@ -150,10 +148,8 @@
"item.cobblemon.choice_band": "Cinta Elección",
"item.cobblemon.choice_scarf": "Pañuelo Elección",
"item.cobblemon.choice_specs": "Gafas Elección",
"item.cobblemon.cleanse_tag": "Amuleto",
"item.cobblemon.dragon_fang": "Colmillo Dragón",
"item.cobblemon.exp_share": "Repartir Experiencia",
"item.cobblemon.fairy_feather": "Pluma feérica",
"item.cobblemon.focus_band": "Cinta Aguante",
"item.cobblemon.hard_stone": "Piedra Dura",
"item.cobblemon.heavy_duty_boots": "Botas Gruesas",
@@ -178,26 +174,21 @@
"item.cobblemon.spell_tag": "Hechizo",
"item.cobblemon.twisted_spoon": "Cuchara Torcida",
"item.cobblemon.wise_glasses": "Gafas Especiales",
"item.cobblemon.mental_herb": "Hierba Mental",
"item.cobblemon.mirror_herb": "Hierba Copia",
"item.cobblemon.power_herb": "Hierba Única",
"item.cobblemon.white_herb": "Hierba Blanca",
"item.cobblemon.bright_powder": "Polvo Brillo",
"item.cobblemon.metal_powder": "Polvo Metálico",
"item.cobblemon.quick_powder": "Polvo Veloz",
"item.cobblemon.destiny_knot": "Lazo Destino",
"item.cobblemon.everstone": "Piedra Eterna",
"item.cobblemon.power_anklet": "Franja Recia",
"item.cobblemon.power_band": "Banda Recia",
"item.cobblemon.power_belt": "Cinturón Recio",
"item.cobblemon.power_bracer": "Brazal Recio",
"item.cobblemon.power_lens": "Lente Recia",
"item.cobblemon.power_weight": "Pesa Recia",
"item.cobblemon.flame_orb": "Llamasfera",
"item.cobblemon.light_orb": "Bola luminosa",
"item.cobblemon.smoke_ball": "Bola de humo",
"item.cobblemon.toxic_orb": "Toxisfera",
"item.cobblemon.life_orb": "Life Orb",
"item.cobblemon.mental_herb": "Mental Herb",
"item.cobblemon.mirror_herb": "Mirror Herb",
"item.cobblemon.power_herb": "Power Herb",
"item.cobblemon.white_herb": "White Herb",
"item.cobblemon.bright_powder": "Bright Powder",
"item.cobblemon.metal_powder": "Metal Powder",
"item.cobblemon.quick_powder": "Quick Powder",
"item.cobblemon.destiny_knot": "Destiny Knot",
"item.cobblemon.everstone": "Everstone",
"item.cobblemon.power_anklet": "Power Anklet",
"item.cobblemon.power_band": "Power Band",
"item.cobblemon.power_belt": "Power Belt",
"item.cobblemon.power_bracer": "Power Bracer",
"item.cobblemon.power_lens": "Power Lens",
"item.cobblemon.power_weight": "Power Weight",
"item.cobblemon.poke_ball.tooltip": "Ratio de captura ×1",
"item.cobblemon.slate_ball.tooltip": "Ratio de captura ×1",
"item.cobblemon.azure_ball.tooltip": "Ratio de captura ×1",
@@ -245,8 +236,8 @@
"item.cobblemon.roasted_leek": "Puerro Cocido",
"item.cobblemon.leek_and_potato_stew": "Estofado de Puerro y Patata",
"item.cobblemon.braised_vivichoke": "Revibrote Hervido",
"item.cobblemon.vivichoke_dip": "Salsa de Revibrote",
"item.cobblemon.berry_juice": "Zumo de bayas",
"item.cobblemon.vivichoke_dip": "Vivichoke Dip",
"item.cobblemon.berry_juice": "Berry Juice",
"item.cobblemon.remedy": "Remedio",
"item.cobblemon.fine_remedy": "Superremedio",
"item.cobblemon.superb_remedy": "Hiperremedio",
@@ -257,23 +248,23 @@
"item.cobblemon.pp_up": "Más PP",
"item.cobblemon.pp_max": "PP Máximo",
"item.cobblemon.x_attack": "Ataque X",
"item.cobblemon.x_defence": "Defensa X",
"item.cobblemon.x_defence": "X Defense",
"item.cobblemon.x_accuracy": "Precisión X",
"item.cobblemon.x_speed": "Velocidad X",
"item.cobblemon.x_special_defence": "Defensa Especial X",
"item.cobblemon.x_special_attack": "Ataque Especial X",
"item.cobblemon.dire_hit": "Directo",
"item.cobblemon.guard_spec": "Protección Especial",
"item.cobblemon.full_heal": "Cura Total",
"item.cobblemon.antidote": "Antídoto",
"item.cobblemon.awakening": "Despertar",
"item.cobblemon.burn_heal": "Antiquemar",
"item.cobblemon.ice_heal": "Antihielo",
"item.cobblemon.paralyze_heal": "Antiparalizador",
"item.cobblemon.ether": "Éter",
"item.cobblemon.max_ether": "Éter Máximo",
"item.cobblemon.x_special_defence": "X Special Defense",
"item.cobblemon.x_special_attack": "X Special Attack",
"item.cobblemon.dire_hit": "Dire Hit",
"item.cobblemon.guard_spec": "Guard Spec",
"item.cobblemon.full_heal": "Full Heal",
"item.cobblemon.antidote": "Antidote",
"item.cobblemon.awakening": "Awakening",
"item.cobblemon.burn_heal": "Burn Heal",
"item.cobblemon.ice_heal": "Ice Heal",
"item.cobblemon.paralyze_heal": "Paralyze Heal",
"item.cobblemon.ether": "Ether",
"item.cobblemon.max_ether": "Max Ether",
"item.cobblemon.elixir": "Elixir",
"item.cobblemon.max_elixir": "Elixir Máximo",
"item.cobblemon.max_elixir": "Max Elixir",
"itemGroup.cobblemon.blocks": "Bloques",
"itemGroup.cobblemon.pokeball": "Poké Balls",
"itemGroup.cobblemon.agriculture": "Agricultura",
@@ -288,13 +279,12 @@
"block.cobblemon.apricorn_leaves": "Hojas de Bonguri",
"block.cobblemon.apricorn_fence": "Valla de Bonguri",
"block.cobblemon.apricorn_sign": "Cartel de Bonguri",
"block.cobblemon.apricorn_hanging_sign": "Cartel colgante de Bonguri",
"block.cobblemon.apricorn_stairs": "Escaleras de Bonguri",
"block.cobblemon.apricorn_pressure_plate": "Placa de presión de Bonguri",
"block.cobblemon.apricorn_button": "Botón de Bonguri",
"block.cobblemon.apricorn_slab": "Losa de Bonguri",
"block.cobblemon.apricorn_fence_gate": "Puerta de valla de Bonguri",
"block.cobblemon.big_root": "Raíz Grande",
"block.cobblemon.big_root": "Big Root",
"block.cobblemon.black_apricorn_sapling": "Brote de Bonguri Negro",
"block.cobblemon.blue_apricorn_sapling": "Brote de Bonguri Azul",
"block.cobblemon.green_apricorn_sapling": "Brote de Bonguri Verde",
@@ -315,8 +305,8 @@
"block.cobblemon.green_mint": "Semillas de Menta Verde",
"block.cobblemon.white_mint": "Semillas de Menta Blanca",
"block.cobblemon.vivichoke_seeds": "Semillas de Revibrote",
"block.cobblemon.pep_up_flower": "Flor Éter",
"block.cobblemon.potted_pep_up_flower": "Flor Éter en maceta",
"block.cobblemon.pep_up_flower": "Pep-Up Flower",
"block.cobblemon.potted_pep_up_flower": "Potted Pep-Up Flower",
"cobblemon.overflow_no_pc": "¡Tu equipo estaba lleno y no tienes un PC!",
"cobblemon.overflow_no_space": "¡Tu equipo estaba lleno y también lo estaba %1$s!",
"cobblemon.overflow_to_pc": "¡Tu equipo estaba lleno! %1$s ha sido añadido a %2$s.",
@@ -325,7 +315,7 @@
"cobblemon.command.pokespawn.invalid-move": "Nombre de Movimiento inválido",
"cobblemon.command.clearparty.nonethere": "No hay Pokémon en el equipo de %1$s.",
"cobblemon.command.clearparty.cleared": "Se ha limpiado el equipo de %1$s.",
"cobblemon.command.clearpc.cleared": "Se ha limpiado el PC de %1$s.",
"cobblemon.command.clearpc.cleared": "Cleared %1$s's PC.",
"cobblemon.ui.generic.yes": "Sí",
"cobblemon.ui.generic.no": "No",
"cobblemon.ui.pokenav.title": "PokéNav",
@@ -432,145 +422,145 @@
"cobblemon.drop.item.full": "Tu inventario estaba lleno, así que %1$s cayó al suelo.",
"cobblemon.mint.interact": "¡Las estadísticas de %1$s han cambiado!",
"cobblemon.mint.same_nature": "Las estadísticas de %1$s no parecen afectadas por la %2$s.",
"itemGroup.cobblemon.plants": "Plantas",
"item.cobblemon.aguav_berry": "Baya Guaya",
"item.cobblemon.aguav_berry.tooltip": "Restaura 1/3 de la vida máxima si tiene 1/4 de vida o menos; confunde si tiene una naturaleza -Def. Esp.",
"item.cobblemon.apicot_berry": "Baya Aricoc",
"item.cobblemon.apicot_berry.tooltip": "Aumenta la Def. Esp del portador en 1 cuando tiene 1/4 de la vida máxima o menos",
"item.cobblemon.aspear_berry": "Baya Perasi",
"item.cobblemon.aspear_berry.tooltip": "El portador puede curarse si es congelado",
"item.cobblemon.babiri_berry": "Baya Baribá",
"item.cobblemon.babiri_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Acero",
"item.cobblemon.belue_berry": "Baya Andano",
"item.cobblemon.belue_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.bluk_berry": "Baya Oram",
"item.cobblemon.bluk_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.charti_berry": "Baya Alcho",
"item.cobblemon.charti_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Roca",
"item.cobblemon.cheri_berry": "Baya Zreza",
"item.cobblemon.cheri_berry.tooltip": "El portador puede curarse si es paralizado",
"item.cobblemon.chesto_berry": "Baya Atania",
"item.cobblemon.chesto_berry.tooltip": "El portador puede despertarse si cae dormido",
"item.cobblemon.chilan_berry": "Baya Chilan",
"item.cobblemon.chilan_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Normal",
"item.cobblemon.chople_berry": "Baya Pomaro",
"item.cobblemon.chople_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Lucha",
"item.cobblemon.coba_berry": "Baya Kouba",
"item.cobblemon.coba_berry.tooltip": "Reduce a la mitad el daño recibido por un ataque supereficaz de tipo Volador",
"item.cobblemon.colbur_berry": "Baya Dillo",
"item.cobblemon.colbur_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Siniestro",
"item.cobblemon.cornn_berry": "Baya Mais",
"item.cobblemon.cornn_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.custap_berry": "Baya Chiri",
"item.cobblemon.custap_berry.tooltip": "El portador se mueve primero por prioridad cuando tiene 1/4 de sus PS máximos o menos",
"item.cobblemon.durin_berry": "Baya Rudion",
"item.cobblemon.durin_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.enigma_berry": "Baya Enigma",
"item.cobblemon.enigma_berry.tooltip": "Cura 1/4 de los PS máximos si el portador es golpeado por un movimiento supereficaz",
"item.cobblemon.figy_berry": "Baya Higog",
"item.cobblemon.figy_berry.tooltip": "Restaura 1/3 de la vida máxima si tiene 1/4 de vida o menos; confunde si tiene una naturaleza -At.",
"item.cobblemon.ganlon_berry": "Baya Gonlan",
"item.cobblemon.ganlon_berry.tooltip": "Aumenta la Defensa del portador en 1 cuando tiene 1/4 de la vida máxima o menos",
"item.cobblemon.grepa_berry": "Baya Uvav",
"item.cobblemon.grepa_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.haban_berry": "Baya Anjiro",
"item.cobblemon.haban_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Dragón",
"item.cobblemon.hondew_berry": "Baya Meluce",
"item.cobblemon.hondew_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.hopo_berry": "Baya Lupu",
"item.cobblemon.hopo_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.iapapa_berry": "Baya Pabaya",
"item.cobblemon.iapapa_berry.tooltip": "Restaura 1/3 de la vida máxima si tiene 1/4 de vida o menos; confunde si tiene una naturaleza -Def",
"item.cobblemon.jaboca_berry": "Baya Jaboca",
"item.cobblemon.jaboca_berry.tooltip": "Si el portador es golpeado por un ataque físico, el atacante pierde 1/8 de sus PS máximos",
"item.cobblemon.kasib_berry": "Baya Drasi",
"item.cobblemon.kasib_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Fantasma",
"item.cobblemon.kebia_berry": "Baya Kebia",
"item.cobblemon.kebia_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Veneno",
"item.cobblemon.kee_berry": "Baya Biglia",
"item.cobblemon.kee_berry.tooltip": "Aumenta la Defensa del portador en 1 nivel tras recibir un ataque físico",
"item.cobblemon.kelpsy_berry": "Baya Algama",
"item.cobblemon.kelpsy_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.lansat_berry": "Baya Zonlan",
"item.cobblemon.lansat_berry.tooltip": "El portador obtiene el efecto de Foco Energía si tiene 1/4 de sus PS máximos o menos",
"item.cobblemon.leppa_berry": "Baya Zanama",
"item.cobblemon.leppa_berry.tooltip": "Restaura 10 PP al primer movimiento del portador que se quede sin PP",
"item.cobblemon.liechi_berry": "Baya Lichi",
"item.cobblemon.liechi_berry.tooltip": "Aumenta el Ataque del portador en 1 cuando tiene 1/4 de la vida máxima o menos",
"item.cobblemon.lum_berry": "Baya Ziuela",
"item.cobblemon.lum_berry.tooltip": "El portador se cura de todos los estados alterados y la confusión",
"item.cobblemon.mago_berry": "Baya Ango",
"item.cobblemon.mago_berry.tooltip": "Restaura 1/3 de la vida máxima si tiene 1/4 de vida o menos; confunde si tiene una naturaleza -Vel.",
"item.cobblemon.magost_berry": "Baya Aostan",
"item.cobblemon.magost_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.maranga_berry": "Baya Maranga",
"item.cobblemon.maranga_berry.tooltip": "Aumenta la Def. Esp del portador en 1 nivel tras recibir un ataque físico",
"item.cobblemon.micle_berry": "Baya Lagro",
"item.cobblemon.micle_berry.tooltip": "El siguiente movimiento del portador aumenta su precisión x1.2 cuanto tiene 1/4 de sus PS o menos",
"item.cobblemon.nanab_berry": "Baya Latano",
"item.cobblemon.nanab_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.touga_berry": "Baya Touga",
"item.cobblemon.touga_berry.tooltip": "El portador puede curarse si es confundido",
"item.cobblemon.nomel_berry": "Baya Monli",
"item.cobblemon.nomel_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.occa_berry": "Baya Caoca",
"item.cobblemon.occa_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Fuego",
"item.cobblemon.oran_berry": "Baya Aranja",
"item.cobblemon.oran_berry.tooltip": "Cura 10 PS cuando tiene la mitad de sus PS o menos",
"item.cobblemon.pamtre_berry": "Baya Plama",
"item.cobblemon.pamtre_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.passho_berry": "Baya Pasio",
"item.cobblemon.passho_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Agua",
"item.cobblemon.payapa_berry": "Baya Payapa",
"item.cobblemon.payapa_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Psíquico",
"item.cobblemon.pecha_berry": "Baya Meloc",
"item.cobblemon.pecha_berry.tooltip": "El portador puede curarse si es envenenado",
"item.cobblemon.persim_berry": "Baya Caquic",
"item.cobblemon.persim_berry.tooltip": "El portador puede curarse si es confundido",
"item.cobblemon.petaya_berry": "Baya Yapati",
"item.cobblemon.petaya_berry.tooltip": "Aumenta el At. Esp del portador en 1 cuando tiene 1/4 de la vida máxima o menos",
"item.cobblemon.pinap_berry": "Baya Pinia",
"item.cobblemon.pinap_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.pomeg_berry": "Baya Grana",
"item.cobblemon.pomeg_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.qualot_berry": "Baya Íspero",
"item.cobblemon.qualot_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.rabuta_berry": "Baya Rautan",
"item.cobblemon.rabuta_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.rawst_berry": "Baya Safre",
"item.cobblemon.rawst_berry.tooltip": "El portador puede curarse si es quemado",
"item.cobblemon.razz_berry": "Baya Frambu",
"item.cobblemon.razz_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.rindo_berry": "Baya Tamar",
"item.cobblemon.rindo_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Planta",
"item.cobblemon.roseli_berry": "Baya Hibis",
"item.cobblemon.roseli_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Hada",
"item.cobblemon.rowap_berry": "Baya Magua",
"item.cobblemon.rowap_berry.tooltip": "Si el portador es golpeado por un ataque especial, el atacante pierde 1/8 de sus PS máximos",
"item.cobblemon.salac_berry": "Baya Aslac",
"item.cobblemon.salac_berry.tooltip": "Aumenta la Velocidad del portador en 1 cuando tiene 1/4 de la vida máxima o menos",
"item.cobblemon.shuca_berry": "Baya Acardo",
"item.cobblemon.shuca_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Tierra",
"item.cobblemon.sitrus_berry": "Baya Zidra",
"item.cobblemon.sitrus_berry.tooltip": "Cura 1/4 de los PS máximos cuando tiene la mitad de sus PS o menos",
"item.cobblemon.spelon_berry": "Baya Wikano",
"item.cobblemon.spelon_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.starf_berry": "Baya Arabol",
"item.cobblemon.starf_berry.tooltip": "Aumenta una estadística aleatoria en 2 niveles cuando tiene 1/4 de PS máximo o menos",
"item.cobblemon.tamato_berry": "Baya Tamate",
"item.cobblemon.tamato_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.tanga_berry": "Baya Yecana",
"item.cobblemon.tanga_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Bicho",
"item.cobblemon.wacan_berry": "Baya Gualot",
"item.cobblemon.wacan_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Eléctrico",
"item.cobblemon.watmel_berry": "Baya Sambia",
"item.cobblemon.watmel_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.wepear_berry": "Baya Peragu",
"item.cobblemon.wepear_berry.tooltip": "El portador no puede comerse la baya",
"item.cobblemon.wiki_berry": "Baya Wiki",
"item.cobblemon.wiki_berry.tooltip": "Restaura 1/3 de la vida máxima si tiene 1/4 de vida o menos; confunde si tiene una naturaleza -At. Esp.",
"item.cobblemon.yache_berry": "Baya Rimoya",
"item.cobblemon.yache_berry.tooltip": "Reduce a la mitad el daño recibido de un ataque supereficaz de tipo Hielo",
"itemGroup.cobblemon.plants": "Plants",
"item.cobblemon.aguav_berry": "Aguav Berry",
"item.cobblemon.aguav_berry.tooltip": "Restores 1/3 max HP at 1/4 max HP or less; confuses if -SpD Nature",
"item.cobblemon.apicot_berry": "Apicot Berry",
"item.cobblemon.apicot_berry.tooltip": "Raises holder's Sp. Def by 1 stage when at 1/4 max HP or less",
"item.cobblemon.aspear_berry": "Aspear Berry",
"item.cobblemon.aspear_berry.tooltip": "Holder is cured if it is frozen",
"item.cobblemon.babiri_berry": "Babiri Berry",
"item.cobblemon.babiri_berry.tooltip": "Halves damage taken from a supereffective Steel-type attack",
"item.cobblemon.belue_berry": "Belue Berry",
"item.cobblemon.belue_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.bluk_berry": "Bluk Berry",
"item.cobblemon.bluk_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.charti_berry": "Charti Berry",
"item.cobblemon.charti_berry.tooltip": "Halves damage taken from a supereffective Rock-type attack",
"item.cobblemon.cheri_berry": "Cheri Berry",
"item.cobblemon.cheri_berry.tooltip": "Holder cures itself if it is paralyzed",
"item.cobblemon.chesto_berry": "Chesto Berry",
"item.cobblemon.chesto_berry.tooltip": "Holder wakes up if it is asleep",
"item.cobblemon.chilan_berry": "Chilan Berry",
"item.cobblemon.chilan_berry.tooltip": "Halves damage taken from a Normal-type attack",
"item.cobblemon.chople_berry": "Chople Berry",
"item.cobblemon.chople_berry.tooltip": "Halves damage taken from a supereffective Fighting-type attack",
"item.cobblemon.coba_berry": "Coba Berry",
"item.cobblemon.coba_berry.tooltip": "Halves damage taken from a supereffective Flying-type attac",
"item.cobblemon.colbur_berry": "Colbur Berry",
"item.cobblemon.colbur_berry.tooltip": "Halves damage taken from a supereffective Dark-type attack",
"item.cobblemon.cornn_berry": "Cornn Berry",
"item.cobblemon.cornn_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.custap_berry": "Custap Berry",
"item.cobblemon.custap_berry.tooltip": "Holder moves first in its priority bracket when at 1/4 max HP or less",
"item.cobblemon.durin_berry": "Durin Berry",
"item.cobblemon.durin_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.enigma_berry": "Enigma Berry",
"item.cobblemon.enigma_berry.tooltip": "Restores 1/4 max HP after holder is hit by a supereffective move",
"item.cobblemon.figy_berry": "Figy Berry",
"item.cobblemon.figy_berry.tooltip": "Restores 1/3 max HP at 1/4 max HP or less; confuses if -Atk Nature",
"item.cobblemon.ganlon_berry": "Ganlon Berry",
"item.cobblemon.ganlon_berry.tooltip": "Raises holder's Defense by 1 stage when at 1/4 max HP or less",
"item.cobblemon.grepa_berry": "Grepa Berry",
"item.cobblemon.grepa_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.haban_berry": "Haban Berry",
"item.cobblemon.haban_berry.tooltip": "Halves damage taken from a supereffective Dragon-type attack",
"item.cobblemon.hondew_berry": "Hondew Berry",
"item.cobblemon.hondew_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.hopo_berry": "Hopo Berry",
"item.cobblemon.hopo_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.iapapa_berry": "Iapapa Berry",
"item.cobblemon.iapapa_berry.tooltip": "Restores 1/3 max HP at 1/4 max HP or less; confuses if -Def Nature",
"item.cobblemon.jaboca_berry": "Jaboca Berry",
"item.cobblemon.jaboca_berry.tooltip": "If holder is hit by a physical move, attacker loses 1/8 of its max HP",
"item.cobblemon.kasib_berry": "Kasib Berry",
"item.cobblemon.kasib_berry.tooltip": "Halves damage taken from a supereffective Ghost-type attack",
"item.cobblemon.kebia_berry": "Kebia Berry",
"item.cobblemon.kebia_berry.tooltip": "Halves damage taken from a supereffective Poison-type attack",
"item.cobblemon.kee_berry": "Kee Berry",
"item.cobblemon.kee_berry.tooltip": "Raises holder's Defense by 1 stage after it is hit by a physical attack",
"item.cobblemon.kelpsy_berry": "Kelpsy Berry",
"item.cobblemon.kelpsy_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.lansat_berry": "Lansat Berry",
"item.cobblemon.lansat_berry.tooltip": "Holder gains the Focus Energy effect when at 1/4 max HP or less",
"item.cobblemon.leppa_berry": "Leppa Berry",
"item.cobblemon.leppa_berry.tooltip": "Restores 10 PP to the first of the holder's moves to reach 0 PP",
"item.cobblemon.liechi_berry": "Liechi Berry",
"item.cobblemon.liechi_berry.tooltip": "Raises holder's Attack by 1 stage when at 1/4 max HP or less",
"item.cobblemon.lum_berry": "Lum Berry",
"item.cobblemon.lum_berry.tooltip": "Holder cures itself if it has a non-volatile status or is confused",
"item.cobblemon.mago_berry": "Mago Berry",
"item.cobblemon.mago_berry.tooltip": "Restores 1/3 max HP at 1/4 max HP or less; confuses if -Spe Nature",
"item.cobblemon.magost_berry": "Magost Berry",
"item.cobblemon.magost_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.maranga_berry": "Maranga Berry",
"item.cobblemon.maranga_berry.tooltip": "Raises holder's Sp. Def by 1 stage after it is hit by a special attack",
"item.cobblemon.micle_berry": "Micle Berry",
"item.cobblemon.micle_berry.tooltip": "Holder's next move has 1.2x accuracy when at 1/4 max HP or less",
"item.cobblemon.nanab_berry": "Nanab Berry",
"item.cobblemon.nanab_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.touga_berry": "Touga Berry",
"item.cobblemon.touga_berry.tooltip": "Holder is cured if it is confused",
"item.cobblemon.nomel_berry": "Nomel Berry",
"item.cobblemon.nomel_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.occa_berry": "Occa Berry",
"item.cobblemon.occa_berry.tooltip": "Halves damage taken from a supereffective Fire-type attack",
"item.cobblemon.oran_berry": "Oran Berry",
"item.cobblemon.oran_berry.tooltip": "Restores 10 HP when at 1/2 max HP or less",
"item.cobblemon.pamtre_berry": "Pamtre Berry",
"item.cobblemon.pamtre_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.passho_berry": "Passho Berry",
"item.cobblemon.passho_berry.tooltip": "Halves damage taken from a supereffective Water-type attack",
"item.cobblemon.payapa_berry": "Payapa Berry",
"item.cobblemon.payapa_berry.tooltip": "Halves damage taken from a supereffective Psychic-type attack",
"item.cobblemon.pecha_berry": "Pecha Berry",
"item.cobblemon.pecha_berry.tooltip": "Holder is cured if it is poisoned",
"item.cobblemon.persim_berry": "Persim Berry",
"item.cobblemon.persim_berry.tooltip": "Holder is cured if it is confused",
"item.cobblemon.petaya_berry": "Petaya Berry",
"item.cobblemon.petaya_berry.tooltip": "Raises holder's Sp. Atk by 1 stage when at 1/4 max HP or less",
"item.cobblemon.pinap_berry": "Pinap Berry",
"item.cobblemon.pinap_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.pomeg_berry": "Pomeg Berry",
"item.cobblemon.pomeg_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.qualot_berry": "Qualot Berry",
"item.cobblemon.qualot_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.rabuta_berry": "Rabuta Berry",
"item.cobblemon.rabuta_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.rawst_berry": "Rawst Berry",
"item.cobblemon.rawst_berry.tooltip": "Holder is cured if it is burned",
"item.cobblemon.razz_berry": "Razz Berry",
"item.cobblemon.razz_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.rindo_berry": "Rindo Berry",
"item.cobblemon.rindo_berry.tooltip": "Halves damage taken from a supereffective Grass-type attack",
"item.cobblemon.roseli_berry": "Roseli Berry",
"item.cobblemon.roseli_berry.tooltip": "Halves damage taken from a supereffective Fairy-type attack",
"item.cobblemon.rowap_berry": "Rowap Berry",
"item.cobblemon.rowap_berry.tooltip": "If holder is hit by a special move, attacker loses 1/8 of its max HP",
"item.cobblemon.salac_berry": "Salac Berry",
"item.cobblemon.salac_berry.tooltip": "Raises holder's Speed by 1 stage when at 1/4 max HP or less",
"item.cobblemon.shuca_berry": "Shuca Berry",
"item.cobblemon.shuca_berry.tooltip": "Halves damage taken from a supereffective Ground-type attack",
"item.cobblemon.sitrus_berry": "Sitrus Berry",
"item.cobblemon.sitrus_berry.tooltip": "Restores 1/4 max HP when at 1/2 max HP or less",
"item.cobblemon.spelon_berry": "Spelon Berry",
"item.cobblemon.spelon_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.starf_berry": "Starf Berry",
"item.cobblemon.starf_berry.tooltip": "Raises a random stat by 2 when at 1/4 max HP or less",
"item.cobblemon.tamato_berry": "Tamato Berry",
"item.cobblemon.tamato_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.tanga_berry": "Tanga Berry",
"item.cobblemon.tanga_berry.tooltip": "Halves damage taken from a supereffective Bug-type attack",
"item.cobblemon.wacan_berry": "Wacan Berry",
"item.cobblemon.wacan_berry.tooltip": "Halves damage taken from a supereffective Electric-type attack",
"item.cobblemon.watmel_berry": "Watmel Berry",
"item.cobblemon.watmel_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.wepear_berry": "Wepear Berry",
"item.cobblemon.wepear_berry.tooltip": "Cannot be eaten by the holder",
"item.cobblemon.wiki_berry": "Wiki Berry",
"item.cobblemon.wiki_berry.tooltip": "Restores 1/3 max HP at 1/4 max HP or less; confuses if -SpA Nature",
"item.cobblemon.yache_berry": "Yache Berry",
"item.cobblemon.yache_berry.tooltip": "Halves damage taken from a supereffective Ice-type attack",
"cobblemon.command.general.invalid-party-slot": "¡No hay Pokémon en la ranura %1$s!",
"cobblemon.command.givepokemon.give": "Se entregó %1$s a %2$s.",
"cobblemon.command.pokemonedit": "Se editó el %1$s de %2$s.",
@@ -593,8 +583,8 @@
"advancements.cobblemon.root.description": "Elige un Pokémon inicial y embárcate en una nueva aventura",
"advancements.cobblemon.obtain_leftovers": "Reduce, Reutiliza, ¡Recicla!",
"advancements.cobblemon.obtain_leftovers.description": "Mantén los restos después de comer una manzana.",
"advancements.cobblemon.any_plant": "Un Regalo de la Madre Naturaleza",
"advancements.cobblemon.any_plant.description": "¡Espero que las dejes plantadas!",
"advancements.cobblemon.any_plant": "Mother Nature's Bounty",
"advancements.cobblemon.any_plant.description": "Hope you've got a green thumb!",
"advancements.cobblemon.harvest_apricorn": "¿Es una fruta o es una nuez?",
"advancements.cobblemon.harvest_apricorn.description": "Interactúa con un Bonguri que ya ha crecido para cosecharlo",
"advancements.cobblemon.harvest_apricorn_seed": "Poniendo de mi parte",
@@ -614,7 +604,7 @@
"advancements.cobblemon.first_catch": "¡Un Nuevo Amigo!",
"advancements.cobblemon.first_catch.description": "Usa una Poké Ball y captura tu primer Pokémon",
"advancements.cobblemon.full_party": "Casa Llena",
"advancements.cobblemon.full_party.description": "Captura más Pokémon para formar un equipo completo",
"advancements.cobblemon.full_party.description": "Catch more Pokémon and make a full party of 6",
"advancements.cobblemon.first_evolution": "Trabajo Duro y Dedicación",
"advancements.cobblemon.first_evolution.description": "Completa los requisitos de evolución de un Pokémon y evoluciónalos desde el menú del equipo",
"advancements.cobblemon.first_battle_victory": "¿Y la Música de Victoria?",
@@ -623,54 +613,54 @@
"advancements.cobblemon.first_shiny_catch.description": "Captura tu primer Pokémon Shiny",
"advancements.cobblemon.healing_machine": "Poder Curativo",
"advancements.cobblemon.healing_machine.description": "Espera suficiente tiempo para que una Máquina de Curación se cargue, y luego cura a tu equipo",
"advancements.cobblemon.obtain_leek": "¿Puerro qué tenemos aquí?",
"advancements.cobblemon.obtain_leek.description": "Obtén un Puerro Medicinal, un cultivo silvestre que crece en agua fresca",
"advancements.cobblemon.medicinal_brew": "Farmacia Local",
"advancements.cobblemon.medicinal_brew.description": "Destila un Puerro Medicinal para crear la base de tus necesidades de curación",
"advancements.cobblemon.brew_potion": "¡No puedes conmigo ni con mis Pociones!",
"advancements.cobblemon.brew_potion.description": "Destila una Baya Aranja en un Brebaje Médico para crear una Poción",
"advancements.cobblemon.brew_full_restore": "La Elección del Campeón",
"advancements.cobblemon.brew_full_restore.description": "Sigue el árbol de elaboración y crea un Restaurar Todo con una Baya Ziuela y una Poción Máxima",
"advancements.cobblemon.brew_all": "De Poción en Poción y tiro porque me toca",
"advancements.cobblemon.brew_all.description": "Destila todos los objetos posibles usando Brebaje Médico",
"advancements.cobblemon.obtain_mint": "Adiós al Mal Aliento",
"advancements.cobblemon.obtain_mint.description": "Obtén una Menta Natural, una planta silvestre que crece en lo alto de las montañas",
"advancements.cobblemon.obtain_all_mints": "Algo digno de co-menta-r",
"advancements.cobblemon.obtain_all_mints.description": "Obtén los 6 colores de Mentas Naturales y ten acceso a todo un abanico de naturalezas",
"advancements.cobblemon.obtain_revival_herb": "¡Que hierba tu entusiasmo!",
"advancements.cobblemon.obtain_revival_herb.description": "Obtén una Hierba Revivir, una planta silvestre que crece en las Cuevas Frondosas",
"advancements.cobblemon.use_revive": "¡Vive para luchar otro día!",
"advancements.cobblemon.use_revive.description": "Usa un Revivir, Revivir Máximo o Hierba Revivir para reanimar a un Pokémon derrotado",
"advancements.cobblemon.obtain_big_root": "La Raíz de la Curación Básica",
"advancements.cobblemon.obtain_big_root.description": "Obtén una Raíz Grande, una planta silvestre que crece en cuevas de tierra cerca de la superficie",
"advancements.cobblemon.craft_remedy": "Curación Básica",
"advancements.cobblemon.craft_remedy.description": "Crea un Remedio, un objeto curativo de juego temprano que puede ser usado para crear mejores versiones",
"advancements.cobblemon.obtain_vivichoke": "¡Revibrote hasta la muerte!",
"advancements.cobblemon.obtain_vivichoke.description": "Obtén un Revibrote, plantas que crecen sembrando las muy raras Semillas Revibrote",
"advancements.cobblemon.obtain_berry": "Vaya Baya",
"advancements.cobblemon.obtain_berry.description": "Obtén una baya, plantas silvestres que crecen en la superficie y tiene muchísimos usos",
"advancements.cobblemon.obtain_mutated_berry": "Un Resultado Inesperado",
"advancements.cobblemon.obtain_mutated_berry.description": "Planta árboles de bayas de diferentes tipos uno al lado de otro y se testigo de la mutación en acción",
"advancements.cobblemon.obtain_all_berries": "¡Vaya vaya, todas las Bayas!",
"advancements.cobblemon.obtain_all_berries.description": "Obtén una baya de cada tipo en Cobblemon",
"advancements.cobblemon.use_pasture": "Caminata Libre: Activada",
"advancements.cobblemon.use_pasture.description": "Crea un Bloque de Pastoreo y permite que tus amigos deambulen por ahí",
"advancements.cobblemon.catch_all_vivillon": "Vivillonario",
"advancements.cobblemon.catch_all_vivillon.description": "Obtén todos los patrones de Vivillon",
"advancements.cobblemon.evolve_veevees": "¡Los n-eevee-sito a todos!",
"advancements.cobblemon.evolve_veevees.description": "Evoluciona a Eevee en 8 formas diferentes",
"advancements.cobblemon.evolve_shedinja": "¡El Cascarón está vivo...! Bueno...",
"advancements.cobblemon.evolve_shedinja.description": "Ten una Poké Ball extra en tu inventario y obtén un Shedinja",
"advancements.cobblemon.trade_pokemon": "¡Cuídalo Bien!",
"advancements.cobblemon.trade_pokemon.description": "Intercambia un Pokémon con otro Entrenador",
"advancements.cobblemon.trade_shelmet_karrablast": "¡Quiero reportar un robo!",
"advancements.cobblemon.trade_shelmet_karrablast.description": "Intercambia un Shelmet y un Karrablast",
"advancements.cobblemon.max_level_baby": "¿Darwin? ¿Quién es ese?",
"advancements.cobblemon.max_level_baby.description": "Entrena a un Pokémon de primera fase capaz de evolucionar hasta alcanzar el nivel 100",
"advancements.cobblemon.use_candy": "Dulce, El Terror de los Dentistas",
"advancements.cobblemon.use_candy.description": "Usa cualquier Caramelo de XP en un Pokémon",
"advancements.cobblemon.own_zangoose_seviper": "Compañeros a Malas Ganas",
"advancements.cobblemon.own_zangoose_seviper.description": "Ten un Zangoose y un Seviper en tu equipo al mismo tiempo",
"advancements.cobblemon.obtain_leek": "There's a Leek in the Boat!",
"advancements.cobblemon.obtain_leek.description": "Obtain a Medicinal Leek, a wild crop that grows in freshwater",
"advancements.cobblemon.medicinal_brew": "Local Apothecary",
"advancements.cobblemon.medicinal_brew.description": "Brew a Medicinal Leek to create the basis for your healing needs",
"advancements.cobblemon.brew_potion": "You cannot handle my Potions",
"advancements.cobblemon.brew_potion.description": "Brew an Oran Berry into Medicinal Brew to create a Potion",
"advancements.cobblemon.brew_full_restore": "Champion's Choice",
"advancements.cobblemon.brew_full_restore.description": "Follow the brewing tree and create a Full Restore with a Lum Berry and Max Potion",
"advancements.cobblemon.brew_all": "Double Double Toil & Trouble",
"advancements.cobblemon.brew_all.description": "Brew every possible item using Medicinal Brew",
"advancements.cobblemon.obtain_mint": "Minty Fresh",
"advancements.cobblemon.obtain_mint.description": "Obtain a Nature Mint, a wild crop that grows high in the mountains",
"advancements.cobblemon.obtain_all_mints": "A Big Commit-mint",
"advancements.cobblemon.obtain_all_mints.description": "Obtain all 6 colors of Nature Mint and gain access to a full array of natures",
"advancements.cobblemon.obtain_revival_herb": "Herb your Enthusiasm",
"advancements.cobblemon.obtain_revival_herb.description": "Obtain a Revival Herb, a wild crop that grows in lush caves",
"advancements.cobblemon.use_revive": "Live to fight another day!",
"advancements.cobblemon.use_revive.description": "Use a Revive, Max Revive, or Revival Herb to revive a fainted Pokémon",
"advancements.cobblemon.obtain_big_root": "The Root of Basic Healing",
"advancements.cobblemon.obtain_big_root.description": "Obtain a Big Root, a wild crop that grows in dirt caves close to the surface",
"advancements.cobblemon.craft_remedy": "Basic Healing",
"advancements.cobblemon.craft_remedy.description": "Craft a Remedy, an early-game healing item that can be crafted into stronger forms",
"advancements.cobblemon.obtain_vivichoke": "Oki-Doki Vivichokey",
"advancements.cobblemon.obtain_vivichoke.description": "Obtain a Vivichoke, grown from strangely scarce Vivichoke Seeds",
"advancements.cobblemon.obtain_berry": "Very Berry",
"advancements.cobblemon.obtain_berry.description": "Obtain any Berry, wild crops that grow on the surface and have many uses",
"advancements.cobblemon.obtain_mutated_berry": "An Unexpected Result",
"advancements.cobblemon.obtain_mutated_berry.description": "Plant Berry Trees of different types next to each other and witness Mutation in action",
"advancements.cobblemon.obtain_all_berries": "Oops, all Berries!",
"advancements.cobblemon.obtain_all_berries.description": "Obtain one of every Berry in Cobblemon",
"advancements.cobblemon.use_pasture": "Free Roam: Enabled",
"advancements.cobblemon.use_pasture.description": "Craft a Pasture Block and allow your friends to wander",
"advancements.cobblemon.catch_all_vivillon": "Patterned Wings",
"advancements.cobblemon.catch_all_vivillon.description": "Obtain all patterns of Vivillon",
"advancements.cobblemon.evolve_veevees": "Valued Veevees",
"advancements.cobblemon.evolve_veevees.description": "Evolve Eevee into 8 different forms",
"advancements.cobblemon.evolve_shedinja": "Ghost in the Shell",
"advancements.cobblemon.evolve_shedinja.description": "Have an extra Poké Ball in your inventory and obtain a Shedinja",
"advancements.cobblemon.trade_pokemon": "Take Good Care!",
"advancements.cobblemon.trade_pokemon.description": "Trade a Pokémon with another Trainer",
"advancements.cobblemon.trade_shelmet_karrablast": "I'd like to report a theft!",
"advancements.cobblemon.trade_shelmet_karrablast.description": "Trade a Shelmet and Karrablast",
"advancements.cobblemon.max_level_baby": "Darwin? Who's That?",
"advancements.cobblemon.max_level_baby.description": "Take a first-stage Pokémon capable of evolution up to level 100",
"advancements.cobblemon.use_candy": "Sweet Tooth",
"advancements.cobblemon.use_candy.description": "Use any XP Candy on a Pokémon",
"advancements.cobblemon.own_zangoose_seviper": "Begrudging Partners",
"advancements.cobblemon.own_zangoose_seviper.description": "Have a Zangoose and Seviper in your party at the same time",
"cobblemon.battle.crash": "Se ha producido un error en la batalla. Si juegas en Un Jugador, reporte esto al equipo del mod. Si no, repórtelo a los administradores del servidor.",
"cobblemon.battle.damage_dealt": "¡%1$s ha recibido %2$s puntos de daño!",
"cobblemon.battle.used_move": "¡%1$s ha usado %2$s!",
@@ -691,19 +681,19 @@
"cobblemon.battle.crit": "¡Un golpe crítico!",
"cobblemon.battle.nothing": "Pero nada sucedió.",
"cobblemon.battle.clearallboost": "¡Se han anulado todos los cambios en las características!",
"cobblemon.battle.clearallnegativeboost": "¡Los cambios negativos de las estadísticas de %1$s fueron eliminados!",
"cobblemon.battle.clearallnegativeboost.zeffect": "¡%1$s restauró sus estadísticas reducidas con su Poder-Z!",
"cobblemon.battle.clearallnegativeboost": "%1$s's negative stat changes were removed!",
"cobblemon.battle.clearallnegativeboost.zeffect": "%1$s's returned its decreased stats to normal using its Z-Power!",
"cobblemon.battle.unboost.slight": "¡%2$s de %1$s ha bajado!",
"cobblemon.battle.unboost.sharp": "El %2$s de %1$s ha bajado mucho.",
"cobblemon.battle.unboost.severe": "El %1$s de %2$s ha bajado muchísimo.",
"cobblemon.battle.unboost.cap.single": "%2$s de %1$s no bajará más.",
"cobblemon.battle.unboost.cap.multiple": "Las características de %1$s no bajarán más.",
"cobblemon.battle.boost.slight": "¡%2$s de %1$s ha aumentado!",
"cobblemon.battle.boost.slight.zeffect": "¡%1$s aumentó su %2$s usando el Poder-Z!",
"cobblemon.battle.boost.slight.zeffect": "%1$s boosted its %2$s using its Z-Power!",
"cobblemon.battle.boost.sharp": "¡%2$s de %1$s ha aumentado mucho!",
"cobblemon.battle.boost.sharp.zeffect": "¡%1$s aumentó mucho su %2$s usando el Poder-Z!",
"cobblemon.battle.boost.sharp.zeffect": "%1$s boosted its %2$s sharply using its Z-Power!",
"cobblemon.battle.boost.severe": "¡%2$s de %1$s ha aumentado muchísimo!",
"cobblemon.battle.boost.severe.zeffect": "¡%1$s aumentó muchísimo su %2$s usando el Poder-Z!",
"cobblemon.battle.boost.severe.zeffect": "%1$s boosted its %2$s drastically using its Z-Power!",
"cobblemon.battle.boost.cap.single": "%2$s de %1$s no subirá más.",
"cobblemon.battle.boost.cap.multiple": "Las características de %1$s no subirán más.",
"cobblemon.battle.setboost.bellydrum": "¡%1$s disminuyó sus PS y maximizo su Ataque!",
@@ -712,20 +702,17 @@
"cobblemon.battle.recharge": "¡%1$s necesita recuperarse de su ataque!",
"cobblemon.capture.broke_free": "¡%1$s se escapó!",
"cobblemon.capture.not_your_turn": "No es tu turno de actuar.",
"cobblemon.capture.attempted_capture": "%1$s threw their %2$s at %3$s!",
"cobblemon.capture.attempted_capture": "¡%1$s lanzó una %2$s a %3$s!",
"cobblemon.capture.succeeded": "¡Has atrapado a %1$s!",
"cobblemon.capture.not_wild": "Ese %1$s no es un Pokémon salvaje.",
"cobblemon.capture.in_battle": "%1$s está en una batalla y no lo puedes atrapar.",
"cobblemon.capture.busy": "¡%1$s está ocupado/a!",
"cobblemon.capture.you_in_battle": "Estás en una batalla.",
"cobblemon.capture.not_single": "Sólo puedes capturar Pokémon salvajes en una batalla 1v1.",
"cobblemon.capture.cannot_be_caught": "Este Pokémon no puede ser capturado.",
"cobblemon.you_in_battle": "¡No puedes hacer eso mientras estás en una batalla!",
"cobblemon.battle.turn": "Turno: %1$s",
"cobblemon.battle.side_subject.ally": "tu",
"cobblemon.battle.side_subject.opponent": "el oponente",
"cobblemon.battle.transform": "%1$s transformed into %2$s",
"cobblemon.battle.endability": "%1$s's Ability was suppressed!",
"cobblemon.battle.weather.raindance.start": "¡Ha empezado a llover!",
"cobblemon.battle.weather.raindance.upkeep": "La lluvia continúa cayendo.",
"cobblemon.battle.weather.raindance.end": "Ha dejado de llover.",
@@ -738,24 +725,7 @@
"cobblemon.battle.weather.hail.start": "¡Ha empezado a granizar!",
"cobblemon.battle.weather.hail.upkeep": "El granizo cae con violencia.",
"cobblemon.battle.weather.hail.end": "Ha dejado de granizar.",
"cobblemon.battle.weather.snow.start": "¡Ha empezado a granizar!",
"cobblemon.battle.weather.snow.upkeep": "Sigue granizando...",
"cobblemon.battle.weather.snow.end": "Ha dejado de granizar.",
"cobblemon.battle.start.bide": "¡%1$s empieza a acumular energía!",
"cobblemon.battle.start.magnetrise": "¡%1$s levita por electromagnetismo!",
"cobblemon.battle.start.disable": "¡%2$s de %1$s fue desactivado!",
"cobblemon.battle.start.nightmare": "¡%1$s ha caído en una pesadilla!",
"cobblemon.battle.start.imprison": "¡%1$s selló los movimientos que comparte con el oponente!",
"cobblemon.battle.start.snatch": "¡%1$s espera a que su rival haga algún movimiento!",
"cobblemon.battle.start.noretreat": "¡%1$s ya no puede escapar porque usó Bastión Final!",
"cobblemon.battle.start.saltcure": "¡%1$s está en salazón!",
"cobblemon.battle.start.shedtail": "¡%1$s se desprende de un segmento de su cuerpo y lo usa como señuelo!",
"cobblemon.battle.start.smackdown": "¡%1$s cayó al suelo!",
"cobblemon.battle.start.torment": "¡%1$s es víctima de Tormento!",
"cobblemon.battle.start.foresight": "¡%1$s fué identificado!",
"cobblemon.battle.start.telekinesis": "¡%1$s ha sido lanzado por los aires!",
"cobblemon.battle.start.laserfocus": "¡%1$s se concentró intensamente!",
"cobblemon.battle.start.lockon": "¡%2$s apuntó a %1$s!",
"cobblemon.battle.start.yawn": "¡%1$s se adormeció!",
"cobblemon.battle.start.perish": "El Canto Mortal de %1$s bajó a %2$s.",
"cobblemon.battle.start.leechseed": "¡%1$s ha sido infectado con semillas!",
@@ -768,26 +738,8 @@
"cobblemon.battle.start.uproar": "¡%1$s causó un alboroto!",
"cobblemon.battle.start.curse": "¡%1$s reduce sus PS para maldecir a %2$s!",
"cobblemon.battle.start.miracleeye": "¡%1$s fué identificado!",
"cobblemon.battle.start.dynamax": "¡%1$s fué Dinamaxizado!",
"cobblemon.battle.start.gmax": "¡%1$s fué Gigantamaxizado!",
"cobblemon.battle.start.encore": "¡%1$s debe repetir el movimiento otra vez!",
"cobblemon.battle.start.futuresight": "%1$s foresaw an attack!",
"cobblemon.battle.start.ingrain": "%1$s planted its roots!",
"cobblemon.battle.start.healblock": "%1$s was prevented from healing!",
"cobblemon.battle.start.mimic": "¡%1$s aprendió %2$s!",
"cobblemon.battle.start.octolock": "%1$s can no longer escape because of Octolock!",
"cobblemon.battle.start.burnup": "%1$s burned itself out!",
"cobblemon.battle.start.typechange": "%1$s transformed into the %2$s type!",
"cobblemon.battle.start.doomdesire": "%1$s chose Doom Desire as its destiny!",
"cobblemon.battle.start.doubleshock": "%1$s used up all of its electricity!",
"cobblemon.battle.start.stockpile": "%1$s stockpiled %2$s!",
"cobblemon.battle.start.powertrick": "%1$s switched its Attack and Defense!",
"cobblemon.battle.start.powershift": "%1$s swapped its offensive stats with its defensive stats!",
"cobblemon.battle.start.substitute": "%1$s put in a substitute!",
"cobblemon.battle.start.embargo": "%1$s can't use items anymore!",
"cobblemon.battle.start.typeadd": "%2$s type was added to %1$s!",
"cobblemon.battle.start.reflecttype": "%1$s's type became the same as %2$s's type!",
"cobblemon.battle.start.tarshot": "%1$s became weaker to fire!",
"cobblemon.battle.start.dynamax": "%1$s Dynamaxed!",
"cobblemon.battle.start.gmax": "%1$s Gigantamaxed!",
"cobblemon.battle.fieldstart.electricterrain": "¡Una corriente eléctrica recorre el campo de batalla!",
"cobblemon.battle.fieldstart.grassyterrain": "¡Ha crecido hierba por todo el campo de batalla!",
"cobblemon.battle.fieldstart.gravity": "¡La gravedad ha aumentado!",
@@ -809,9 +761,6 @@
"cobblemon.battle.fieldend.watersport": "Los efectos de Hidrochorro se han disipado.",
"cobblemon.battle.fieldend.wonderroom": "¡La Zona Extraña desapareció y los efectos de Defensa y Defensa Esp. volvieron a la normalidad!",
"cobblemon.battle.fieldactivate.perishsong": "¡Todos los Pokémon que escucharon en canto se debilitarán en 3 turnos!",
"cobblemon.battle.fieldactivate.iondeluge": "¡Una lluvia de iones cae sobre el campo de batalla!",
"cobblemon.battle.fieldactivate.fairylock": "No one will be able to run away during the next turn!",
"cobblemon.battle.fieldactivate.teatime": "It's teatime! Everyone dug in to their Berries!",
"cobblemon.battle.sidestart.stealthrock": "¡Piedras flotan alrededor del equipo de %1$s!",
"cobblemon.battle.sidestart.spikes": "¡Se esparcieron púas alrededor del equipo de %1$s!",
"cobblemon.battle.sidestart.toxicspikes": "¡Se esparcieron púas tóxicas alrededor del equipo de %1$s!",
@@ -821,8 +770,6 @@
"cobblemon.battle.sidestart.auroraveil": "¡Velo Aurora hace resistente al equipo de %1$s ante ataques físicos y especiales!",
"cobblemon.battle.sidestart.tailwind": "¡El Viento Afín sopla a favor del equipo de %1$s!",
"cobblemon.battle.sidestart.safeguard": "¡El equipo de %1$s se cubrió con un velo místico!",
"cobblemon.battle.sidestart.luckychant": "Lucky Chant shielded %1$s team from critical hits!",
"cobblemon.battle.sidestart.mist": "%1$s team became shrouded in mist!",
"cobblemon.battle.sideend.stealthrock": "¡Las piedras filosas desaparecen de alrededor del equipo de %1$s!",
"cobblemon.battle.sideend.spikes": "¡Las púas desaparecieron de alrededor del equipo de %1$s!",
"cobblemon.battle.sideend.toxicspikes": "¡Las púas venenosas desaparecieron alrededor del equipo de %1$s!",
@@ -832,8 +779,6 @@
"cobblemon.battle.sideend.auroraveil": "¡El Velo Aurora del equipo de %1$s se ha desvanecido!",
"cobblemon.battle.sideend.tailwind": "¡El Viento Afín del equipo de %1$s deja de soplar!",
"cobblemon.battle.sideend.safeguard": "¡El equipo de %1$s ya no está protegido por Velo Sagrado!",
"cobblemon.battle.sideend.luckychant": "%1$s team's Lucky Chant wore off!",
"cobblemon.battle.sideend.mist": "%1$s team is no longer protected by mist!",
"cobblemon.battle.cant.generic": "¡%1$s no puede usar %2$s!",
"cobblemon.battle.cant.truant": "¡%1$s está holgazaneando!",
"cobblemon.battle.cant.flinch": "¡%1$s ha retrocedido y no pudo atacar!",
@@ -848,11 +793,6 @@
"cobblemon.battle.cant.taunt": "¡%1$s no puede usar %2$s después de la mofa!",
"cobblemon.battle.cant.throatchop": "¡El efecto de Golpe Mordaza impide que %1$s use algunos movimientos!",
"cobblemon.battle.activate.confusion": "¡%1$s está confundido!",
"cobblemon.battle.activate.happyhour": "¡La felicidad se respira en el aire!",
"cobblemon.battle.activate.mindreader": "¡%2$s leyó la mente de %1$s!",
"cobblemon.battle.activate.magmastorm": "¡%1$s quedó atrapado en Lluvia Ígnea!",
"cobblemon.battle.activate.powersplit": "¡%1$s suma su capacidad ofensiva a la del objetivo y la reparte equitativamente!",
"cobblemon.battle.activate.pursuit": "(%1$s está siendo retirado...)",
"cobblemon.battle.activate.gravity": "¡%1$s no pudo permanecer en el aire debido a la gravedad!",
"cobblemon.battle.activate.mistyterrain": "¡%1$s se rodea de una neblina protectora!",
"cobblemon.battle.activate.psychicterrain": "¡%1$s se rodea con un terreno psíquico!",
@@ -861,10 +801,7 @@
"cobblemon.battle.activate.trapped": "¡%1$s ya no puede escapar!",
"cobblemon.battle.activate.bind": "¡%1$s fue oprimido por %2$s!",
"cobblemon.battle.activate.wrap": "¡%1$s fue atrapado por %2$s!",
"cobblemon.battle.activate.snatch": "¡%1$s robó el movimiento de %2$s!",
"cobblemon.battle.activate.sandtomb": "¡Bucle Arena ha atrapado a %1$s!",
"cobblemon.battle.activate.struggle": "¡%1$s no puede usar más movimientos!",
"cobblemon.battle.activate.stickyweb": "¡%1$s fué atrapado en una red viscosa!",
"cobblemon.battle.activate.courtchange": "¡%1$s intercambió los efectos de batalla afectando a ambos lados del campo!",
"cobblemon.battle.activate.guardsplit": "¡%1$s ha compartido su defensa con el objetivo!",
"cobblemon.battle.activate.spite": "¡Ha reducido los PP del movimiento %2$s de %1$s en %3$s!",
@@ -881,37 +818,13 @@
"cobblemon.battle.activate.trick": "¡%1$s ha cambiado objetos con su objetivo!",
"cobblemon.battle.activate.quickclaw": "¡%1$s puede actuar más rápido de lo normal gracias a su Garra Rápida!",
"cobblemon.battle.activate.focusband": "¡%1$s resistió gracias a su %2$s!",
"cobblemon.battle.activate.forewarn": "%2$s's %3$s was revealed!",
"cobblemon.battle.activate.forewarn": "¡El %2$s de %1$s fue revelado!",
"cobblemon.battle.activate.disguise": "¡Su disfraz ha servido como señuelo!",
"cobblemon.battle.activate.liquidooze": "¡%1$s ha absorbido el lodo líquido!",
"cobblemon.battle.activate.whirlpool": "¡%1$s quedó atrapado en un vórtice!",
"cobblemon.battle.activate.clamp": "¡%2$s atenazó a %1$s!",
"cobblemon.battle.activate.afteryou": "¡%1$s ha decidido aprovechar la oportunidad!",
"cobblemon.battle.activate.beatup": "¡Ataque de %1$s!",
"cobblemon.battle.activate.celebrate": "¡Felicidades, %1$s!",
"cobblemon.battle.activate.substitute": "¡El sustituto recibe el ataque en lugar de %1$s!",
"cobblemon.battle.activate.infestation": "¡%1$s es presa del acoso!",
"cobblemon.battle.activate.phantomforce": "¡Ha atravesado la protección de %1$s!",
"cobblemon.battle.activate.matblock": "%3$s was blocked by the kicked-up mat!",
"cobblemon.battle.activate.electricterrain": "%1$s surrounds itself with electrified terrain!",
"cobblemon.battle.activate.ingrain": "%1$s anchored itself with its roots!",
"cobblemon.battle.activate.mist": "%1$s is protected by the mist!",
"cobblemon.battle.activate.poltergeist": "%1$s is about to be attacked by its %3$s!",
"cobblemon.battle.activate.powder": "When the flame touched the powder on the Pokémon, it exploded!",
"cobblemon.battle.activate.quash": "%1$s's move was postponed!",
"cobblemon.battle.activate.quickguard": "Quick Guard protected %1$s",
"cobblemon.battle.activate.safeguard": "%1$s is protected by Safeguard!",
"cobblemon.battle.activate.sketch": "%1$s sketched %3$s!",
"cobblemon.battle.activate.grudge": "%1$s's %3$s lost all of its PP due to the grudge!",
"cobblemon.battle.activate.speedswap": "%1$s switched Speed with its target!",
"cobblemon.battle.activate.switcheroo": "%1$s switched items with its target!",
"cobblemon.battle.activate.skillswap": "%1$s swapped Abilities with its target!",
"cobblemon.battle.activate.wideguard": "Wide Guard protected %1$s!",
"cobblemon.battle.activate.craftyshield": "Crafty Shield protected %1$s!",
"cobblemon.battle.activate.tidyup": "Tidying up complete!",
"cobblemon.battle.prepare.bounce": "¡%1$s ha saltado muy alto!",
"cobblemon.battle.prepare.dig": "¡%1$s se ocultó bajo el suelo!",
"cobblemon.battle.prepare.shelltrap": "¡%1$s ha activado la Coraza Trampa!",
"cobblemon.battle.prepare.dive": "¡%1$s se ocultó bajo el agua!",
"cobblemon.battle.prepare.fly": "¡%1$s voló muy alto!",
"cobblemon.battle.prepare.freezeshock": "¡Una luz fría envuelve a %1$s!",
@@ -925,10 +838,6 @@
"cobblemon.battle.prepare.skydrop": "¡%1$s se llevó a su objetivo a los cielos!",
"cobblemon.battle.prepare.solarbeam": "¡%1$s absorbió luz solar!",
"cobblemon.battle.swapboost.generic": "¡%1$s intercambió las mejoras de sus estadísticas con %2$s!",
"cobblemon.battle.swapboost.guardswap": "%1$s switched all changes to its Defense and Sp. Def with its target!",
"cobblemon.battle.swapboost.powerswap": "%1$s switched all changes to its Attack and Sp. Atk with its target!",
"cobblemon.battle.swapboost.heartswap": "%1$s switched stat changes with its target!",
"cobblemon.battle.copyboost.generic": "%1$s copied %2$s's stat changes!",
"cobblemon.battle.singleturn.protect": "¡%1$s se está protegiendo!",
"cobblemon.battle.singleturn.endure": "¡%1$s se ha fortalecido!",
"cobblemon.battle.singleturn.craftyshield": "¡Truco Defensa protegió al equipo de %1$s!",
@@ -958,11 +867,7 @@
"cobblemon.battle.damage.leechseed": "¡La salud de %1$s ha sido drenada por Drenadoras!",
"cobblemon.battle.damage.sandstorm": "La tormenta de arena zarandea a %1$s.",
"cobblemon.battle.damage.hail": "El granizo golpea a %1$s.",
"cobblemon.battle.damage.saltcure": "¡Salazón ha herido a %1$s!",
"cobblemon.battle.damage.nightmare": "¡%1$s está atrapado en una pesadilla!",
"cobblemon.battle.damage.magmastorm": "¡Lluvia Ígnea ha herido a %1$s!",
"cobblemon.battle.damage.stealthrock": "¡Piedras punteadas se clavan en %1$s!",
"cobblemon.battle.damage.highjumpkick": "¡%1$s se estrelló contra el suelo!",
"cobblemon.battle.damage.spikes": "¡%1$s ha sido dañado por las púas!",
"cobblemon.battle.damage.recoil": "¡%1$s fue dañado por el retroceso!",
"cobblemon.battle.damage.item": "¡%1$s ha sido dañado por su %2$s!",
@@ -973,21 +878,8 @@
"cobblemon.battle.damage.whirlpool": "¡%1$s fue dañado por Torbellino!",
"cobblemon.battle.damage.clamp": "¡%1$s fue herido por la Tenaza!",
"cobblemon.battle.damage.curse": "¡%1$s fue afectado por la maldición!",
"cobblemon.battle.damage.firespin": "¡%1$s es herido por Giro Fuego!",
"cobblemon.battle.damage.axekick": "¡%1$s se estrelló contra el suelo!",
"cobblemon.battle.damage.bind": "¡La atadura oprime a %1$s!",
"cobblemon.battle.damage.baddreams": "¡%1$s está inmerso en un sueño agitado!",
"cobblemon.battle.damage.mindblown": "¡%1$s reduce sus PS a la mitad para potenciar su ataque!",
"cobblemon.battle.damage.infestation": "¡Acoso ha herido a %1$s!",
"cobblemon.battle.damage.spikyshield": "¡%1$s fue herido por el contacto!",
"cobblemon.battle.damage.flameburst": "¡El estallido de la llama golpeó a %1$s!",
"cobblemon.battle.end.bind": "¡%1$s ya no está siendo oprimido!",
"cobblemon.battle.end.wrap": "¡%1$s fue liberado de Constricción!",
"cobblemon.battle.end.magnetrise": "¡El electromagnetismo de %1$s terminó!",
"cobblemon.battle.end.doomdesire": "¡%1$s ha sido alcanzado por Deseo Oculto!",
"cobblemon.battle.end.leechseed": "¡%1$s se liberó de las drenadoras!",
"cobblemon.battle.end.powershift": "¡%1$s intercambió sus estadísticas ofensivas con las defensivas!",
"cobblemon.battle.end.torment": "¡%1$s ya no está atormentado!",
"cobblemon.battle.end.disable": "¡El movimiento de %1$s ya no está anulado!",
"cobblemon.battle.end.protosynthesis": "¡Los efectos de Paleosíntesis de %1$s se disiparon!",
"cobblemon.battle.end.taunt": "¡%1$s se libró de la mofa!",
@@ -996,54 +888,23 @@
"cobblemon.battle.end.confusion": "¡%1$s se ha liberado de su confusión!",
"cobblemon.battle.end.whirlpool": "¡%1$s se liberó del vórtice!",
"cobblemon.battle.end.clamp": "¡%1$s fue liberado de la Tenaza!",
"cobblemon.battle.end.dynamax": "¡%1$s regresó a la normalidad!",
"cobblemon.battle.end.telekinesis": "¡%1$s se liberó de la telequinesis!",
"cobblemon.battle.end.encore": "¡El efecto de Otra Vez en %1$s terminó!",
"cobblemon.battle.end.attract": "¡%1$s ya no está enamorado!",
"cobblemon.battle.end.futuresight": "¡%1$s tomó el ataque de Premonición!",
"cobblemon.battle.end.embargo": "¡%1$s puede usar objetos de nuevo!",
"cobblemon.battle.end.substitute": "¡El sustituto de %1$s se debilitó!",
"cobblemon.battle.end.uproar": "%1$s se calmó.",
"cobblemon.battle.end.powertrick": "¡%1$s intercambió su Ataque y Defensa!",
"cobblemon.battle.end.healblock": "%1$s's Heal Block wore off!",
"cobblemon.battle.end.skydrop": "%1$s was freed from the Sky Drop!",
"cobblemon.battle.block.uproar": "¡Pero el alboroto mantuvo a %1$s despierto!",
"cobblemon.battle.fail.substitute": "¡Pero no pudo crear un sustituto!",
"cobblemon.battle.fail.healblock": "¡Pero no afectó a %1$s!",
"cobblemon.battle.fail.darkvoid": "¡Pero %1$s no puede usar el movimiento!",
"cobblemon.battle.fail.teatime": "¡Pero no pasó nada!",
"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 no puede dormir con el alboroto!",
"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 stats did not get lowered!",
"cobblemon.battle.end.dynamax": "%1$s returned to normal!",
"cobblemon.battle.sethp.painsplit": "¡Los combatientes comparten su dolor!",
"cobblemon.battle.ability.sturdy": "¡%1$s resitió el ataque!",
"cobblemon.battle.ability.unnerve": "¡%1$s puso nervioso al oponente y no puede usar Bayas!",
"cobblemon.battle.ability.anticipation": "¡%1$s se estremeció en anticipación!",
"cobblemon.battle.ability.airlock": "Los efectos del clima desaparecieron.",
"cobblemon.battle.ability.trace": "¡%1$s rastreó el %3$s de %2$s!",
"cobblemon.battle.ability.receiver": "¡El %1$s de %2$s fue tomado!",
"cobblemon.battle.ability.generic": "¡%2$s de %1$s activado!",
"cobblemon.battle.ability.magicbounce": "¡%1$s ha rebotado la %2$s!",
"cobblemon.battle.errors.busy": "¡%1$s está ocupado!",
"cobblemon.battle.error.in_battle": "%1$s ya está en combate.",
"cobblemon.battle.error.in_battle.personal": "¡Ya estás en combate!",
"cobblemon.battle.error.no_pokemon": "¡No tienes Pokémon para usar en el combate!",
"cobblemon.battle.error.no_pokemon_opponent": "¡Tu oponente no tiene ningún Pokémon!",
"cobblemon.battle.error.no_pokemon_opponent": "Your opponent doesn't have any usable Pokémon!",
"cobblemon.battle.error.insufficient_pokemon": "%1$s tiene %2 Pokémon, pero se requieren %3.",
"cobblemon.battle.error.insufficient_pokemon.personal": "Tienes %1 Pokémon utilizable, pero necesitas %2.",
"cobblemon.battle.error.pokemon_is_trapped": "[Opción no disponible] No se puede cambiar: El Pokémon activo está atrapado",
"cobblemon.battle.error.canceled": "There's a time and place for everything, but not now!",
"cobblemon.battle.immune": "¡Pero %1$s es inmune!",
"cobblemon.battle.invertboost": "%1$s's stat changes were inverted!",
"cobblemon.battle.missed": "Pero falló.",
"cobblemon.battle.hit_count": "¡Atacó %1$s veces!",
"cobblemon.battle.hit_count_singular": "¡Atacó una vez!",
@@ -1054,7 +915,7 @@
"cobblemon.battle.item.harvest": "¡%1$s ha recolectado %2$s!",
"cobblemon.battle.item.bestow": "¡%1$s ha recibido %2$s de %3$s!",
"cobblemon.battle.item.trick": "%1$s obtuvo una %2$s.",
"cobblemon.battle.item.eat": "¡%1$s se comió su %2$s!",
"cobblemon.battle.item.eat": "%1$s ate its %2$s.",
"cobblemon.battle.enditem.eat": "¡%1$s se comió su %2$s!",
"cobblemon.battle.enditem.fling": "¡%1$s lanzó su %2$s!",
"cobblemon.battle.enditem.knockoff": "¡%3$s derribo %2$s de %1$s!",
@@ -1062,14 +923,13 @@
"cobblemon.battle.enditem.incinerate": "¡El %1$s de %2$s ha sido quemada!",
"cobblemon.battle.enditem.airballoon": "¡El Globo Helio de %1$s estalló!",
"cobblemon.battle.enditem.redcard": "¡%1$s levantó su Tarjeta Roja contra %3$s!",
"cobblemon.battle.enditem.pluck": "¡%3$s robó y se comió la %2$s de %1$s!",
"cobblemon.battle.enditem.berryjuice": "¡El Zumo de Baya de %1$s se ha activado!",
"cobblemon.battle.enditem.generic": "¡%1$s ha utilizado su %2$s!",
"cobblemon.battle.enditem.mentalherb": "¡%1$s se libró de los efectos mentales gracias a su Hierba Mental!",
"cobblemon.battle.enditem.powerherb": "¡%1$s está completamente cargado gracias a su Hierba Única!",
"cobblemon.battle.enditem.mirrorherb": "¡%1$s ha copiado cambios de estadísticas con su Hierba Copia!",
"cobblemon.battle.enditem.whiteherb": "¡%1$s devolvió su estado a la normalidad usando su Hierba Blanca!",
"cobblemon.battle.enditem.corrosivegas": "%3$s corroded %1$s's %2$s!",
"cobblemon.battle.enditem.stealeat": "%3$s stole and ate its target's %2$s!",
"cobblemon.battle.heal.zeffect": "¡Los PS de %1$s fueron restaurados gracias al Poder Z!",
"cobblemon.battle.heal.wish": "¡El deseo de %1$s se hizo realidad!",
"cobblemon.battle.heal.drain": "¡Los PS de %1$s fueron absorbidos!",
@@ -1077,23 +937,21 @@
"cobblemon.battle.heal.revivalblessing": "¡%1$s ha sido revivido y está listo para luchar de nuevo!",
"cobblemon.battle.heal.aquaring": "¡Un velo de agua restauró los PS de %1$s!",
"cobblemon.battle.heal.ingrain": "¡%1$s absorbió nutrientes con sus raíces!",
"cobblemon.battle.heal.lunardance": "¡Un místico halo de luz de luna envuelve a %1$s!",
"cobblemon.battle.heal.grassyterrain": "Los PS de %1$s se han restaurado.",
"cobblemon.battle.heal.leftovers": "¡%1$s restauró un poco de sus PS usando Restos!",
"cobblemon.battle.heal.item": "¡%1$s restauró un poco de sus PS usando su %2$s!",
"cobblemon.battle.heal.raindish": "¡%1$s restauró PS gracias a Cura Lluvia!",
"cobblemon.battle.heal.generic": "%1$s restauró sus PS.",
"cobblemon.battle.heal.bagitempotion": "Restauró PS de %1$s",
"cobblemon.battle.heal.poisonheal": "%1$s restored HP from Poison Heal!",
"cobblemon.battle.heal.bagitempotion": "It restored %1$s's HP",
"cobblemon.battle.curestatus.naturalcure": "¡%1$s ha sido curado por su Cura natural!",
"cobblemon.battle.bagitem.use": "%1$s used their %2$s on %3$s!",
"cobblemon.battle.bagitem.cannot": "No puedes usar objetos en este momento.",
"cobblemon.battle.bagitem.invalid": "Este objeto no funcionará.",
"cobblemon.battle.zpower": "¡El Poder-Z rodea y cubre a %1$s!",
"cobblemon.battle.zbroken": "¡%1$s no pudo protegerse del todo y recibió daño!",
"cobblemon.battle.terastallize": "¡%1$s Teracristalizó al tipo %2$s!",
"cobblemon.battle.detailschange.mega": "¡%1$s reacciona a la Piedra Activadora!",
"cobblemon.battle.mega": "¡%1$s ha Megaevolucionado!",
"cobblemon.battle.bagitem.use": "%1$s used a %2$s on %3$s!",
"cobblemon.battle.bagitem.cannot": "You cannot use items right now.",
"cobblemon.battle.bagitem.invalid": "This item would not work.",
"cobblemon.battle.zpower": "%1$s surrounded itself with its Z-Power!",
"cobblemon.battle.zbroken": "%1$s couldn't fully protect itself and got hurt!",
"cobblemon.battle.terastallize": "%1$s has Terastallized into the %2$s-type!",
"cobblemon.battle.detailschange.mega": "%1$s is reacting to the Key Stone!",
"cobblemon.battle.mega": "%1$s has Mega Evolved!",
"cobblemon.experience.gained": "%1$s recibió %2$s de experiencia.",
"cobblemon.experience.level_up": "¡%1$s ahora es nivel %2$s!",
"cobblemon.experience.learned_move": "%1$s aprendió %2$s.",
@@ -1203,45 +1061,45 @@
"block.cobblemon.dripstone_moon_stone_ore": "Mena de Piedra Lunar de espeleotema",
"block.cobblemon.pasture": "Bloque de Pastura",
"gamerule.doPokemonSpawning": "Generar Pokémon",
"gamerule.doShinyStarters": "Los iniciales serán shiny",
"gamerule.doShinyStarters": "Starters will be shiny",
"cobblemon.command.checkspawns.invalid-bucket": "\"Bucket\" de Generación Inválido",
"cobblemon.command.checkspawns.spawns": "Spawns",
"cobblemon.command.checkspawns.nothing": "Nada puede aparecer aquí en este momento.",
"cobblemon.interaction.ev.add": "¡Los EVs de %2$s de %1$s aumentaron en %3$s!",
"cobblemon.interaction.ev.deduct": "¡Los EVs de %2$s de %1$s se redujeron en %3$s!",
"cobblemon.interaction.pp.restore": "Restauras los PP de %1$s.",
"cobblemon.interaction.friendsip.add": "¡%1$s se vuelve más cercano a ti!",
"cobblemon.interaction.status.cure": "¡%1$s se curó de su problema de estado!",
"cobblemon.interaction.hp.heal": "%1$s restauró algo sus PS!",
"tag.item.cobblemon.apricorn_logs": "Troncos de Bonguri",
"tag.item.cobblemon.apricorn_sprouts": "Brotes de Bonguri",
"tag.item.cobblemon.apricorns": "Bonguris",
"tag.item.cobblemon.azalea_tree": "Árboles de Azalea",
"tag.item.cobblemon.berries": "Bayas",
"tag.item.cobblemon.cobblemon_seeds": "Semillas",
"tag.item.cobblemon.evolution_items": "Objetos Evolutivos",
"tag.item.cobblemon.evolution_stones": "Piedras Evolutivas",
"tag.item.cobblemon.experience_candies": "Caramelos de Experiencia",
"tag.item.cobblemon.held.destiny_knot": "Lazos Destino",
"tag.item.cobblemon.held.everstone": "Piedras Eternas",
"tag.item.cobblemon.held.experience_share": "Repartir Experiencia",
"tag.item.cobblemon.held.is_held_item": "Objetos Equipables",
"tag.item.cobblemon.held.lucky_egg": "Huevos Suerte",
"tag.item.cobblemon.held.power_anklet": "Franjas Recias",
"tag.item.cobblemon.held.power_band": "Bandas Recias",
"tag.item.cobblemon.held.power_belt": "Cinturones Recios",
"tag.item.cobblemon.held.power_bracer": "Brazales Recios",
"tag.item.cobblemon.held.power_lens": "Lentes Recias",
"tag.item.cobblemon.held.power_weight": "Pesas Recias",
"tag.item.cobblemon.herbs": "Hierbas",
"tag.item.cobblemon.mint_leaf": "Hojas de Menta",
"tag.item.cobblemon.mints": "Mentas",
"tag.item.cobblemon.mutated_berries": "Bayas Mutadas",
"tag.item.cobblemon.plants": "Plantas",
"cobblemon.interaction.ev.add": "%1$s' %2$s EVs increased by %3$s!",
"cobblemon.interaction.ev.deduct": "%1$s' %2$s EVs decreased by %3$s!",
"cobblemon.interaction.pp.restore": "You restore the PP of %1$s.",
"cobblemon.interaction.friendsip.add": "%1$s grows closer to you!",
"cobblemon.interaction.status.cure": "%1$s is cured of its status condition!",
"cobblemon.interaction.hp.heal": "%1$s restored its HP a bit!",
"tag.item.cobblemon.apricorn_logs": "Apricorn Logs",
"tag.item.cobblemon.apricorn_sprouts": "Apricorn Sprouts",
"tag.item.cobblemon.apricorns": "Apricorns",
"tag.item.cobblemon.azalea_tree": "Azalea Trees",
"tag.item.cobblemon.berries": "Berries",
"tag.item.cobblemon.cobblemon_seeds": "Seeds",
"tag.item.cobblemon.evolution_items": "Evolution Items",
"tag.item.cobblemon.evolution_stones": "Evolution Stones",
"tag.item.cobblemon.experience_candies": "Experience Candies",
"tag.item.cobblemon.held.destiny_knot": "Destiny Knots",
"tag.item.cobblemon.held.everstone": "Everstones",
"tag.item.cobblemon.held.experience_share": "Experience Shares",
"tag.item.cobblemon.held.is_held_item": "Held Items",
"tag.item.cobblemon.held.lucky_egg": "Lucky Eggs",
"tag.item.cobblemon.held.power_anklet": "Power Anklets",
"tag.item.cobblemon.held.power_band": "Power Bands",
"tag.item.cobblemon.held.power_belt": "Power Belts",
"tag.item.cobblemon.held.power_bracer": "Power Bracers",
"tag.item.cobblemon.held.power_lens": "Power Lenses",
"tag.item.cobblemon.held.power_weight": "Power Weights",
"tag.item.cobblemon.herbs": "Herbs",
"tag.item.cobblemon.mint_leaf": "Mint Leaves",
"tag.item.cobblemon.mints": "Mints",
"tag.item.cobblemon.mutated_berries": "Mutation Berries",
"tag.item.cobblemon.plants": "Plants",
"tag.item.cobblemon.poke_balls": "Poké Balls",
"tag.item.cobblemon.protein_ingredients": "Ingredientes de Proteínas",
"tag.item.cobblemon.zinc_ingredients": "Ingredientes de Zinc",
"tag.item.cobblemon.seeds": "Semillas",
"tag.item.cobblemon.protein_ingredients": "Protein Ingredients",
"tag.item.cobblemon.zinc_ingredients": "Zinc Ingredients",
"tag.item.cobblemon.seeds": "Seeds",
"cobblemon.ability.adaptability": "Adaptable",
"cobblemon.ability.adaptability.desc": "Potencia aún más los movimientos cuyo tipo coincida con el suyo.",
@@ -47,8 +47,6 @@
"item.cobblemon.yellow_apricorn": "Bonguri Amarillo",
"item.cobblemon.vivichoke_seeds": "Semillas de Revibrote",
"item.cobblemon.vivichoke": "Revibrote",
"item.cobblemon.apricorn_boat": "Bote de Bonguri",
"item.cobblemon.apricorn_chest_boat": "Bote de Bonguri con cofre",
"item.cobblemon.link_cable": "Cordón Unión",
"item.cobblemon.dragon_scale": "Escama Dragón",
"item.cobblemon.kings_rock": "Roca del Rey",
@@ -150,10 +148,8 @@
"item.cobblemon.choice_band": "Cinta Elección",
"item.cobblemon.choice_scarf": "Pañuelo Elección",
"item.cobblemon.choice_specs": "Gafas Elección",
"item.cobblemon.cleanse_tag": "Amuleto",
"item.cobblemon.dragon_fang": "Colmillo Dragón",
"item.cobblemon.exp_share": "Repartir Experiencia",
"item.cobblemon.fairy_feather": "Pluma feérica",
"item.cobblemon.focus_band": "Cinta Aguante",
"item.cobblemon.hard_stone": "Piedra Dura",
"item.cobblemon.heavy_duty_boots": "Botas Gruesas",
@@ -193,11 +189,6 @@
"item.cobblemon.power_bracer": "Brazal Recio",
"item.cobblemon.power_lens": "Lente Recio",
"item.cobblemon.power_weight": "Pesa Recia",
"item.cobblemon.flame_orb": "Llamasfera",
"item.cobblemon.light_orb": "Bola Luminosa",
"item.cobblemon.smoke_ball": "Bola de Humo",
"item.cobblemon.toxic_orb": "Toxisfera",
"item.cobblemon.life_orb": "Life Orb",
"item.cobblemon.poke_ball.tooltip": "Ratio de captura ×1",
"item.cobblemon.slate_ball.tooltip": "Ratio de captura ×1",
"item.cobblemon.azure_ball.tooltip": "Ratio de captura ×1",
@@ -288,7 +279,6 @@
"block.cobblemon.apricorn_leaves": "Hojas de Bonguri",
"block.cobblemon.apricorn_fence": "Valla de Bonguri",
"block.cobblemon.apricorn_sign": "Cartel de Bonguri",
"block.cobblemon.apricorn_hanging_sign": "Cartel colgante de Bonguri",
"block.cobblemon.apricorn_stairs": "Escaleras de Bonguri",
"block.cobblemon.apricorn_pressure_plate": "Placa de presión de Bonguri",
"block.cobblemon.apricorn_button": "Botón de Bonguri",
@@ -655,7 +645,7 @@
"advancements.cobblemon.obtain_all_berries.description": "Obtén una baya de cada tipo en Cobblemon",
"advancements.cobblemon.use_pasture": "Caminata Libre: Activada",
"advancements.cobblemon.use_pasture.description": "Crea un Bloque de Pastoreo y permite que tus amigos deambular por ahí",
"advancements.cobblemon.catch_all_vivillon": "Vivillonario",
"advancements.cobblemon.catch_all_vivillon": "Alas Diseñadas",
"advancements.cobblemon.catch_all_vivillon.description": "Obtén todos los patrones de Vivillon",
"advancements.cobblemon.evolve_veevees": "Eeveesto a todos",
"advancements.cobblemon.evolve_veevees.description": "Evoluciona a Eevee en 8 formas diferentes",
@@ -712,20 +702,17 @@
"cobblemon.battle.recharge": "¡%1$s necesita recuperarse de su ataque!",
"cobblemon.capture.broke_free": "¡%1$s se escapó!",
"cobblemon.capture.not_your_turn": "No es tu turno de actuar.",
"cobblemon.capture.attempted_capture": "%1$s threw their %2$s at %3$s!",
"cobblemon.capture.attempted_capture": "%1$s lanzó un %2$s a %3$s!",
"cobblemon.capture.succeeded": "¡Has capturado un %1$s!",
"cobblemon.capture.not_wild": "Ese %1$s no es un Pokémon salvaje.",
"cobblemon.capture.in_battle": "Ese %1$s está en un combate y no lo puedes capturar.",
"cobblemon.capture.busy": "¡%1$s está ocupado/a!",
"cobblemon.capture.you_in_battle": "Estás en una batalla.",
"cobblemon.capture.not_single": "Sólo puedes capturar Pokémon salvajes en una batalla 1v1.",
"cobblemon.capture.cannot_be_caught": "No puedes capturar este pokémon.",
"cobblemon.you_in_battle": "¡No puedes hacer eso mientras estás en una batalla!",
"cobblemon.battle.turn": "Ahora es el turno %1$s",
"cobblemon.battle.side_subject.ally": "tu",
"cobblemon.battle.side_subject.opponent": "el oponente",
"cobblemon.battle.transform": "%1$s se transformó en %2$s",
"cobblemon.battle.endability": "¡La habilidad de %1$s fué inhabilitada!",
"cobblemon.battle.weather.raindance.start": "¡Ha comenzado a llover!",
"cobblemon.battle.weather.raindance.upkeep": "La lluvia continúa cayendo.",
"cobblemon.battle.weather.raindance.end": "Ha dejado de llover.",
@@ -738,24 +725,7 @@
"cobblemon.battle.weather.hail.start": "¡Comenzó a granizar!",
"cobblemon.battle.weather.hail.upkeep": "El granizo cae con fuerza.",
"cobblemon.battle.weather.hail.end": "Ha dejado de granizar.",
"cobblemon.battle.weather.snow.start": "¡Empezó a nevar!",
"cobblemon.battle.weather.snow.upkeep": "La nieve aún cae.",
"cobblemon.battle.weather.snow.end": "Ha parado de nevar.",
"cobblemon.battle.start.bide": "¡%1$s comienza a almacenar energía!",
"cobblemon.battle.start.magnetrise": "!%1$s levita por el electromagnetismo!",
"cobblemon.battle.start.disable": "¡%2$s de %1$s fue anulado!",
"cobblemon.battle.start.nightmare": "¡%1$s empezó a tener pesadillas!",
"cobblemon.battle.start.imprison": "¡%1$s selló los movimientos que comparte con el oponente!",
"cobblemon.battle.start.snatch": "¡%1$s espera que el objetivo haga un movimiento!",
"cobblemon.battle.start.noretreat": "¡%1$s ya no puede escapar porque usó Bastión Final!",
"cobblemon.battle.start.saltcure": "¡%1$s está cubierto de sal!",
"cobblemon.battle.start.shedtail": "¡%1$s corta su cola para crear un señuelo!",
"cobblemon.battle.start.smackdown": "¡%1$s cayó al suelo!",
"cobblemon.battle.start.torment": "¡%1$s cayó ante el tormento!",
"cobblemon.battle.start.foresight": "¡%1$s fue identificado!",
"cobblemon.battle.start.telekinesis": "¡%1$s fue elevado en el aire!",
"cobblemon.battle.start.laserfocus": "¡%1$s se concentra intensamente!",
"cobblemon.battle.start.lockon": "¡%2$s apunta a %1$s!",
"cobblemon.battle.start.yawn": "¡%1$s se ha adormecido!",
"cobblemon.battle.start.perish": "La cuenta atrás de %1$s bajó a %2$s.",
"cobblemon.battle.start.leechseed": "¡%1$s ha sido infectado con las semillas!",
@@ -770,24 +740,6 @@
"cobblemon.battle.start.miracleeye": "¡%1$s fué identificado!",
"cobblemon.battle.start.dynamax": "¡%1$s fué Dinamaxizado!",
"cobblemon.battle.start.gmax": "¡%1$s fué Gigantamaxizado!",
"cobblemon.battle.start.encore": "¡%1$s debe hacer el movimiento otra vez!",
"cobblemon.battle.start.futuresight": "¡%1$s prevee un ataque!",
"cobblemon.battle.start.ingrain": "¡%1$s plantó sus raíces!",
"cobblemon.battle.start.healblock": "¡%1$s no puede curarse!",
"cobblemon.battle.start.mimic": "¡%1$s aprendió %2$s!",
"cobblemon.battle.start.octolock": "¡%1$s ya no puede escapar por Octopresa!",
"cobblemon.battle.start.burnup": "¡%1$s se prende fuego a sí mismo!",
"cobblemon.battle.start.typechange": "¡%1$s ahora es de los tipos de %2$s!",
"cobblemon.battle.start.doomdesire": "¡%1$s hizo su Deseo Final!",
"cobblemon.battle.start.doubleshock": "¡%1$s usó toda su electricidad!",
"cobblemon.battle.start.stockpile": "¡%1$s reservó %2$s!",
"cobblemon.battle.start.powertrick": "¡%1$s intercambió su Ataque y Defensa!",
"cobblemon.battle.start.powershift": "¡%1$s intercambió sus estadísticas ofensivas con las defensivas!",
"cobblemon.battle.start.substitute": "¡%1$s dejó un sustituto!",
"cobblemon.battle.start.embargo": "¡%1$s no puede usar más objetos!",
"cobblemon.battle.start.typeadd": "¡%1$s ahora tiene también el tipo %2$s!",
"cobblemon.battle.start.reflecttype": "¡El tipo de %1$s es ahora el mismo de %2$s!",
"cobblemon.battle.start.tarshot": "¡%1$s se volvió más débil al fuego!",
"cobblemon.battle.fieldstart.electricterrain": "¡Una corriene eléctrica ha cubierto el campo de batalla!",
"cobblemon.battle.fieldstart.grassyterrain": "¡Ha crecido hierba por todo el campo de batalla!",
"cobblemon.battle.fieldstart.gravity": "¡La gravedad ha sido intensificada!",
@@ -809,9 +761,6 @@
"cobblemon.battle.fieldend.watersport": "Los efectos de Hidrochorro se han desvanecido.",
"cobblemon.battle.fieldend.wonderroom": "¡La Zona Extraña desapareció, la Defensa y Defensa Especial ha vuelto a la normalidad!",
"cobblemon.battle.fieldactivate.perishsong": "¡Todos los Pokémon que escucharon en canto se debilitarán en 3 turnos!",
"cobblemon.battle.fieldactivate.iondeluge": "¡Una capa de iones cubre la arena!",
"cobblemon.battle.fieldactivate.fairylock": "¡Nadie podrá escapar en el siguiente turno!",
"cobblemon.battle.fieldactivate.teatime": "¡Hora del te! ¡Todo el mundo disfruta sus bayas!",
"cobblemon.battle.sidestart.stealthrock": "¡Piedras filosas flotan alrededor del equipo de %1$s!",
"cobblemon.battle.sidestart.spikes": "¡Se esparcieron púas alrededor del equipo de %1$s!",
"cobblemon.battle.sidestart.toxicspikes": "¡Se esparcieron púas venenosas alrededor del equipo de %1$s!",
@@ -821,8 +770,6 @@
"cobblemon.battle.sidestart.auroraveil": "¡Velo Aurora hace resistente al equipo de %1$s ante ataques físicos y especiales!",
"cobblemon.battle.sidestart.tailwind": "¡El Viento Afín sopla a favor del equipo de %1$s!",
"cobblemon.battle.sidestart.safeguard": "¡El equipo de %1$s se cubrió con un velo místico!",
"cobblemon.battle.sidestart.luckychant": "¡Cántico de Suerte protege al equipo de %1$s ante golpes críticos!",
"cobblemon.battle.sidestart.mist": "¡El equipo de %1$s se cubre en una niebla!",
"cobblemon.battle.sideend.stealthrock": "¡Las piedras filosas desaparecieron de alrededor del equipo de %1$s!",
"cobblemon.battle.sideend.spikes": "¡Las púas desaparecieron de alrededor del equipo de %1$s!",
"cobblemon.battle.sideend.toxicspikes": "¡Las púas venenosas desaparecieron de alrededor del equipo de %1$s!",
@@ -832,8 +779,6 @@
"cobblemon.battle.sideend.auroraveil": "¡El Velo Aurora del equipo de %1$s se ha desvanecido!",
"cobblemon.battle.sideend.tailwind": "¡El Viento Afín del equipo de %1$s deja de soplar!",
"cobblemon.battle.sideend.safeguard": "¡El equipo de %1$sya no está protegido por Velo Sagrado!",
"cobblemon.battle.sideend.luckychant": "¡El efecto de Cántico de Suerte del quipo de %1$s se disipó!",
"cobblemon.battle.sideend.mist": "¡El equipo de %1$s ya no está protegido por la niebla!",
"cobblemon.battle.cant.generic": "¡%1$s no puede usar %2$s!",
"cobblemon.battle.cant.truant": "¡%1$s está holgazaneando!",
"cobblemon.battle.cant.flinch": "¡%1$s ha retrocedido y no puede atacar!",
@@ -848,11 +793,6 @@
"cobblemon.battle.cant.taunt": "¡%1$s no puede usar %2$s después de la Mofa!",
"cobblemon.battle.cant.throatchop": "¡El efecto de Golpe mordaza impide usar algunos movimientos a %1$s!",
"cobblemon.battle.activate.confusion": "¡%1$s está confundido!",
"cobblemon.battle.activate.happyhour": "¡Todos cayeron en la atmósfera feliz!",
"cobblemon.battle.activate.mindreader": "%2$s leyó la mente de %1$s!",
"cobblemon.battle.activate.magmastorm": "¡%1$s está atrapado en una tormenta de magma!",
"cobblemon.battle.activate.powersplit": "¡%1$s y el objetivo comparten su poder!",
"cobblemon.battle.activate.pursuit": "(%1$s está siendo retirado...)",
"cobblemon.battle.activate.gravity": "¡%1$s no pudo mantenerse en el aire debido a la gravedad!",
"cobblemon.battle.activate.mistyterrain": "¡Una niebla protectora rodea a %1$s!",
"cobblemon.battle.activate.psychicterrain": "¡Un aura psíquica rodea a %1$s!",
@@ -861,10 +801,7 @@
"cobblemon.battle.activate.trapped": "¡%1$s ya no puede escapar!",
"cobblemon.battle.activate.bind": "¡%1$s ha sido exprimido por %2$s!",
"cobblemon.battle.activate.wrap": "¡%1$s ha sido atrapado por %2$s!",
"cobblemon.battle.activate.snatch": "¡%1$s robó el movimiento de %2$s!",
"cobblemon.battle.activate.sandtomb": "¡%1$s está atrapado en la arena!",
"cobblemon.battle.activate.struggle": "¡%1$s no puede usar más movimientos!",
"cobblemon.battle.activate.stickyweb": "¡%1$s fué atrapado en una red viscosa!",
"cobblemon.battle.activate.courtchange": "¡%1$s intercambió los efectos del campo de batalla!",
"cobblemon.battle.activate.guardsplit": "¡%1$s y el objetivo comparten defensas!",
"cobblemon.battle.activate.spite": "¡%3$s ha reducido los PP de %2$s de %1$s!",
@@ -881,37 +818,13 @@
"cobblemon.battle.activate.trick": "¡%1$s intercambió objetos con su objetivo!",
"cobblemon.battle.activate.quickclaw": "¡%1$s ataca primero por la Garra Rápida!",
"cobblemon.battle.activate.focusband": "¡%1$s aguantó usando su %2$s!",
"cobblemon.battle.activate.forewarn": "¡%3$s de %2$s fué revelado!",
"cobblemon.battle.activate.forewarn": "¡%2$s de %1$s fué revelado!",
"cobblemon.battle.activate.disguise": "¡Su disfraz sirvió como señuelo!",
"cobblemon.battle.activate.liquidooze": "¡%1$s ha absorbido la viscosecreción!",
"cobblemon.battle.activate.whirlpool": "¡%1$s quedó atrapado en un vórtice!",
"cobblemon.battle.activate.clamp": "¡%2$s atenazó a %1$s!",
"cobblemon.battle.activate.afteryou": "¡%1$s aceptó la amable oferta!",
"cobblemon.battle.activate.beatup": "¡Ataque de %1$s!",
"cobblemon.battle.activate.celebrate": "¡Felicidades, %1$s!",
"cobblemon.battle.activate.substitute": "¡El sustituto recibió el daño por %1$s!",
"cobblemon.battle.activate.infestation": "¡%1$s fué infectado!",
"cobblemon.battle.activate.phantomforce": "¡Pasó por la protección de %1$s!",
"cobblemon.battle.activate.matblock": "¡%3$s fué bloqueado por el escudo tatami!",
"cobblemon.battle.activate.electricterrain": "¡%1$s se rodea con un campo eléctrico!",
"cobblemon.battle.activate.ingrain": "¡%1$s se ancló con sus raíces!",
"cobblemon.battle.activate.mist": "¡%1$s se protege con la niebla!",
"cobblemon.battle.activate.poltergeist": "¡%1$s va a ser atacado por su %3$s!",
"cobblemon.battle.activate.powder": "Cuando la llama tocó la pólvora en el Pokémon, ¡explotó!",
"cobblemon.battle.activate.quash": "¡El movimiento de %1$s fué pospuesto!",
"cobblemon.battle.activate.quickguard": "Defensa Rápida protegió a %1$s",
"cobblemon.battle.activate.safeguard": "¡%1$s se protege con Salvaguarda!",
"cobblemon.battle.activate.sketch": "¡%1$s hizo un esquema de %3$s!",
"cobblemon.battle.activate.grudge": "¡%1$s se quedó sin PP en su ataque %3$s por Rabia!",
"cobblemon.battle.activate.speedswap": "¡%1$s intercambió su Velocidad con el objetivo!",
"cobblemon.battle.activate.switcheroo": "¡%1$s intercambió su objeto con el objetivo!",
"cobblemon.battle.activate.skillswap": "¡%1$s intercambió su habilidad con el objetivo!",
"cobblemon.battle.activate.wideguard": "¡Vastaguardia protegió a %1$s!",
"cobblemon.battle.activate.craftyshield": "¡Truco Defensa protegió a %1$s!",
"cobblemon.battle.activate.tidyup": "¡Todo limpio!",
"cobblemon.battle.prepare.bounce": "¡%1$s ha saltado muy alto!",
"cobblemon.battle.prepare.dig": "¡%1$s se ha ocultado bajo tierra!",
"cobblemon.battle.prepare.shelltrap": "¡%1$s preparó una trampa coraza!",
"cobblemon.battle.prepare.dive": "¡%1$s se ha ocultado bajo el agua!",
"cobblemon.battle.prepare.fly": "¡%1$s ha volado muy alto!",
"cobblemon.battle.prepare.freezeshock": "¡Una luz fría rodea a %1$s!",
@@ -925,10 +838,6 @@
"cobblemon.battle.prepare.skydrop": "¡%1$s llevo a su oponente al cielo!",
"cobblemon.battle.prepare.solarbeam": "¡%1$s absorbe la luz solar!",
"cobblemon.battle.swapboost.generic": "¡%1$s ha intercambiado sus aumentos de estadísticas con %2$s!",
"cobblemon.battle.swapboost.guardswap": "¡%1$s intercambió su Defensa y Defensa Especial con el objetivo!",
"cobblemon.battle.swapboost.powerswap": "¡%1$s intercambió los cambios de Ataque y Ataque Especial con el objetivo!",
"cobblemon.battle.swapboost.heartswap": "¡%1$s intercambió sus cambios de estadísticas con el objetivo!",
"cobblemon.battle.copyboost.generic": "¡%1$s copió los cambios de estadísticas de %2$s!",
"cobblemon.battle.singleturn.protect": "¡%1$s se ha protegido!",
"cobblemon.battle.singleturn.endure": "¡%1$s se prepara para resistir los ataques!",
"cobblemon.battle.singleturn.craftyshield": "¡Truco Defensa protege al equipo de %1$s!",
@@ -958,11 +867,7 @@
"cobblemon.battle.damage.leechseed": "¡La salud de %1$s fué absorbida por las Drenadoras!",
"cobblemon.battle.damage.sandstorm": "¡%1$s fue zarandeado por la tormenta de arena!",
"cobblemon.battle.damage.hail": "¡%1$s fue golpeado por el granizo.",
"cobblemon.battle.damage.saltcure": "¡La sal hiere a %1$s!",
"cobblemon.battle.damage.nightmare": "¡%1$s está atrapado en la pesadilla!",
"cobblemon.battle.damage.magmastorm": "¡El magma hiere a %1$s!",
"cobblemon.battle.damage.stealthrock": "¡Piedras filosas se clavaron en %1$s!",
"cobblemon.battle.damage.highjumpkick": "¡%1$s chocó contra el piso!",
"cobblemon.battle.damage.spikes": "¡%1$s ha sido dañado por las púas!",
"cobblemon.battle.damage.recoil": "¡%1$s fue dañado por el retroceso!",
"cobblemon.battle.damage.item": "¡%1$s fué herido por su %2$s!",
@@ -973,21 +878,8 @@
"cobblemon.battle.damage.whirlpool": "¡%1$s fue herido por Torbellino!",
"cobblemon.battle.damage.clamp": "¡%1$s fue herido por la Tenaza!",
"cobblemon.battle.damage.curse": "¡%1$s es afectado por la maldición!",
"cobblemon.battle.damage.firespin": "¡El giro de fuego hiere a %1$s!",
"cobblemon.battle.damage.axekick": "¡%1$s chocó contra el piso!",
"cobblemon.battle.damage.bind": "¡La atadura hiere a %1$s!",
"cobblemon.battle.damage.baddreams": "¡El mal sueño lastima a %1$s!",
"cobblemon.battle.damage.mindblown": "¡%1$s reduce a la mitad sus PS para potenciar su ataque!",
"cobblemon.battle.damage.infestation": "¡La infección hiere a %1$s!",
"cobblemon.battle.damage.spikyshield": "¡El contacto hirió a %1$s!",
"cobblemon.battle.damage.flameburst": "¡El golpe de fuego hirió a %1$s!",
"cobblemon.battle.end.bind": "¡%1$s ya no está siendo exprimido!",
"cobblemon.battle.end.wrap": "¡%1$s ha sido liberado de la constricción!",
"cobblemon.battle.end.magnetrise": "¡El electromagnetismo de %1$s terminó!",
"cobblemon.battle.end.doomdesire": "¡%1$s recibió el daño de Deseo Final!",
"cobblemon.battle.end.leechseed": "¡%1$s se liberó de las drenadoras!",
"cobblemon.battle.end.powershift": "¡%1$s intercambió sus estadísticas ofensivas con las defensivas!",
"cobblemon.battle.end.torment": "¡%1$s se liberó del tormento!",
"cobblemon.battle.end.disable": "¡El movimiento de %1$s ya no está anulado!",
"cobblemon.battle.end.protosynthesis": "¡Los efectos de Paleosíntesis de %1$s se disiparon!",
"cobblemon.battle.end.taunt": "¡%1$s se libró del efecto de Mofa!",
@@ -997,40 +889,11 @@
"cobblemon.battle.end.whirlpool": "¡%1$s se liberó del vórtice!",
"cobblemon.battle.end.clamp": "¡%1$s se liberó de la Tenaza!",
"cobblemon.battle.end.dynamax": "¡%1$s volvió a la normalidad!",
"cobblemon.battle.end.telekinesis": "¡%1$s se liberó de la Telequinesia!",
"cobblemon.battle.end.encore": "¡El efecto de Otra Vez en %1$s terminó!",
"cobblemon.battle.end.attract": "¡El enamoramiento de %1$s terminó!",
"cobblemon.battle.end.futuresight": "¡%1$s recibió el daño de Vista al Futuro!",
"cobblemon.battle.end.embargo": "¡%1$s no puede usar más objetos!",
"cobblemon.battle.end.substitute": "¡El sustituto de %1$s se rompió!",
"cobblemon.battle.end.uproar": "%1$s se calmó.",
"cobblemon.battle.end.powertrick": "¡%1$s intercambió su Ataque y Defensa!",
"cobblemon.battle.end.healblock": "¡El efecto de Anticura de %1$s se disipó!",
"cobblemon.battle.end.skydrop": "¡%1$s se liberó de la Caida Libre!",
"cobblemon.battle.block.uproar": "¡Pero el alboroto mantuvo despierto a %1$s!",
"cobblemon.battle.fail.substitute": "¡Pero no pudo crear un sustituto!",
"cobblemon.battle.fail.healblock": "¡Pero no afectó a %1$s!",
"cobblemon.battle.fail.darkvoid": "¡Pero %1$s no puede usar el movimiento!",
"cobblemon.battle.fail.teatime": "¡Pero no pasó nada!",
"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 no puede dormir con el alboroto!",
"cobblemon.battle.fail.skydrop": "¡%1$s es muy pesado para ser levantado!",
"cobblemon.battle.fail.heal": "¡%1$s tiene todos sus PS!",
"cobblemon.battle.fail.grassknot": "%1$s sacudió su cabeza. No parece que pueda utilizar este movimiento...",
"cobblemon.battle.fail.unboost.single": "%1$s's %2$s was not lowered!",
"cobblemon.battle.fail.unboost": "%1$s's stats did not get lowered!",
"cobblemon.battle.sethp.painsplit": "¡Los combatientes compartieron su dolor!",
"cobblemon.battle.ability.sturdy": "¡%1$s ha aguantado el golpe!",
"cobblemon.battle.ability.unnerve": "¡%1$s puso al oponente demasiado nervioso para comer bayas!",
"cobblemon.battle.ability.anticipation": "¡%1$s se ha estremecido por la anticipación!",
"cobblemon.battle.ability.airlock": "Los efectos del clima han desaparecido.",
"cobblemon.battle.ability.trace": "¡%1$s rastreó el %3$s de %2$s!",
"cobblemon.battle.ability.receiver": "¡El %1$s de %2$s fue tomado!",
"cobblemon.battle.ability.generic": "¡%2$s de %1$s activado!",
"cobblemon.battle.ability.magicbounce": "¡%1$s rebotó la %2$s!",
"cobblemon.battle.errors.busy": "¡%1$s está ocupado/a!",
@@ -1041,9 +904,7 @@
"cobblemon.battle.error.insufficient_pokemon": "%1$s tiene %2 Pokémon cuando %3 son requeridos.",
"cobblemon.battle.error.insufficient_pokemon.personal": "Tienes %1 Pokémon utilizable pero necesitas %2.",
"cobblemon.battle.error.pokemon_is_trapped": "[Opción no disponible] No se puede cambiar: El Pokémon se encuentra atrapado",
"cobblemon.battle.error.canceled": "¡Hay tiempo y lugar para todo, pero no ahora!",
"cobblemon.battle.immune": "¡Pero %1$s es inmune!",
"cobblemon.battle.invertboost": "¡Los cambios de estadísticas de %1$s se invertieron!",
"cobblemon.battle.missed": "Pero falló.",
"cobblemon.battle.hit_count": "¡Golpea %1$s veces!",
"cobblemon.battle.hit_count_singular": "¡Golpea 1 vez!",
@@ -1062,14 +923,13 @@
"cobblemon.battle.enditem.incinerate": "¡La %1$s de %2$s ha sido quemada!",
"cobblemon.battle.enditem.airballoon": "¡El globo de %1$s explotó!",
"cobblemon.battle.enditem.redcard": "¡%1$s sacó su Tarjeta Roja contra %3$s!",
"cobblemon.battle.enditem.pluck": "¡%3$s robó y se comió la %2$s de %1$s!",
"cobblemon.battle.enditem.berryjuice": "¡Zumo de Bayas de %1$s activado!",
"cobblemon.battle.enditem.generic": "¡%1$s usó su %2$s!",
"cobblemon.battle.enditem.mentalherb": "¡%1$s se libró de los efectos mentales gracias a su Hierba Mental!",
"cobblemon.battle.enditem.powerherb": "¡%1$s se ha cargado completamente debido a su Hierba de Poder!",
"cobblemon.battle.enditem.mirrorherb": "¡%1$s copió los cambios de estadísticas con su Hierba Espejo!",
"cobblemon.battle.enditem.whiteherb": "¡%1$s volvió a su estado normal usando su Hierba Blanca!",
"cobblemon.battle.enditem.corrosivegas": "¡El objeto %2$s de %1$s fué derretido por %3$s!",
"cobblemon.battle.enditem.stealeat": "¡%3$s se robó y comió la %2$s de su objetivo!",
"cobblemon.battle.heal.zeffect": "¡Los PS de %1$s fueron restaurados por el Poder-Z!",
"cobblemon.battle.heal.wish": "¡El deseo de %1$s se hizo realidad!",
"cobblemon.battle.heal.drain": "¡A %1$s se le ha drenado su PS!",
@@ -1077,16 +937,14 @@
"cobblemon.battle.heal.revivalblessing": "¡%1$s fue revivido y está listo para luchar de nuevo!",
"cobblemon.battle.heal.aquaring": "¡Un velo de agua ha recuperado los PS de %1$s!",
"cobblemon.battle.heal.ingrain": "¡%1$s absorbió nutrientes con sus raíces!",
"cobblemon.battle.heal.lunardance": "¡%1$s se rodea de una luz lunar mística!",
"cobblemon.battle.heal.grassyterrain": "Los PS de %1$s han sido restaurados.",
"cobblemon.battle.heal.leftovers": "¡%1$s recuperó un poco de sus PS utilizando %2$s!",
"cobblemon.battle.heal.item": "¡%1$s recuperó PS utilizando %2$s!",
"cobblemon.battle.heal.raindish": "¡%1$s ha restaurado PS por Cura lluvia!",
"cobblemon.battle.heal.generic": "%1$s recuperó sus PS.",
"cobblemon.battle.heal.bagitempotion": "Restauró los PS de %1$s",
"cobblemon.battle.heal.poisonheal": "%1$s restored HP from Poison Heal!",
"cobblemon.battle.curestatus.naturalcure": "¡%1$s fué curado por Cura Natural!",
"cobblemon.battle.bagitem.use": "%1$s used their %2$s on %3$s!",
"cobblemon.battle.bagitem.use": "¡%1$s usó un %2$s en %3$s!",
"cobblemon.battle.bagitem.cannot": "No puedes usar objetos ahora.",
"cobblemon.battle.bagitem.invalid": "El objeto no funcionará.",
"cobblemon.battle.zpower": "¡El Poder-Z rodea y cubre a %1$s!",
@@ -47,8 +47,6 @@
"item.cobblemon.yellow_apricorn": "Noigrume Jaune",
"item.cobblemon.vivichoke_seeds": "Graines de Bourgeon Vivace",
"item.cobblemon.vivichoke": "Bourgeon Vivace",
"item.cobblemon.apricorn_boat": "Bateau en Noigrume",
"item.cobblemon.apricorn_chest_boat": "Bateau de stockage en Noigrume",
"item.cobblemon.link_cable": "Fil de Liaison",
"item.cobblemon.dragon_scale": "Écaille Draco",
"item.cobblemon.kings_rock": "Roche Royale",
@@ -150,10 +148,8 @@
"item.cobblemon.choice_band": "Bandeau Choix",
"item.cobblemon.choice_scarf": "Mouchoir Choix",
"item.cobblemon.choice_specs": "Lunettes Choix",
"item.cobblemon.cleanse_tag": "Rune Purifiante",
"item.cobblemon.dragon_fang": "Croc Dragon",
"item.cobblemon.exp_share": "Multi Exp",
"item.cobblemon.fairy_feather": "Plume Enchantée",
"item.cobblemon.focus_band": "Bandeau",
"item.cobblemon.hard_stone": "Pierre Dure",
"item.cobblemon.heavy_duty_boots": "Grosses Bottes",
@@ -193,11 +189,6 @@
"item.cobblemon.power_bracer": "Poignet Pouvoir",
"item.cobblemon.power_lens": "Lentille Pouvoir",
"item.cobblemon.power_weight": "Poids Pouvoir",
"item.cobblemon.flame_orb": "Orbe Flamme",
"item.cobblemon.light_orb": "Balle Lumière",
"item.cobblemon.smoke_ball": "Boule Fumée",
"item.cobblemon.toxic_orb": "Orbe Toxique",
"item.cobblemon.life_orb": "Orbe Vie",
"item.cobblemon.poke_ball.tooltip": "Taux de capture ×1",
"item.cobblemon.slate_ball.tooltip": "Taux de capture ×1",
"item.cobblemon.azure_ball.tooltip": "Taux de capture ×1",
@@ -288,7 +279,6 @@
"block.cobblemon.apricorn_leaves": "Feuilles de Noigrume",
"block.cobblemon.apricorn_fence": "Clôture en Noigrume",
"block.cobblemon.apricorn_sign": "Pancarte en Noigrume",
"block.cobblemon.apricorn_hanging_sign": "Pancarte suspendue en Noigrume",
"block.cobblemon.apricorn_stairs": "Escaliers en Noigrume",
"block.cobblemon.apricorn_pressure_plate": "Plaque de pression en Noigrume",
"block.cobblemon.apricorn_button": "Bouton en Noigrume",
@@ -338,8 +328,8 @@
"cobblemon.ui.starter.choose_starter_title": "Choisissez votre Pokémon partenaire !",
"cobblemon.ui.starter.choose_starter_description": "Appuyez sur la touche « %1$s »",
"cobblemon.ui.starter.chooseyourstarter": "Appuyez sur %1$s pour choisir votre Pokémon et commencer votre voyage !",
"cobblemon.ui.moves": "Combat",
"cobblemon.ui.moves.switch": "Capacités",
"cobblemon.ui.moves": "Capacités",
"cobblemon.ui.moves.switch": "Gestion des capacités",
"cobblemon.ui.moves.pp": "%1$sPP",
"cobblemon.ui.stats": "Stats",
"cobblemon.ui.stats.stat": "Stat",
@@ -589,21 +579,21 @@
"cobblemon.command.pokebox.storage_is_full": "Le stockage du joueur est plein.",
"cobblemon.command.pokebox.last_pokemon": "Le dernier Pokémon du joueur n'a pas été envoyé au PC.",
"cobblemon.command.pokemonrestart": "L'équipe et le PC de %1$s ont été effacés.",
"advancements.cobblemon.root": "Le monde de Cobblemon!",
"advancements.cobblemon.root": "Le monde de Cobblemon !",
"advancements.cobblemon.root.description": "Choisissez un Pokémon de départ et partez pour une nouvelle aventure",
"advancements.cobblemon.obtain_leftovers": "Récolter, réutiliser, recycler!",
"advancements.cobblemon.obtain_leftovers.description": "Gardez les restes après avoir mangé une pomme",
"advancements.cobblemon.obtain_leftovers": "Récolter, réutiliser, recycler !",
"advancements.cobblemon.obtain_leftovers.description": "Gardez les restes après avoir mangé une pomme.",
"advancements.cobblemon.any_plant": "La bonté de Mère Nature",
"advancements.cobblemon.any_plant.description": "J'espère que t'as la main verte!",
"advancements.cobblemon.harvest_apricorn": "C't'un fruit ou une noisette?",
"advancements.cobblemon.any_plant.description": "J'espère que vous avez la main verte !",
"advancements.cobblemon.harvest_apricorn": "Est-ce un fruit ou une noisette ?",
"advancements.cobblemon.harvest_apricorn.description": "Faites un clic droit pour récolter un Noigrume adulte",
"advancements.cobblemon.harvest_apricorn_seed": "Faire sa part du travail",
"advancements.cobblemon.harvest_apricorn_seed.description": "Parfois les Noigrumes lâcheront un germe. Utilisez un pour planter un nouvel arbre",
"advancements.cobblemon.bone_meal_apricorn": "Pas besoin de Wailmerrosoir",
"advancements.cobblemon.harvest_apricorn_seed.description": "Parfois, les Noigrumes lâcheront une graine. Utilisez-en une pour planter un nouvel arbre",
"advancements.cobblemon.bone_meal_apricorn": "Pas besoin d'arrosoir",
"advancements.cobblemon.bone_meal_apricorn.description": "Utilisez de la poudre d'os pour accélérer la croissance d'un Noigrume",
"advancements.cobblemon.rainbow_apricorns": "Une forêt bien colorée",
"advancements.cobblemon.rainbow_apricorns.description": "Plantez un arbre de Noigrume de chaque couleur",
"advancements.cobblemon.craft_poke_ball": "La première d'une grande collection",
"advancements.cobblemon.craft_poke_ball": "La première de nombreuses",
"advancements.cobblemon.craft_poke_ball.description": "En utilisant quatre Noigrumes d'une même couleur et un lingot de cuivre, fabriquez votre première Poké Ball",
"advancements.cobblemon.craft_base_balls": "Une palette bien remplie",
"advancements.cobblemon.craft_base_balls.description": "Fabriquez des Poké Balls des sept couleurs de base",
@@ -611,23 +601,23 @@
"advancements.cobblemon.craft_apricorn_balls.description": "Fabriquez les sept Balls de Noigrumes originales",
"advancements.cobblemon.craft_all_balls": "Poké Ball Maniac",
"advancements.cobblemon.craft_all_balls.description": "Fabriquez une Poké Ball de chaque type disponible dans le jeu",
"advancements.cobblemon.first_catch": "Un nouveau chum!",
"advancements.cobblemon.first_catch": "Un nouvel ami !",
"advancements.cobblemon.first_catch.description": "Utilisez une Poké Ball et attrapez votre premier Pokémon",
"advancements.cobblemon.full_party": "Main pleine",
"advancements.cobblemon.full_party.description": "Attrapez plus de Pokémon et faites une équipe de 6",
"advancements.cobblemon.first_evolution": "Dévouement et travail acharné",
"advancements.cobblemon.first_evolution.description": "Remplissez les conditions d'évolution d'un Pokémon et faites-le évoluer à partir du menu de votre équipe",
"advancements.cobblemon.first_battle_victory": "Et la musique de victoire?",
"advancements.cobblemon.first_battle_victory": "Et la musique de victoire ?",
"advancements.cobblemon.first_battle_victory.description": "Affrontez un autre dresseur et sortez vainqueur",
"advancements.cobblemon.first_shiny_catch": "Couleur porte-bonheur",
"advancements.cobblemon.first_shiny_catch.description": "Attrapez votre premier Pokémon chromatique",
"advancements.cobblemon.healing_machine": "Repos bien mérité",
"advancements.cobblemon.healing_machine.description": "Attendez que la machine de soin soit chargée et soignez votre équipe",
"advancements.cobblemon.obtain_leek": "Y'a-t-il un médecin sur le bateau?",
"advancements.cobblemon.obtain_leek": "Que quelqu'un soigne le bateau !",
"advancements.cobblemon.obtain_leek.description": "Obtenez un Soignon, une plante sauvage qui pousse dans l'eau douce",
"advancements.cobblemon.medicinal_brew": "Apothicaire local",
"advancements.cobblemon.medicinal_brew.description": "Utilisez un Soignon pour confectionner la base de vos remèdes",
"advancements.cobblemon.brew_potion": "Touche pô mes potions",
"advancements.cobblemon.brew_potion": "Vous ne pouvez pas manier mes potions",
"advancements.cobblemon.brew_potion.description": "Incorporez une Baie Oran dans l'Infusion Médicinale pour créer une Potion",
"advancements.cobblemon.brew_full_restore": "Le choix du champion",
"advancements.cobblemon.brew_full_restore.description": "Suivez l'arbre de brassage et confectionnez une Guérison avec une Baie Prine et une Potion Max",
@@ -639,7 +629,7 @@
"advancements.cobblemon.obtain_all_mints.description": "Obtenez toutes les 6 couleurs d'Aromates et accédez à un éventail complet de natures",
"advancements.cobblemon.obtain_revival_herb": "Herbe ton enthousiasme",
"advancements.cobblemon.obtain_revival_herb.description": "Obtenez un Herbe Rappel, une plante sauvage qui pousse dans les cavernes luxuriantes",
"advancements.cobblemon.use_revive": "Vivre pour combattre un jour de plus!",
"advancements.cobblemon.use_revive": "Vivre pour combattre un jour de plus !",
"advancements.cobblemon.use_revive.description": "Utilisez un Rappel, Rappel Max ou Herbe Rappel pour réanimer un Pokémon K.O.",
"advancements.cobblemon.obtain_big_root": "La Racine de la guérison de base",
"advancements.cobblemon.obtain_big_root.description": "Obtenez une Grosse Racine, une plante sauvage qui pousse dans les cavernes de terre près de la surface",
@@ -648,24 +638,24 @@
"advancements.cobblemon.obtain_vivichoke": "Une vivacité bourgeonnante",
"advancements.cobblemon.obtain_vivichoke.description": "Obtenez un Bourgeon Vivace, cultivé à partir de graines de Bourgeon Vivace étrangement rares",
"advancements.cobblemon.obtain_berry": "Très fruité",
"advancements.cobblemon.obtain_berry.description": "Obtenez une Baie, un fruit sauvage qui pousse à la surface et qui possède de nombreuses utilisations",
"advancements.cobblemon.obtain_berry.description": "Obtenez une Baie, des fruits sauvages qui poussent à la surface et qui ont de nombreuses utilisations",
"advancements.cobblemon.obtain_mutated_berry": "Un résultat inattendu",
"advancements.cobblemon.obtain_mutated_berry.description": "Plantez des Baies de différents types les unes à côté des autres et observez la mutation en action",
"advancements.cobblemon.obtain_all_berries": "Oups, sont toutes là!",
"advancements.cobblemon.obtain_all_berries": "Oups, toutes les Baies !",
"advancements.cobblemon.obtain_all_berries.description": "Obtenez toutes les types de Baies dans Cobblemon",
"advancements.cobblemon.use_pasture": "Liberté : Activé",
"advancements.cobblemon.use_pasture.description": "Fabriquez un bloc de pâturage et laissez vos amis se balader",
"advancements.cobblemon.catch_all_vivillon": "Prismillonnaire",
"advancements.cobblemon.catch_all_vivillon": "Ailes à motifs",
"advancements.cobblemon.catch_all_vivillon.description": "Obtenez toutes les formes de Prismillon",
"advancements.cobblemon.evolve_veevees": "Précieuses évolutions",
"advancements.cobblemon.evolve_veevees.description": "Faites évoluer Évoli en 8 différentes évolutions",
"advancements.cobblemon.evolve_shedinja": "Un fantôme dans la carapace",
"advancements.cobblemon.evolve_shedinja.description": "Gardez une Poké Ball supplémentaire dans votre inventaire et obtenez un Munja",
"advancements.cobblemon.trade_pokemon": "Prends-en bien soin!",
"advancements.cobblemon.trade_pokemon": "Prends-en bien soin !",
"advancements.cobblemon.trade_pokemon.description": "Échangez un Pokémon avec un autre dresseur",
"advancements.cobblemon.trade_shelmet_karrablast": "J'aimerais déclarer un vol!",
"advancements.cobblemon.trade_shelmet_karrablast": "J'aimerais déclarer un vol !",
"advancements.cobblemon.trade_shelmet_karrablast.description": "Échangez un Escargaume et un Carabing",
"advancements.cobblemon.max_level_baby": "Darwin? Qui ça?",
"advancements.cobblemon.max_level_baby": "Darwin ? Qui ça ?",
"advancements.cobblemon.max_level_baby.description": "Montez un Pokémon évolutif au stade initial jusqu'au niveau 100 sans l'évoluer",
"advancements.cobblemon.use_candy": "Dent sucrée",
"advancements.cobblemon.use_candy.description": "Utilisez n'importe quel Bonbon Exp. sur un Pokémon",
@@ -712,20 +702,17 @@
"cobblemon.battle.recharge": "%1$s doit se reposer !",
"cobblemon.capture.broke_free": "%1$s s'est libéré !",
"cobblemon.capture.not_your_turn": "Ce n'est pas à votre tour d'agir.",
"cobblemon.capture.attempted_capture": "%1$s utilise une %2$s sur %3$s !",
"cobblemon.capture.attempted_capture": "%1$s lance une %2$s sur %3$s !",
"cobblemon.capture.succeeded": "Et hop ! Vous avez attrapé %1$s !",
"cobblemon.capture.not_wild": "%1$s n'est pas un Pokémon sauvage !",
"cobblemon.capture.in_battle": "%1$s est dans un combat et ne peut pas être capturé.",
"cobblemon.capture.busy": "%1$s est occupé !",
"cobblemon.capture.you_in_battle": "Vous êtes en plein combat.",
"cobblemon.capture.not_single": "Vous pouvez capturer un Pokémon sauvage que dans un combat de 1vs1.",
"cobblemon.capture.cannot_be_caught": "Ce Pokémon ne peut pas être capturé.",
"cobblemon.you_in_battle": "Vous ne pouvez pas faire ça durant un combat !",
"cobblemon.battle.turn": "C'est maintenant le tour %1$s",
"cobblemon.battle.side_subject.ally": "votre",
"cobblemon.battle.side_subject.opponent": "l'adversaire",
"cobblemon.battle.transform": "%1$s prend l'apparence de %2$s !",
"cobblemon.battle.endability": "Le talent de %1$s a été rendu inactif !",
"cobblemon.battle.weather.raindance.start": "Il commence à pleuvoir !",
"cobblemon.battle.weather.raindance.upkeep": "La pluie continue de tomber.",
"cobblemon.battle.weather.raindance.end": "La pluie s'est arrêtée !",
@@ -738,24 +725,7 @@
"cobblemon.battle.weather.hail.start": "Il commence à grêler !",
"cobblemon.battle.weather.hail.upkeep": "Il y a un déluge de grêle.",
"cobblemon.battle.weather.hail.end": "La grêle s’est arrêtée !",
"cobblemon.battle.weather.snow.start": "Il commence à neiger !",
"cobblemon.battle.weather.snow.upkeep": "La neige est en train de tomber.",
"cobblemon.battle.weather.snow.end": "La neige s’est arrêtée !",
"cobblemon.battle.start.bide": "%1$s commence à se concentrer !",
"cobblemon.battle.start.magnetrise": "%1$s lévite sur un champ magnétique !",
"cobblemon.battle.start.disable": "%2$s de %1$s est mis sous entrave !",
"cobblemon.battle.start.nightmare": "%1$s commence à cauchemarder !",
"cobblemon.battle.start.imprison": "%1$s bloque les capacités en commun avec l’adversaire !",
"cobblemon.battle.start.snatch": "%1$s attend qu’une cible agisse !",
"cobblemon.battle.start.noretreat": "%1$s ne peut plus fuir à cause d’Ultime Bastion !",
"cobblemon.battle.start.saltcure": "%1$s est couvert de sel !",
"cobblemon.battle.start.shedtail": "%1$s détache sa queue pour créer un leurre !",
"cobblemon.battle.start.smackdown": "Touché dans les airs, %1$s s’écrase au sol !",
"cobblemon.battle.start.torment": "%1$s est tourmenté !",
"cobblemon.battle.start.foresight": "%1$s est identifié !",
"cobblemon.battle.start.telekinesis": "Ça fait léviter %1$s !",
"cobblemon.battle.start.laserfocus": "%1$s aiguise son esprit !",
"cobblemon.battle.start.lockon": "%2$s vise %1$s !",
"cobblemon.battle.start.yawn": "Ça rend %1$s somnolent !",
"cobblemon.battle.start.perish": "Le compte à rebours de Requiem de %1$s descend à %2$s !",
"cobblemon.battle.start.leechseed": "%1$s est infecté !",
@@ -770,24 +740,6 @@
"cobblemon.battle.start.miracleeye": "%1$s est identifié !",
"cobblemon.battle.start.dynamax": "%1$s a Dynamax !",
"cobblemon.battle.start.gmax": "%1$s a Gigamax !",
"cobblemon.battle.start.encore": "%1$s ! Encore une fois !",
"cobblemon.battle.start.futuresight": "%1$s prévoit une attaque !",
"cobblemon.battle.start.ingrain": "%1$s plante ses racines !",
"cobblemon.battle.start.healblock": "%1$s ne peut pas guérir !",
"cobblemon.battle.start.mimic": "%1$s apprend %2$s !",
"cobblemon.battle.start.octolock": "%1$s ne peut plus fuir à cause d’Octoprise !",
"cobblemon.battle.start.burnup": "Le feu intérieur de %1$s s’est entièrement consumé !",
"cobblemon.battle.start.typechange": "%1$s prend le type %2$s !",
"cobblemon.battle.start.doomdesire": "%1$s souhaite le déclenchement de la capacité Vœu Destructeur !",
"cobblemon.battle.start.doubleshock": "%1$s a utilisé toute son électricité !",
"cobblemon.battle.start.stockpile": "%1$s utilise la capacité Stockage %2$s fois !",
"cobblemon.battle.start.powertrick": "%1$s échange son Attaque et sa Défense !",
"cobblemon.battle.start.powershift": "%1$s échange sa puissance offensive et sa puissance défensive !",
"cobblemon.battle.start.substitute": "%1$s crée un clone !",
"cobblemon.battle.start.embargo": "%1$s ne peut plus utiliser d’objets !",
"cobblemon.battle.start.typeadd": "%2$s gagne le type %1$s.",
"cobblemon.battle.start.reflecttype": "%1$s prend le type de %2$s !",
"cobblemon.battle.start.tarshot": "%1$s est maintenant vulnérable au feu !",
"cobblemon.battle.fieldstart.electricterrain": "De l’électricité parcourt le terrain !",
"cobblemon.battle.fieldstart.grassyterrain": "Un beau gazon pousse sur le terrain !",
"cobblemon.battle.fieldstart.gravity": "La gravité est intensifiée !",
@@ -809,9 +761,6 @@
"cobblemon.battle.fieldend.watersport": "L’effet de Tourniquet se dissipe !",
"cobblemon.battle.fieldend.wonderroom": "La Défense et la Défense Spéciale sont revenues à la normale !",
"cobblemon.battle.fieldactivate.perishsong": "Les Pokémon au combat seront K.O. dans trois tours !",
"cobblemon.battle.fieldactivate.iondeluge": "Un déluge de plasma s’abat sur le terrain !",
"cobblemon.battle.fieldactivate.fairylock": "Il sera impossible de fuir au tour suivant !",
"cobblemon.battle.fieldactivate.teatime": "C’est l’heure du thé ! Tout le monde mange sa Baie.",
"cobblemon.battle.sidestart.stealthrock": "Des pierres pointues lévitent autour de l'équipe de %1$s !",
"cobblemon.battle.sidestart.spikes": "Des picots s'éparpillent autour de l'équipe de %1$s !",
"cobblemon.battle.sidestart.toxicspikes": "Des pics toxiques se répandent autour de l'équipe de %1$s !",
@@ -821,8 +770,6 @@
"cobblemon.battle.sidestart.auroraveil": "Voile Aurore augmente la résistance de l'équipe de %1$s aux capacités physiques et spéciales !",
"cobblemon.battle.sidestart.tailwind": "Un vent arrière souffle sur l'équipe de %1$s !",
"cobblemon.battle.sidestart.safeguard": "Un voile mystérieux recouvre l'équipe de %1$s !",
"cobblemon.battle.sidestart.luckychant": "L'Air Veinard immunise l’équipe de %1$s contre les coups critiques !",
"cobblemon.battle.sidestart.mist": "L'équipe de %1$s s’entoure de brume !",
"cobblemon.battle.sideend.stealthrock": "Les pierres pointues autour de l'équipe de %1$s ont disparu !",
"cobblemon.battle.sideend.spikes": "Il n'y a plus de picots autour de l'équipe de %1$s !",
"cobblemon.battle.sideend.toxicspikes": "Il n'y a plus de pics toxiques autour de l'équipe de %1$s !",
@@ -832,8 +779,6 @@
"cobblemon.battle.sideend.auroraveil": "Voile Aurore n'a plus d'effet sur l'équipe de %1$s !",
"cobblemon.battle.sideend.tailwind": "Le vent arrière soufflant sur l'équipe de %1$s s'arrête !",
"cobblemon.battle.sideend.safeguard": "L'équipe de %1$s n’est plus protégée par le voile mystérieux !",
"cobblemon.battle.sideend.luckychant": "L’Air Veinard de l'équipe de %1$s prend fin !",
"cobblemon.battle.sideend.mist": "La brume autour de l’équipe de %1$s s’est dissipée !",
"cobblemon.battle.cant.generic": "%1$s ne peut pas utiliser %2$s !",
"cobblemon.battle.cant.truant": "%1$s n'obéit pas !",
"cobblemon.battle.cant.flinch": "%1$s a la trouille ! Il ne peut plus attaquer !",
@@ -848,11 +793,6 @@
"cobblemon.battle.cant.taunt": "%1$s ne peut pas utiliser %2$s après la provocation !",
"cobblemon.battle.cant.throatchop": "Exécu-Son empêche %1$s d'utiliser la capacité !",
"cobblemon.battle.activate.confusion": "%1$s est confus !",
"cobblemon.battle.activate.happyhour": "L’ambiance est euphorique !",
"cobblemon.battle.activate.mindreader": "%2$s vise %1$s !",
"cobblemon.battle.activate.magmastorm": "%1$s est piégé dans un tourbillon de magma !",
"cobblemon.battle.activate.powersplit": "%1$s additionne sa force à celle de sa cible et les redistribue équitablement !",
"cobblemon.battle.activate.pursuit": "(%1$s se retire...)",
"cobblemon.battle.activate.gravity": "%1$s ne peut pas rester en l'air à cause de la gravité !",
"cobblemon.battle.activate.mistyterrain": "%1$s est protégé par un champ brumeux !",
"cobblemon.battle.activate.psychicterrain": "%1$s est protégé par un champ psychique !",
@@ -861,10 +801,7 @@
"cobblemon.battle.activate.trapped": "%1$s ne peut plus s'échapper !",
"cobblemon.battle.activate.bind": "%1$s est pris dans l'étreinte de %2$s !",
"cobblemon.battle.activate.wrap": "%1$s est ligoté par %2$s !",
"cobblemon.battle.activate.snatch": "%1$s saisit la capacité de %2$s !",
"cobblemon.battle.activate.sandtomb": "%1$s est piégé dans un tourbillon de sable !",
"cobblemon.battle.activate.struggle": "%1$s n'a plus de capacités utilisables !",
"cobblemon.battle.activate.stickyweb": "%1$s est pris dans une toile gluante !",
"cobblemon.battle.activate.courtchange": "Les effets affectant chaque côté du terrain ont été changés par %1$s !",
"cobblemon.battle.activate.guardsplit": "%1$s partage sa garde avec sa cible !",
"cobblemon.battle.activate.spite": "Les PP de la capacité %2$s de %1$s baissent de %3$s !",
@@ -881,37 +818,13 @@
"cobblemon.battle.activate.trick": "%1$s échange son objet avec celui de sa cible !",
"cobblemon.battle.activate.quickclaw": "La Vive Griffe permet à %1$s d'agir en priorité !",
"cobblemon.battle.activate.focusband": "%1$s tient bon grâce à la %2$s !",
"cobblemon.battle.activate.forewarn": "La capacité %3$s de %2$s a été détectée !",
"cobblemon.battle.activate.forewarn": "La capacité %2$s de %1$s a été détectée !",
"cobblemon.battle.activate.disguise": "Le déguisement absorbe l’attaque !",
"cobblemon.battle.activate.liquidooze": "%1$s aspire le suintement !",
"cobblemon.battle.activate.whirlpool": "%1$s est piégé dans le tourbillon !",
"cobblemon.battle.activate.clamp": "%1$s est pris dans le Claquoir de %2$s !",
"cobblemon.battle.activate.afteryou": "%1$s accepte avec joie !",
"cobblemon.battle.activate.beatup": "Attaque de %1$s !",
"cobblemon.battle.activate.celebrate": "Félicitations, %1$s !",
"cobblemon.battle.activate.substitute": "Le clone subit les dégâts à la place de %1$s !",
"cobblemon.battle.activate.infestation": "%1$s est harcelé !",
"cobblemon.battle.activate.phantomforce": "Ça transperce la protection de %1$s !",
"cobblemon.battle.activate.matblock": "La capacité %3$s a été bloquée par un tatami !",
"cobblemon.battle.activate.electricterrain": "%1$s est protégé par un champ électrifié !",
"cobblemon.battle.activate.ingrain": "%1$s s'accroche avec ses racines !",
"cobblemon.battle.activate.mist": "%1$s est protégé par la brume !",
"cobblemon.battle.activate.poltergeist": "%1$s est attaqué par son objet %3$s !",
"cobblemon.battle.activate.powder": "La nuée de poudre entre en réaction avec le Pokémon et explose !",
"cobblemon.battle.activate.quash": "%1$s doit retourner à la queue !",
"cobblemon.battle.activate.quickguard": "%1$s est protégé par la capacité Prévention !",
"cobblemon.battle.activate.safeguard": "%1$s est protégé par la capacité Rune Protect !",
"cobblemon.battle.activate.sketch": "%1$s gribouille %3$s !",
"cobblemon.battle.activate.grudge": "La capacité %3$s de %1$s perd ses PP à cause de Rancune !",
"cobblemon.battle.activate.speedswap": "%1$s et sa cible échangent leur Vitesse !",
"cobblemon.battle.activate.switcheroo": "%1$s échange son objet avec celui de sa cible !",
"cobblemon.battle.activate.skillswap": "%1$s et sa cible échangent leurs talents !",
"cobblemon.battle.activate.wideguard": "%1$s est protégé par la capacité Garde Large !",
"cobblemon.battle.activate.craftyshield": "%1$s est protégé par la capacité Vigilance !",
"cobblemon.battle.activate.tidyup": "Le grand nettoyage est terminé !",
"cobblemon.battle.prepare.bounce": "%1$s se propulse dans les airs !",
"cobblemon.battle.prepare.dig": "%1$s se cache dans le sol !",
"cobblemon.battle.prepare.shelltrap": "%1$s déclenche le Carapiège !",
"cobblemon.battle.prepare.dive": "%1$s se cache sous l'eau !",
"cobblemon.battle.prepare.fly": "%1$s s'envole !",
"cobblemon.battle.prepare.freezeshock": "%1$s est baigné d'une lumière blafarde !",
@@ -925,10 +838,6 @@
"cobblemon.battle.prepare.skydrop": "%1$s emporte sa cible haut dans le ciel !",
"cobblemon.battle.prepare.solarbeam": "%1$s absorbe la lumière !",
"cobblemon.battle.swapboost.generic": "%1$s a changé les bonus de stats avec %2$s !",
"cobblemon.battle.swapboost.guardswap": "%1$s intervertit les changements de Défense et de Défense Spéciale avec ceux de sa cible !",
"cobblemon.battle.swapboost.powerswap": "%1$s intervertit les changements d’Attaque et d’Attaque Spéciale avec ceux de sa cible !",
"cobblemon.battle.swapboost.heartswap": "%1$s intervertit ses changements de stats avec ceux de sa cible !",
"cobblemon.battle.copyboost.generic": "%1$s copie les changements de stats de %2$s !",
"cobblemon.battle.singleturn.protect": "%1$s s'est protégé !",
"cobblemon.battle.singleturn.endure": "%1$s encaisse les coups !",
"cobblemon.battle.singleturn.craftyshield": "L'équipe de %1$s est protégée par la capacité Vigilance !",
@@ -958,11 +867,7 @@
"cobblemon.battle.damage.leechseed": "Vampigraine draine l'énergie de %1$s !",
"cobblemon.battle.damage.sandstorm": "La tempête de sable inflige des dégâts à %1$s !",
"cobblemon.battle.damage.hail": "La tempête de grêle inflige des dégâts à %1$s !",
"cobblemon.battle.damage.saltcure": "%1$s est blessé par la capacité Salaison !",
"cobblemon.battle.damage.nightmare": "%1$s est prisonnier d’un cauchemar !",
"cobblemon.battle.damage.magmastorm": "%1$s est blessé par la capacité Vortex Magma !",
"cobblemon.battle.damage.stealthrock": "Des pierres pointues transpercent %1$s !",
"cobblemon.battle.damage.highjumpkick": "%1$s s’écrase au sol !",
"cobblemon.battle.damage.spikes": "%1$s est blessé par les picots !",
"cobblemon.battle.damage.recoil": "%1$s est blessé par le contrecoup !",
"cobblemon.battle.damage.item": "%1$s est blessé par le %2$s !",
@@ -973,21 +878,8 @@
"cobblemon.battle.damage.whirlpool": "%1$s est blessé par la capacité Siphon !",
"cobblemon.battle.damage.clamp": "%1$s est blessé par la capacité Claquoir !",
"cobblemon.battle.damage.curse": "%1$s est touché par la malédiction !",
"cobblemon.battle.damage.firespin": "%1$s est blessé par la capacité Danse Flammes !",
"cobblemon.battle.damage.axekick": "%1$s s’écrase au sol !",
"cobblemon.battle.damage.bind": "%1$s est blessé par la capacité Étreinte !",
"cobblemon.battle.damage.baddreams": "%1$s a le sommeil agité !",
"cobblemon.battle.damage.mindblown": "%1$s sacrifie des PV pour renforcer sa capacité !",
"cobblemon.battle.damage.infestation": "%1$s est blessé par la capacité Harcèlement !",
"cobblemon.battle.damage.spikyshield": "%1$s s'est blessé en attaquant !",
"cobblemon.battle.damage.flameburst": "%1$s est arrosé d’une gerbe de flammes !",
"cobblemon.battle.end.bind": "%1$s est libéré de la capacité Étreinte !",
"cobblemon.battle.end.wrap": "%1$s est libéré de la capacité Ligotage !",
"cobblemon.battle.end.magnetrise": "Le magnétisme de %1$s se dissipe !",
"cobblemon.battle.end.doomdesire": "%1$s subit l'attaque Vœu Destructeur !",
"cobblemon.battle.end.leechseed": "%1$s est libéré de la capacité Vampigraine !",
"cobblemon.battle.end.powershift": "%1$s échange sa puissance offensive et sa puissance défensive !",
"cobblemon.battle.end.torment": "Les tourments de %1$s sont apaisés !",
"cobblemon.battle.end.disable": "La capacité de %1$s n'est plus sous entrave !",
"cobblemon.battle.end.protosynthesis": "L'effet du talent Paléosynthèse de %1$s s'est dissipé !",
"cobblemon.battle.end.taunt": "%1$s s'est remis de la Provoc !",
@@ -997,40 +889,11 @@
"cobblemon.battle.end.whirlpool": "%1$s est libéré de la capacité Siphon !",
"cobblemon.battle.end.clamp": "%1$s est libéré de la capacité Claquoir !",
"cobblemon.battle.end.dynamax": "%1$s revient à la normale !",
"cobblemon.battle.end.telekinesis": "%1$s est libéré de la capacité Lévikinésie !",
"cobblemon.battle.end.encore": "%1$s n’a plus à répéter la même capacité !",
"cobblemon.battle.end.attract": "%1$s n’est plus amoureux !",
"cobblemon.battle.end.futuresight": "%1$s subit l'attaque Prescience !",
"cobblemon.battle.end.embargo": "%1$s peut de nouveau utiliser des objets !",
"cobblemon.battle.end.substitute": "Le clone de %1$s disparaît...",
"cobblemon.battle.end.uproar": "%1$s se calme.",
"cobblemon.battle.end.powertrick": "%1$s échange son Attaque et sa Défense !",
"cobblemon.battle.end.healblock": "%1$s peut à nouveau guérir !",
"cobblemon.battle.end.skydrop": "%1$s est lâché en chute libre !",
"cobblemon.battle.block.uproar": "Mais le brouhaha tient %1$s éveillé !",
"cobblemon.battle.fail.substitute": "Mais il est trop faible pour créer un clone !",
"cobblemon.battle.fail.healblock": "Mais cela échoue sur %1$s !",
"cobblemon.battle.fail.darkvoid": "Mais %1$s en est incapable !",
"cobblemon.battle.fail.teatime": "Mais rien ne se passe !",
"cobblemon.battle.fail.slp": "%1$s dort déjà.",
"cobblemon.battle.fail.par": "%1$s est déjà paralysé.",
"cobblemon.battle.fail.tox": "%1$s est déjà empoisonné.",
"cobblemon.battle.fail.psn": "%1$s est déjà empoisonné.",
"cobblemon.battle.fail.brn": "%1$s est déjà brûlé.",
"cobblemon.battle.fail.frz": "%1$s est déjà gelé.",
"cobblemon.battle.fail.uproar": "Mais le brouhaha empêche %1$s de dormir !",
"cobblemon.battle.fail.skydrop": "%1$s est trop lourd pour être emporté !",
"cobblemon.battle.fail.heal": "Les PV de %1$s sont au maximum !",
"cobblemon.battle.fail.grassknot": "%1$s fait non de la tête. On dirait qu’il ne peut pas utiliser cette capacité...",
"cobblemon.battle.fail.unboost.single": "%2$s de %1$s ne baisse pas !",
"cobblemon.battle.fail.unboost": "Les stats de %1$s ne baissent pas !",
"cobblemon.battle.sethp.painsplit": "Les adversaires partagent leurs PV !",
"cobblemon.battle.ability.sturdy": "%1$s encaisse les coups !",
"cobblemon.battle.ability.unnerve": "%1$s rend l'adversaire tendu et ne peut plus manger de Baies !",
"cobblemon.battle.ability.anticipation": "%1$s est tout tremblant !",
"cobblemon.battle.ability.airlock": "Les effets de la météo se dissipent !",
"cobblemon.battle.ability.trace": "%1$s calque le talent %3$s de %2$s !",
"cobblemon.battle.ability.receiver": "Le Pokémon reçoit le talent %2$s de %1$s !",
"cobblemon.battle.ability.generic": "%2$s de %1$s activé !",
"cobblemon.battle.ability.magicbounce": "%1$s repousse la capacité %2$s ! Retour à l'envoyeur !",
"cobblemon.battle.errors.busy": "%1$s est occupé !",
@@ -1041,9 +904,7 @@
"cobblemon.battle.error.insufficient_pokemon": "%1$s a %2 Pokémon alors que %3 sont nécessaires pour le combat.",
"cobblemon.battle.error.insufficient_pokemon.personal": "Vous avez %1 Pokémon utilisable, mais vous avez besoin de %2 minimum.",
"cobblemon.battle.error.pokemon_is_trapped": "[Choix indisponible] Impossible de changer : Le Pokémon actif est piégé",
"cobblemon.battle.error.canceled": "Chaque chose en son temps !",
"cobblemon.battle.immune": "Mais %1$s est immunisé !",
"cobblemon.battle.invertboost": "Les changements de stats de %1$s sont inversés !",
"cobblemon.battle.missed": "Mais cela échoue !",
"cobblemon.battle.hit_count": "Touché %1$s fois !",
"cobblemon.battle.hit_count_singular": "Touché une fois !",
@@ -1062,14 +923,13 @@
"cobblemon.battle.enditem.incinerate": "L'objet %2$s de %1$s est détruit par le feu !",
"cobblemon.battle.enditem.airballoon": "Le Ballon de %1$s a éclaté !",
"cobblemon.battle.enditem.redcard": "%1$s a mis un Carton Rouge à %3$s !",
"cobblemon.battle.enditem.pluck": "%3$s vole et mange la %2$s de %1$s !",
"cobblemon.battle.enditem.berryjuice": "Le Jus de Baie de %1$s est activé !",
"cobblemon.battle.enditem.generic": "%1$s utilise l'objet %2$s !",
"cobblemon.battle.enditem.mentalherb": "%1$s annule les effets mentaux grâce à l'Herbe Mental !",
"cobblemon.battle.enditem.powerherb": "%1$s est déjà reposé grâce à l'Herbe Pouvoir !",
"cobblemon.battle.enditem.mirrorherb": "%1$s a copié les changements de stats grâce à sa Feuille Copieuse !",
"cobblemon.battle.enditem.whiteherb": "%1$s annule les changements négatifs grâce à l'Herbe Blanche !",
"cobblemon.battle.enditem.corrosivegas": "%3$s fait fondre l'objet %2$s de %1$s !",
"cobblemon.battle.enditem.stealeat": "%3$s vole et mange la %2$s de la cible !",
"cobblemon.battle.heal.zeffect": "%1$s utilise la Force Z pour se soigner !",
"cobblemon.battle.heal.wish": "Le Vœu de %1$s se réalise !",
"cobblemon.battle.heal.drain": "L'énergie de %1$s est drainée !",
@@ -1077,14 +937,12 @@
"cobblemon.battle.heal.revivalblessing": "%1$s a repris connaissance et est prêt à se battre de nouveau !",
"cobblemon.battle.heal.aquaring": "Le voile d'eau restaure les PV de %1$s !",
"cobblemon.battle.heal.ingrain": "%1$s absorbe des nutriments avec ses racines !",
"cobblemon.battle.heal.lunardance": "%1$s est baigné par des rayons de lune !",
"cobblemon.battle.heal.grassyterrain": "%1$s récupère des PV !",
"cobblemon.battle.heal.leftovers": "Les %2$s de %1$s restaurent un peu ses PV !",
"cobblemon.battle.heal.item": "%1$s récupère des PV avec l'objet %2$s !",
"cobblemon.battle.heal.raindish": "%1$s récupère des PV grâce à Cuvette !",
"cobblemon.battle.heal.generic": "%1$s a restauré ses PV.",
"cobblemon.battle.heal.bagitempotion": "%1$s récupère des PV !",
"cobblemon.battle.heal.poisonheal": "%1$s regagne des PV grâce à Soin Poison !",
"cobblemon.battle.curestatus.naturalcure": "%1$s est guéri grâce à Médic Nature !",
"cobblemon.battle.bagitem.use": "%1$s utilise l'objet %2$s sur %3$s !",
"cobblemon.battle.bagitem.cannot": "Vous ne pouvez pas utiliser d'objets pour le moment.",
@@ -47,8 +47,6 @@
"item.cobblemon.yellow_apricorn": "Noigrume jaune",
"item.cobblemon.vivichoke_seeds": "Graines de Bourgeon Vivace",
"item.cobblemon.vivichoke": "Bourgeon Vivace",
"item.cobblemon.apricorn_boat": "Bateau en Noigrume",
"item.cobblemon.apricorn_chest_boat": "Bateau de stockage en Noigrume",
"item.cobblemon.link_cable": "Fil de Liaison",
"item.cobblemon.dragon_scale": "Écaille Draco",
"item.cobblemon.kings_rock": "Roche Royale",
@@ -150,10 +148,8 @@
"item.cobblemon.choice_band": "Bandeau Choix",
"item.cobblemon.choice_scarf": "Mouchoir Choix",
"item.cobblemon.choice_specs": "Lunettes Choix",
"item.cobblemon.cleanse_tag": "Rune Purifiante",
"item.cobblemon.dragon_fang": "Croc de Dragon",
"item.cobblemon.exp_share": "Multi Exp",
"item.cobblemon.fairy_feather": "Plume Enchantée",
"item.cobblemon.focus_band": "Bandeau",
"item.cobblemon.hard_stone": "Pierre Dure",
"item.cobblemon.heavy_duty_boots": "Grosses Bottes",
@@ -193,11 +189,6 @@
"item.cobblemon.power_bracer": "Poignet Pouvoir",
"item.cobblemon.power_lens": "Lentille Pouvoir",
"item.cobblemon.power_weight": "Poids Pouvoir",
"item.cobblemon.flame_orb": "Orbe Flamme",
"item.cobblemon.light_orb": "Balle Lumière",
"item.cobblemon.smoke_ball": "Boule Fumée",
"item.cobblemon.toxic_orb": "Orbe Toxique",
"item.cobblemon.life_orb": "Orbe Vie",
"item.cobblemon.poke_ball.tooltip": "Taux de capture ×1",
"item.cobblemon.slate_ball.tooltip": "Taux de capture ×1",
"item.cobblemon.azure_ball.tooltip": "Taux de capture ×1",
@@ -278,7 +269,7 @@
"itemGroup.cobblemon.pokeball": "Poké Balls",
"itemGroup.cobblemon.agriculture": "Agriculture",
"itemGroup.cobblemon.consumables": "Consommables",
"itemGroup.cobblemon.held_item": "Objets tenus",
"itemGroup.cobblemon.held_item": "Objet tenu",
"itemGroup.cobblemon.evolution_item": "Objets d'évolution",
"block.cobblemon.apricorn_log": "Bûche de Noigrume",
"block.cobblemon.stripped_apricorn_log": "Bûche de Noigrume écorcée",
@@ -288,7 +279,6 @@
"block.cobblemon.apricorn_leaves": "Feuilles de Noigrume",
"block.cobblemon.apricorn_fence": "Barrière en Noigrume",
"block.cobblemon.apricorn_sign": "Pancarte en Noigrume",
"block.cobblemon.apricorn_hanging_sign": "Pancarte suspendue en Noigrume",
"block.cobblemon.apricorn_stairs": "Escalier en Noigrume",
"block.cobblemon.apricorn_pressure_plate": "Plaque de pression en Noigrume",
"block.cobblemon.apricorn_button": "Bouton en Noigrume",
@@ -338,8 +328,8 @@
"cobblemon.ui.starter.choose_starter_title": "Choisissez votre Pokémon de départ !",
"cobblemon.ui.starter.choose_starter_description": "Appuyez sur la touche « %1$s »",
"cobblemon.ui.starter.chooseyourstarter": "Appuyez sur %1$s pour choisir votre Pokémon et commencer votre voyage !",
"cobblemon.ui.moves": "Combat",
"cobblemon.ui.moves.switch": "Capacités",
"cobblemon.ui.moves": "Capacités",
"cobblemon.ui.moves.switch": "Gestion des capacités",
"cobblemon.ui.moves.pp": "%1$sPP",
"cobblemon.ui.stats": "Stats",
"cobblemon.ui.stats.stat": "Stat",
@@ -592,19 +582,19 @@
"advancements.cobblemon.root": "Cobblemon, Je te choisis !",
"advancements.cobblemon.root.description": "Choisissez un starter et commencez une nouvelle aventure",
"advancements.cobblemon.obtain_leftovers": "Récolter, réutiliser, recycler !",
"advancements.cobblemon.obtain_leftovers.description": "Gardez les restes après avoir mangé une pomme",
"advancements.cobblemon.obtain_leftovers.description": "Gardez les restes après avoir mangé une pomme.",
"advancements.cobblemon.any_plant": "La générosité de Mère Nature",
"advancements.cobblemon.any_plant.description": "J'espère que vous avez la main verte !",
"advancements.cobblemon.harvest_apricorn": "Est-ce un fruit ou une noisette ?",
"advancements.cobblemon.harvest_apricorn.description": "Faites un clic droit pour récolter un Noigrume entièrement poussé",
"advancements.cobblemon.harvest_apricorn": "Est-ce un Fruit ou une Noisette ?",
"advancements.cobblemon.harvest_apricorn.description": "Clic droit pour récolter un noigrume entièrement poussé",
"advancements.cobblemon.harvest_apricorn_seed": "Une pousse à la fois",
"advancements.cobblemon.harvest_apricorn_seed.description": "Occasionnellement, les Noigrumes lâcheront un germe. Utilisez-en un pour planter un nouvel arbre",
"advancements.cobblemon.harvest_apricorn_seed.description": "Occasionnellement, les Noigrumes lâcheront une graine. Utilisez en une pour planter un nouvel arbre",
"advancements.cobblemon.bone_meal_apricorn": "Pas besoin de Carapuce à O",
"advancements.cobblemon.bone_meal_apricorn.description": "Utilisez de la poudre d'os pour accélérer la croissance d'un Noigrume",
"advancements.cobblemon.bone_meal_apricorn.description": "Utilisez de la poudre d'os pour accélérer la croissance d'un noigrume",
"advancements.cobblemon.rainbow_apricorns": "Une Forêt bien colorée",
"advancements.cobblemon.rainbow_apricorns.description": "Plantez un arbre de Noigrume de chaque couleur",
"advancements.cobblemon.craft_poke_ball": "La première d'une longue série",
"advancements.cobblemon.craft_poke_ball.description": "En utilisant quatre Noigrumes d'une même couleur et un lingot de cuivre, fabriquez votre première Poké Ball",
"advancements.cobblemon.rainbow_apricorns.description": "Plantez un arbre de noigrume de chaque couleur",
"advancements.cobblemon.craft_poke_ball": "La Première d'une Longue Série",
"advancements.cobblemon.craft_poke_ball.description": "En utilisant quatre noigrumes d'une même couleur et un lingot de cuivre, fabriquez votre première Poké Ball",
"advancements.cobblemon.craft_base_balls": "Une première collection",
"advancements.cobblemon.craft_base_balls.description": "Fabriquez des Poké Balls des sept couleurs de base",
"advancements.cobblemon.craft_apricorn_balls": "Fargas serait fier",
@@ -648,14 +638,14 @@
"advancements.cobblemon.obtain_vivichoke": "Une vivacité bourgeonnante",
"advancements.cobblemon.obtain_vivichoke.description": "Obtenez un Bourgeon Vivace, cultivé à partir de graines de Bourgeon Vivace étrangement rares",
"advancements.cobblemon.obtain_berry": "Très fruité",
"advancements.cobblemon.obtain_berry.description": "Obtenez une Baie, un fruit sauvage qui pousse à la surface et qui possède de nombreuses utilisations",
"advancements.cobblemon.obtain_berry.description": "Obtenez une Baie, des fruits sauvages qui poussent à la surface et qui ont de nombreuses utilisations",
"advancements.cobblemon.obtain_mutated_berry": "Un résultat inattendu",
"advancements.cobblemon.obtain_mutated_berry.description": "Plantez des Baies de différents types les unes à côté des autres et observez la mutation en action",
"advancements.cobblemon.obtain_all_berries": "Oups, toutes les Baies !",
"advancements.cobblemon.obtain_all_berries.description": "Obtenez toutes les types de Baies dans Cobblemon",
"advancements.cobblemon.use_pasture": "Liberté : Activé",
"advancements.cobblemon.use_pasture.description": "Fabriquez un bloc de pâturage et laissez vos amis se promener",
"advancements.cobblemon.catch_all_vivillon": "Prismillonnaire",
"advancements.cobblemon.catch_all_vivillon": "Ailes à motifs",
"advancements.cobblemon.catch_all_vivillon.description": "Obtenez tous les motifs de Prismillon",
"advancements.cobblemon.evolve_veevees": "Des évolutions de valeur",
"advancements.cobblemon.evolve_veevees.description": "Faites évoluer Évoli en 8 évolutions différentes",
@@ -712,20 +702,17 @@
"cobblemon.battle.recharge": "%1$s doit se reposer.",
"cobblemon.capture.broke_free": "%1$s s'est libéré !",
"cobblemon.capture.not_your_turn": "Ce n'est pas à votre tour d'agir.",
"cobblemon.capture.attempted_capture": "%1$s utilise une %2$s sur %3$s !",
"cobblemon.capture.attempted_capture": "%1$s lance une %2$s sur %3$s !",
"cobblemon.capture.succeeded": "Et hop ! Vous avez attrapé %1$s !",
"cobblemon.capture.not_wild": "%1$s n'est pas un Pokémon sauvage !",
"cobblemon.capture.in_battle": "%1$s est dans un combat et ne peut pas être capturé.",
"cobblemon.capture.busy": "%1$s est occupé !",
"cobblemon.capture.you_in_battle": "Vous êtes dans un combat.",
"cobblemon.capture.not_single": "Vous ne pouvez capturer un Pokémon sauvage seulement dans un combat 1 vs 1.",
"cobblemon.capture.cannot_be_caught": "Ce Pokémon ne peut pas être capturé.",
"cobblemon.you_in_battle": "Vous ne pouvez pas faire cela durant un combat !",
"cobblemon.battle.turn": "C'est maintenant le tour %1$s",
"cobblemon.battle.side_subject.ally": "votre",
"cobblemon.battle.side_subject.opponent": "l'adversaire",
"cobblemon.battle.transform": "%1$s prend l'apparence de %2$s !",
"cobblemon.battle.endability": "Le talent de %1$s a été rendu inactif !",
"cobblemon.battle.weather.raindance.start": "Il commence à pleuvoir !",
"cobblemon.battle.weather.raindance.upkeep": "La pluie continue de tomber.",
"cobblemon.battle.weather.raindance.end": "La pluie s'est arrêtée !",
@@ -738,24 +725,7 @@
"cobblemon.battle.weather.hail.start": "Il commence à grêler !",
"cobblemon.battle.weather.hail.upkeep": "Il y a un déluge de grêle.",
"cobblemon.battle.weather.hail.end": "La grêle s’est arrêtée !",
"cobblemon.battle.weather.snow.start": "Il commence à neiger !",
"cobblemon.battle.weather.snow.upkeep": "La neige est en train de tomber.",
"cobblemon.battle.weather.snow.end": "La neige s’est arrêtée !",
"cobblemon.battle.start.bide": "%1$s commence à se concentrer !",
"cobblemon.battle.start.magnetrise": "%1$s lévite sur un champ magnétique !",
"cobblemon.battle.start.disable": "%2$s de %1$s est mis sous entrave !",
"cobblemon.battle.start.nightmare": "%1$s commence à cauchemarder !",
"cobblemon.battle.start.imprison": "%1$s bloque les capacités en commun avec l’adversaire !",
"cobblemon.battle.start.snatch": "%1$s attend qu’une cible agisse !",
"cobblemon.battle.start.noretreat": "%1$s ne peut plus fuir à cause d’Ultime Bastion !",
"cobblemon.battle.start.saltcure": "%1$s est couvert de sel !",
"cobblemon.battle.start.shedtail": "%1$s détache sa queue pour créer un leurre !",
"cobblemon.battle.start.smackdown": "Touché dans les airs, %1$s s’écrase au sol !",
"cobblemon.battle.start.torment": "%1$s est tourmenté !",
"cobblemon.battle.start.foresight": "%1$s est identifié !",
"cobblemon.battle.start.telekinesis": "Ça fait léviter %1$s !",
"cobblemon.battle.start.laserfocus": "%1$s aiguise son esprit !",
"cobblemon.battle.start.lockon": "%2$s vise %1$s !",
"cobblemon.battle.start.yawn": "Ça rend %1$s somnolent !",
"cobblemon.battle.start.perish": "Le compte à rebours de Requiem de %1$s descend à %2$s !",
"cobblemon.battle.start.leechseed": "%1$s est infecté !",
@@ -770,24 +740,6 @@
"cobblemon.battle.start.miracleeye": "%1$s est identifié !",
"cobblemon.battle.start.dynamax": "%1$s a dynamaxé !",
"cobblemon.battle.start.gmax": "%1$s a gigamaxé !",
"cobblemon.battle.start.encore": "%1$s ! Encore une fois !",
"cobblemon.battle.start.futuresight": "%1$s prévoit une attaque !",
"cobblemon.battle.start.ingrain": "%1$s plante ses racines !",
"cobblemon.battle.start.healblock": "%1$s ne peut pas guérir !",
"cobblemon.battle.start.mimic": "%1$s apprend %2$s !",
"cobblemon.battle.start.octolock": "%1$s ne peut plus fuir à cause d’Octoprise !",
"cobblemon.battle.start.burnup": "Le feu intérieur de %1$s s’est entièrement consumé !",
"cobblemon.battle.start.typechange": "%1$s prend le type %2$s !",
"cobblemon.battle.start.doomdesire": "%1$s souhaite le déclenchement de la capacité Vœu Destructeur !",
"cobblemon.battle.start.doubleshock": "%1$s a utilisé toute son électricité !",
"cobblemon.battle.start.stockpile": "%1$s utilise la capacité Stockage %2$s fois !",
"cobblemon.battle.start.powertrick": "%1$s échange son Attaque et sa Défense !",
"cobblemon.battle.start.powershift": "%1$s échange sa puissance offensive et sa puissance défensive !",
"cobblemon.battle.start.substitute": "%1$s crée un clone !",
"cobblemon.battle.start.embargo": "%1$s ne peut plus utiliser d’objets !",
"cobblemon.battle.start.typeadd": "%2$s gagne le type %1$s.",
"cobblemon.battle.start.reflecttype": "%1$s prend le type de %2$s !",
"cobblemon.battle.start.tarshot": "%1$s est maintenant vulnérable au feu !",
"cobblemon.battle.fieldstart.electricterrain": "De l’électricité parcourt le terrain !",
"cobblemon.battle.fieldstart.grassyterrain": "Un beau gazon pousse sur le terrain !",
"cobblemon.battle.fieldstart.gravity": "La gravité est intensifiée !",
@@ -809,9 +761,6 @@
"cobblemon.battle.fieldend.watersport": "L’effet de Tourniquet se dissipe !",
"cobblemon.battle.fieldend.wonderroom": "La Défense et la Défense Spéciale sont revenues à la normale !",
"cobblemon.battle.fieldactivate.perishsong": "Les Pokémon au combat seront K.O. dans trois tours !",
"cobblemon.battle.fieldactivate.iondeluge": "Un déluge de plasma s’abat sur le terrain !",
"cobblemon.battle.fieldactivate.fairylock": "Il sera impossible de fuir au tour suivant !",
"cobblemon.battle.fieldactivate.teatime": "C’est l’heure du thé ! Tout le monde mange sa Baie.",
"cobblemon.battle.sidestart.stealthrock": "Des pierres pointues lévitent autour de l'équipe de %1$s !",
"cobblemon.battle.sidestart.spikes": "Des picots s'éparpillent autour de l'équipe de %1$s !",
"cobblemon.battle.sidestart.toxicspikes": "Des pics toxiques se répandent autour de l'équipe de %1$s !",
@@ -821,8 +770,6 @@
"cobblemon.battle.sidestart.auroraveil": "Voile Aurore augmente la résistance de l'équipe de %1$s aux capacités physiques et spéciales !",
"cobblemon.battle.sidestart.tailwind": "Un vent arrière souffle sur l'équipe de %1$s !",
"cobblemon.battle.sidestart.safeguard": "Un voile mystérieux recouvre l'équipe de %1$s !",
"cobblemon.battle.sidestart.luckychant": "L'Air Veinard immunise l’équipe de %1$s contre les coups critiques !",
"cobblemon.battle.sidestart.mist": "L'équipe de %1$s s’entoure de brume !",
"cobblemon.battle.sideend.stealthrock": "Les pierres pointues autour de l'équipe de %1$s ont disparu !",
"cobblemon.battle.sideend.spikes": "Il n'y a plus de picots autour de l'équipe de %1$s !",
"cobblemon.battle.sideend.toxicspikes": "Il n'y a plus de pics toxiques autour de l'équipe de %1$s !",
@@ -832,8 +779,6 @@
"cobblemon.battle.sideend.auroraveil": "Voile Aurore n'a plus d'effet sur l'équipe de %1$s !",
"cobblemon.battle.sideend.tailwind": "Le vent arrière soufflant sur l'équipe de %1$s s'arrête !",
"cobblemon.battle.sideend.safeguard": "L'équipe de %1$s n’est plus protégée par le voile mystérieux !",
"cobblemon.battle.sideend.luckychant": "L’Air Veinard de l'équipe de %1$s prend fin !",
"cobblemon.battle.sideend.mist": "La brume autour de l’équipe de %1$s s’est dissipée !",
"cobblemon.battle.cant.generic": "%1$s ne peut pas utiliser %2$s !",
"cobblemon.battle.cant.truant": "%1$s n'obéit pas !",
"cobblemon.battle.cant.flinch": "%1$s a la trouille ! Il ne peut plus attaquer !",
@@ -848,11 +793,6 @@
"cobblemon.battle.cant.taunt": "%1$s ne peut pas utiliser %2$s après la provocation !",
"cobblemon.battle.cant.throatchop": "Exécu-Son empêche %1$s d'utiliser la capacité !",
"cobblemon.battle.activate.confusion": "%1$s est confus !",
"cobblemon.battle.activate.happyhour": "L’ambiance est euphorique !",
"cobblemon.battle.activate.mindreader": "%2$s vise %1$s !",
"cobblemon.battle.activate.magmastorm": "%1$s est piégé dans un tourbillon de magma !",
"cobblemon.battle.activate.powersplit": "%1$s additionne sa force à celle de sa cible et les redistribue équitablement !",
"cobblemon.battle.activate.pursuit": "(%1$s se retire...)",
"cobblemon.battle.activate.gravity": "%1$s ne tiens plus en l'air à cause de la gravité !",
"cobblemon.battle.activate.mistyterrain": "%1$s est protégé par un champ brumeux !",
"cobblemon.battle.activate.psychicterrain": "%1$s est protégé par un champ psychique !",
@@ -861,10 +801,7 @@
"cobblemon.battle.activate.trapped": "%1$s ne peut plus s'échapper !",
"cobblemon.battle.activate.bind": "%1$s est pris dans l'étreinte de %2$s !",
"cobblemon.battle.activate.wrap": "%1$s est ligoté par %2$s !",
"cobblemon.battle.activate.snatch": "%1$s saisit la capacité de %2$s !",
"cobblemon.battle.activate.sandtomb": "%1$s est piégé dans un tourbillon de sable !",
"cobblemon.battle.activate.struggle": "%1$s n'a plus de capacités utilisables !",
"cobblemon.battle.activate.stickyweb": "%1$s est pris dans une toile gluante !",
"cobblemon.battle.activate.courtchange": "Les effets affectant chaque côté du terrain ont été changés par %1$s !",
"cobblemon.battle.activate.guardsplit": "%1$s partage sa garde avec sa cible !",
"cobblemon.battle.activate.spite": "Les PP de la capacité %2$s de %1$s baissent de %3$s !",
@@ -881,37 +818,13 @@
"cobblemon.battle.activate.trick": "%1$s échange son objet avec celui de sa cible !",
"cobblemon.battle.activate.quickclaw": "La Vive Griffe permet à %1$s d'agir en priorité !",
"cobblemon.battle.activate.focusband": "%1$s tient bon grâce à la %2$s !",
"cobblemon.battle.activate.forewarn": "La capacité %3$s de %2$s a été détectée !",
"cobblemon.battle.activate.forewarn": "La capacité %2$s de %1$s a été détectée !",
"cobblemon.battle.activate.disguise": "Le déguisement absorbe l’attaque !",
"cobblemon.battle.activate.liquidooze": "%1$s aspire le suintement !",
"cobblemon.battle.activate.whirlpool": "%1$s est piégé dans le tourbillon !",
"cobblemon.battle.activate.clamp": "%1$s est pris dans le Claquoir de %2$s !",
"cobblemon.battle.activate.afteryou": "%1$s accepte avec joie !",
"cobblemon.battle.activate.beatup": "Attaque de %1$s !",
"cobblemon.battle.activate.celebrate": "Félicitations, %1$s !",
"cobblemon.battle.activate.substitute": "Le clone subit les dégâts à la place de %1$s !",
"cobblemon.battle.activate.infestation": "%1$s est harcelé !",
"cobblemon.battle.activate.phantomforce": "Ça transperce la protection de %1$s !",
"cobblemon.battle.activate.matblock": "La capacité %3$s a été bloquée par un tatami !",
"cobblemon.battle.activate.electricterrain": "%1$s est protégé par un champ électrifié !",
"cobblemon.battle.activate.ingrain": "%1$s s'accroche avec ses racines !",
"cobblemon.battle.activate.mist": "%1$s est protégé par la brume !",
"cobblemon.battle.activate.poltergeist": "%1$s est attaqué par son objet %3$s !",
"cobblemon.battle.activate.powder": "La nuée de poudre entre en réaction avec le Pokémon et explose !",
"cobblemon.battle.activate.quash": "%1$s doit retourner à la queue !",
"cobblemon.battle.activate.quickguard": "%1$s est protégé par la capacité Prévention !",
"cobblemon.battle.activate.safeguard": "%1$s est protégé par la capacité Rune Protect !",
"cobblemon.battle.activate.sketch": "%1$s gribouille %3$s !",
"cobblemon.battle.activate.grudge": "La capacité %3$s de %1$s perd ses PP à cause de Rancune !",
"cobblemon.battle.activate.speedswap": "%1$s et sa cible échangent leur Vitesse !",
"cobblemon.battle.activate.switcheroo": "%1$s échange son objet avec celui de sa cible !",
"cobblemon.battle.activate.skillswap": "%1$s et sa cible échangent leurs talents !",
"cobblemon.battle.activate.wideguard": "%1$s est protégé par la capacité Garde Large !",
"cobblemon.battle.activate.craftyshield": "%1$s est protégé par la capacité Vigilance !",
"cobblemon.battle.activate.tidyup": "Le grand nettoyage est terminé !",
"cobblemon.battle.prepare.bounce": "%1$s se propulse dans les airs !",
"cobblemon.battle.prepare.dig": "%1$s se cache dans le sol !",
"cobblemon.battle.prepare.shelltrap": "%1$s déclenche le Carapiège !",
"cobblemon.battle.prepare.dive": "%1$s se cache sous l'eau !",
"cobblemon.battle.prepare.fly": "%1$s s'envole !",
"cobblemon.battle.prepare.freezeshock": "%1$s est baigné d'une lumière blafarde !",
@@ -925,10 +838,6 @@
"cobblemon.battle.prepare.skydrop": "%1$s emporte sa cible haut dans le ciel !",
"cobblemon.battle.prepare.solarbeam": "%1$s absorbe la lumière !",
"cobblemon.battle.swapboost.generic": "%1$s a changé les bonus de stats avec %2$s !",
"cobblemon.battle.swapboost.guardswap": "%1$s intervertit les changements de Défense et de Défense Spéciale avec ceux de sa cible !",
"cobblemon.battle.swapboost.powerswap": "%1$s intervertit les changements d’Attaque et d’Attaque Spéciale avec ceux de sa cible !",
"cobblemon.battle.swapboost.heartswap": "%1$s intervertit ses changements de stats avec ceux de sa cible !",
"cobblemon.battle.copyboost.generic": "%1$s copie les changements de stats de %2$s !",
"cobblemon.battle.singleturn.protect": "%1$s s'est protégé !",
"cobblemon.battle.singleturn.endure": "%1$s encaisse les coups !",
"cobblemon.battle.singleturn.craftyshield": "L'équipe de %1$s est protégée par la capacité Vigilance !",
@@ -958,11 +867,7 @@
"cobblemon.battle.damage.leechseed": "Vampigraine draine l'énergie de %1$s !",
"cobblemon.battle.damage.sandstorm": "La tempête de sable inflige des dégâts à %1$s !",
"cobblemon.battle.damage.hail": "La tempête de grêle inflige des dégâts à %1$s !",
"cobblemon.battle.damage.saltcure": "%1$s est blessé par la capacité Salaison !",
"cobblemon.battle.damage.nightmare": "%1$s est prisonnier d’un cauchemar !",
"cobblemon.battle.damage.magmastorm": "%1$s est blessé par la capacité Vortex Magma !",
"cobblemon.battle.damage.stealthrock": "Des pierres pointues transpercent %1$s !",
"cobblemon.battle.damage.highjumpkick": "%1$s s’écrase au sol !",
"cobblemon.battle.damage.spikes": "%1$s est blessé par les picots !",
"cobblemon.battle.damage.recoil": "%1$s est blessé par le contrecoup !",
"cobblemon.battle.damage.item": "%1$s est blessé par le %2$s !",
@@ -973,21 +878,8 @@
"cobblemon.battle.damage.whirlpool": "%1$s est blessé par la capacité Siphon !",
"cobblemon.battle.damage.clamp": "%1$s est blessé par la capacité Claquoir !",
"cobblemon.battle.damage.curse": "%1$s est touché par la malédiction !",
"cobblemon.battle.damage.firespin": "%1$s est blessé par la capacité Danse Flammes !",
"cobblemon.battle.damage.axekick": "%1$s s’écrase au sol !",
"cobblemon.battle.damage.bind": "%1$s est blessé par la capacité Étreinte !",
"cobblemon.battle.damage.baddreams": "%1$s a le sommeil agité !",
"cobblemon.battle.damage.mindblown": "%1$s sacrifie des PV pour renforcer sa capacité !",
"cobblemon.battle.damage.infestation": "%1$s est blessé par la capacité Harcèlement !",
"cobblemon.battle.damage.spikyshield": "%1$s s'est blessé en attaquant !",
"cobblemon.battle.damage.flameburst": "%1$s est arrosé d’une gerbe de flammes !",
"cobblemon.battle.end.bind": "%1$s est libéré de la capacité Étreinte !",
"cobblemon.battle.end.wrap": "%1$s est libéré de la capacité Ligotage !",
"cobblemon.battle.end.magnetrise": "Le magnétisme de %1$s se dissipe !",
"cobblemon.battle.end.doomdesire": "%1$s subit l'attaque Vœu Destructeur !",
"cobblemon.battle.end.leechseed": "%1$s est libéré de la capacité Vampigraine !",
"cobblemon.battle.end.powershift": "%1$s échange sa puissance offensive et sa puissance défensive !",
"cobblemon.battle.end.torment": "Les tourments de %1$s sont apaisés !",
"cobblemon.battle.end.disable": "La capacité de %1$s n'est plus sous entrave !",
"cobblemon.battle.end.protosynthesis": "L'effet du talent Paléosynthèse de %1$s s'est dissipé !",
"cobblemon.battle.end.taunt": "%1$s s'est remis de la Provoc !",
@@ -997,40 +889,11 @@
"cobblemon.battle.end.whirlpool": "%1$s est libéré de la capacité Siphon !",
"cobblemon.battle.end.clamp": "%1$s est libéré de la capacité Claquoir !",
"cobblemon.battle.end.dynamax": "%1$s revient à la normale !",
"cobblemon.battle.end.telekinesis": "%1$s est libéré de la capacité Lévikinésie !",
"cobblemon.battle.end.encore": "%1$s n’a plus à répéter la même capacité !",
"cobblemon.battle.end.attract": "%1$s n’est plus amoureux !",
"cobblemon.battle.end.futuresight": "%1$s subit l'attaque Prescience !",
"cobblemon.battle.end.embargo": "%1$s peut de nouveau utiliser des objets !",
"cobblemon.battle.end.substitute": "Le clone de %1$s disparaît...",
"cobblemon.battle.end.uproar": "%1$s se calme.",
"cobblemon.battle.end.powertrick": "%1$s échange son Attaque et sa Défense !",
"cobblemon.battle.end.healblock": "%1$s peut à nouveau guérir !",
"cobblemon.battle.end.skydrop": "%1$s est lâché en chute libre !",
"cobblemon.battle.block.uproar": "Mais le brouhaha tient %1$s éveillé !",
"cobblemon.battle.fail.substitute": "Mais il est trop faible pour créer un clone !",
"cobblemon.battle.fail.healblock": "Mais cela échoue sur %1$s !",
"cobblemon.battle.fail.darkvoid": "Mais %1$s en est incapable !",
"cobblemon.battle.fail.teatime": "Mais rien ne se passe !",
"cobblemon.battle.fail.slp": "%1$s dort déjà.",
"cobblemon.battle.fail.par": "%1$s est déjà paralysé.",
"cobblemon.battle.fail.tox": "%1$s est déjà empoisonné.",
"cobblemon.battle.fail.psn": "%1$s est déjà empoisonné.",
"cobblemon.battle.fail.brn": "%1$s est déjà brûlé.",
"cobblemon.battle.fail.frz": "%1$s est déjà gelé.",
"cobblemon.battle.fail.uproar": "Mais le brouhaha empêche %1$s de dormir !",
"cobblemon.battle.fail.skydrop": "%1$s est trop lourd pour être emporté !",
"cobblemon.battle.fail.heal": "Les PV de %1$s sont au maximum !",
"cobblemon.battle.fail.grassknot": "%1$s fait non de la tête. On dirait qu’il ne peut pas utiliser cette capacité...",
"cobblemon.battle.fail.unboost.single": "%2$s de %1$s ne baisse pas !",
"cobblemon.battle.fail.unboost": "Les stats de %1$s ne baissent pas !",
"cobblemon.battle.sethp.painsplit": "Les adversaires partagent leurs PV !",
"cobblemon.battle.ability.sturdy": "%1$s encaisse les coups !",
"cobblemon.battle.ability.unnerve": "%1$s rend l'adversaire tendu et ne peut plus manger de Baies !",
"cobblemon.battle.ability.anticipation": "%1$s est tout tremblant !",
"cobblemon.battle.ability.airlock": "Les effets de la météo se dissipent !",
"cobblemon.battle.ability.trace": "%1$s calque le talent %3$s de %2$s !",
"cobblemon.battle.ability.receiver": "Le Pokémon reçoit le talent %2$s de %1$s !",
"cobblemon.battle.ability.generic": "%2$s de %1$s activé !",
"cobblemon.battle.ability.magicbounce": "%1$s repousse la capacité %2$s ! Retour à l'envoyeur !",
"cobblemon.battle.errors.busy": "%1$s est occupé !",
@@ -1041,9 +904,7 @@
"cobblemon.battle.error.insufficient_pokemon": "%1$s a %2 Pokémon alors que %3 sont nécessaires pour le combat.",
"cobblemon.battle.error.insufficient_pokemon.personal": "Vous avez %1 Pokémon utilisable, mais vous avez besoin de %2 minimum.",
"cobblemon.battle.error.pokemon_is_trapped": "[Choix indisponible] Impossible de changer : Le Pokémon actif est piégé",
"cobblemon.battle.error.canceled": "Chaque chose en son temps !",
"cobblemon.battle.immune": "Mais %1$s est immunisé !",
"cobblemon.battle.invertboost": "Les changements de stats de %1$s sont inversés !",
"cobblemon.battle.missed": "Mais cela échoue !",
"cobblemon.battle.hit_count": "Touché %1$s fois !",
"cobblemon.battle.hit_count_singular": "Touché une fois !",
@@ -1062,29 +923,26 @@
"cobblemon.battle.enditem.incinerate": "L'objet %2$s de %1$s est détruit par le feu !",
"cobblemon.battle.enditem.airballoon": "Le Ballon de %1$s a éclaté !",
"cobblemon.battle.enditem.redcard": "%1$s a mis un Carton Rouge à %3$s !",
"cobblemon.battle.enditem.pluck": "%3$s vole et mange la %2$s de %1$s !",
"cobblemon.battle.enditem.berryjuice": "Le Jus de Baie de %1$s est activé !",
"cobblemon.battle.enditem.generic": "%1$s utilise l'objet %2$s !",
"cobblemon.battle.enditem.mentalherb": "%1$s annule les effets mentaux grâce à l'Herbe Mental !",
"cobblemon.battle.enditem.powerherb": "%1$s est déjà reposé grâce à l'Herbe Pouvoir !",
"cobblemon.battle.enditem.mirrorherb": "%1$s a copié les changements de stats grâce à sa Feuille Copieuse !",
"cobblemon.battle.enditem.whiteherb": "%1$s annule les changements négatifs grâce à l'Herbe Blanche !",
"cobblemon.battle.enditem.corrosivegas": "%3$s fait fondre l'objet %2$s de %1$s !",
"cobblemon.battle.enditem.stealeat": "%3$s vole et mange la %2$s de la cible !",
"cobblemon.battle.heal.zeffect": "%1$s utilise la Force Z pour se soigner !",
"cobblemon.battle.heal.wish": "Le Vœu de %1$s se réalise !",
"cobblemon.battle.heal.drain": "%1$s s'est fait drainer ses PV !",
"cobblemon.battle.heal.healingwish": "Le Vœu Soin est exaucé et profite à %1$s !",
"cobblemon.battle.heal.revivalblessing": "%1$s a repris connaissance et est prêt à se battre de nouveau !",
"cobblemon.battle.heal.aquaring": "Le voile d'eau restaure les PV de %1$s !",
"cobblemon.battle.heal.ingrain": "%1$s absorbe des nutriments avec ses racines !",
"cobblemon.battle.heal.lunardance": "%1$s est baigné par des rayons de lune !",
"cobblemon.battle.heal.ingrain": "%1$s a absorbé des nutriments avec ses racines !",
"cobblemon.battle.heal.grassyterrain": "%1$s récupère des PV !",
"cobblemon.battle.heal.leftovers": "Les %2$s de %1$s restaurent un peu ses PV !",
"cobblemon.battle.heal.item": "%1$s récupère des PV avec l'objet %2$s !",
"cobblemon.battle.heal.raindish": "%1$s récupère des PV grâce à Cuvette !",
"cobblemon.battle.heal.generic": "%1$s a restauré ses PV.",
"cobblemon.battle.heal.bagitempotion": "%1$s récupère des PV !",
"cobblemon.battle.heal.poisonheal": "%1$s regagne des PV grâce à Soin Poison !",
"cobblemon.battle.curestatus.naturalcure": "%1$s est guéri grâce à Médic Nature !",
"cobblemon.battle.bagitem.use": "%1$s utilise l'objet %2$s sur %3$s !",
"cobblemon.battle.bagitem.cannot": "Vous ne pouvez pas utiliser d'objets pour le moment.",
@@ -47,8 +47,6 @@
"item.cobblemon.yellow_apricorn": "Sárga Barack",
"item.cobblemon.vivichoke_seeds": "Vivichoke Seeds",
"item.cobblemon.vivichoke": "Vivichoke",
"item.cobblemon.apricorn_boat": "Apricorn Csónak",
"item.cobblemon.apricorn_chest_boat": "Ládás Apricorn Csónak",
"item.cobblemon.link_cable": "Link Kábel",
"item.cobblemon.dragon_scale": "Sárkány Pikkely",
"item.cobblemon.kings_rock": "Királyok Köve",
@@ -102,47 +100,47 @@
"item.cobblemon.iron": "Vas",
"item.cobblemon.protein": "Fehérje",
"item.cobblemon.zinc": "Cink",
"item.cobblemon.potion": "Bájital",
"item.cobblemon.super_potion": "Szuper Bájital",
"item.cobblemon.hyper_potion": "Hiper Bájital",
"item.cobblemon.max_potion": "Max Bájital",
"item.cobblemon.potion": "Potion",
"item.cobblemon.super_potion": "Super Potion",
"item.cobblemon.hyper_potion": "Hyper Potion",
"item.cobblemon.max_potion": "Max Potion",
"item.cobblemon.full_restore": "Full Restore",
"item.cobblemon.red_mint_leaf": "Vörös Menta Levél",
"item.cobblemon.red_mint_leaf.tooltip": "Befojásolhatja egy Pokémon Támadás statját",
"item.cobblemon.blue_mint_leaf": "Kék Menta Levél",
"item.cobblemon.blue_mint_leaf.tooltip": "Befojásolhatja egy Pokémon Védelem statját",
"item.cobblemon.cyan_mint_leaf": "Cián Menta Levél",
"item.cobblemon.cyan_mint_leaf.tooltip": "Befojásolhatja egy Pokémon speciális támadás statját",
"item.cobblemon.pink_mint_leaf": "Pink Menta Levél",
"item.cobblemon.pink_mint_leaf.tooltip": "Befojásolhatja egy Pokémon speciális védelem statját",
"item.cobblemon.green_mint_leaf": "Zöld Menta Levél",
"item.cobblemon.green_mint_leaf.tooltip": "Befojásolhatja egy Pokémon sebesség statját",
"item.cobblemon.white_mint_leaf": "Fehér Menta Levél",
"item.cobblemon.white_mint_leaf.tooltip": "Semlegessé teheti egy Pokémon természetét",
"item.cobblemon.lonely_mint": "Magányos Menta",
"item.cobblemon.adamant_mint": "Önfejű Menta",
"item.cobblemon.naughty_mint": "Rosszcsont Menta",
"item.cobblemon.brave_mint": "Bátor Menta",
"item.cobblemon.bold_mint": "Vakmerő Menta",
"item.cobblemon.impish_mint": "Rosszalkodó Menta",
"item.cobblemon.lax_mint": "Laza Menta",
"item.cobblemon.relaxed_mint": "Nyugodt Menta",
"item.cobblemon.modest_mint": "Szerény Menta",
"item.cobblemon.mild_mint": "Enyhe Menta",
"item.cobblemon.rash_mint": "Sietős Menta",
"item.cobblemon.quiet_mint": "Csendes Menta",
"item.cobblemon.calm_mint": "Csendes Menta",
"item.cobblemon.gentle_mint": "Kedves Menta",
"item.cobblemon.careful_mint": "Óvatos Menta",
"item.cobblemon.sassy_mint": "Pimasz Menta",
"item.cobblemon.timid_mint": "Félénk Menta",
"item.cobblemon.hasty_mint": "Elhamarkodott Menta",
"item.cobblemon.jolly_mint": "Vidám",
"item.cobblemon.naive_mint": "Naív Menta",
"item.cobblemon.serious_mint": "Komoly Menta",
"item.cobblemon.red_mint_leaf": "Red Mint Leaf",
"item.cobblemon.red_mint_leaf.tooltip": "Capable of influencing a Pokémon's attack stat",
"item.cobblemon.blue_mint_leaf": "Blue Mint Leaf",
"item.cobblemon.blue_mint_leaf.tooltip": "Capable of influencing a Pokémon's defense stat",
"item.cobblemon.cyan_mint_leaf": "Cyan Mint Leaf",
"item.cobblemon.cyan_mint_leaf.tooltip": "Capable of influencing a Pokémon's special attack stat",
"item.cobblemon.pink_mint_leaf": "Pink Mint Leaf",
"item.cobblemon.pink_mint_leaf.tooltip": "Capable of influencing a Pokémon's special defense stat",
"item.cobblemon.green_mint_leaf": "Green Mint Leaf",
"item.cobblemon.green_mint_leaf.tooltip": "Capable of influencing a Pokémon's speed stat",
"item.cobblemon.white_mint_leaf": "White Mint Leaf",
"item.cobblemon.white_mint_leaf.tooltip": "Capable of neutralizing a Pokémon's nature",
"item.cobblemon.lonely_mint": "Lonely Mint",
"item.cobblemon.adamant_mint": "Adamant Mint",
"item.cobblemon.naughty_mint": "Naughty Mint",
"item.cobblemon.brave_mint": "Brave Mint",
"item.cobblemon.bold_mint": "Bold Mint",
"item.cobblemon.impish_mint": "Impish Mint",
"item.cobblemon.lax_mint": "Lax Mint",
"item.cobblemon.relaxed_mint": "Relaxed Mint",
"item.cobblemon.modest_mint": "Modest Mint",
"item.cobblemon.mild_mint": "Mild Mint",
"item.cobblemon.rash_mint": "Rash Mint",
"item.cobblemon.quiet_mint": "Quiet Mint",
"item.cobblemon.calm_mint": "Calm Mint",
"item.cobblemon.gentle_mint": "Gentle Mint",
"item.cobblemon.careful_mint": "Careful Mint",
"item.cobblemon.sassy_mint": "Sassy Mint",
"item.cobblemon.timid_mint": "Timid Mint",
"item.cobblemon.hasty_mint": "Hasty Mint",
"item.cobblemon.jolly_mint": "Jolly Mint",
"item.cobblemon.naive_mint": "Naive Mint",
"item.cobblemon.serious_mint": "Serious Mint",
"item.cobblemon.assault_vest": "Rohammellény",
"item.cobblemon.auspicious_armor": "Kedvező Páncél",
"item.cobblemon.malicious_armor": "Rosszindulatú Páncél",
"item.cobblemon.malicious_armor": "Malicious Armor",
"item.cobblemon.black_belt": "Fekete Öv",
"item.cobblemon.black_glasses": "Fekete Szemüveg",
"item.cobblemon.black_sludge": "Fekete Iszap",
@@ -150,10 +148,8 @@
"item.cobblemon.choice_band": "Választó Kendő",
"item.cobblemon.choice_scarf": "Választó Sál",
"item.cobblemon.choice_specs": "Választó Szemüveg",
"item.cobblemon.cleanse_tag": "Tisztító Cédula",
"item.cobblemon.dragon_fang": "Sárkányagyar",
"item.cobblemon.exp_share": "Exp. Megosztó",
"item.cobblemon.fairy_feather": "Tündér Toll",
"item.cobblemon.focus_band": "Fókusz Kendő",
"item.cobblemon.hard_stone": "Kemény Kő",
"item.cobblemon.heavy_duty_boots": "Erősített Csizma",
@@ -178,26 +174,21 @@
"item.cobblemon.spell_tag": "Varázs Talizmán",
"item.cobblemon.twisted_spoon": "Csavart Kanál",
"item.cobblemon.wise_glasses": "Bölcs Szemüveg",
"item.cobblemon.mental_herb": "Szellemi Növény",
"item.cobblemon.mirror_herb": "Tükör Növény",
"item.cobblemon.power_herb": "Erő Növény",
"item.cobblemon.white_herb": "Fehér Növény",
"item.cobblemon.bright_powder": "Fényes Por",
"item.cobblemon.metal_powder": "Acél Por",
"item.cobblemon.quick_powder": "Gyors Por",
"item.cobblemon.destiny_knot": "Sorscsomó",
"item.cobblemon.everstone": "Örök Kő",
"item.cobblemon.power_anklet": "Erő Bokalánc",
"item.cobblemon.power_band": "Erő Szalag",
"item.cobblemon.power_belt": "Erő Öv",
"item.cobblemon.power_bracer": "Erő Hám",
"item.cobblemon.power_lens": "Erő Lencse",
"item.cobblemon.power_weight": "Erő Súly",
"item.cobblemon.flame_orb": "Láng Golyó",
"item.cobblemon.light_orb": "Fény Golyó",
"item.cobblemon.smoke_ball": "Füst Golyó",
"item.cobblemon.toxic_orb": "Mérgező Golyó",
"item.cobblemon.life_orb": "Life Orb",
"item.cobblemon.mental_herb": "Mental Herb",
"item.cobblemon.mirror_herb": "Mirror Herb",
"item.cobblemon.power_herb": "Power Herb",
"item.cobblemon.white_herb": "White Herb",
"item.cobblemon.bright_powder": "Bright Powder",
"item.cobblemon.metal_powder": "Metal Powder",
"item.cobblemon.quick_powder": "Quick Powder",
"item.cobblemon.destiny_knot": "Destiny Knot",
"item.cobblemon.everstone": "Everstone",
"item.cobblemon.power_anklet": "Power Anklet",
"item.cobblemon.power_band": "Power Band",
"item.cobblemon.power_belt": "Power Belt",
"item.cobblemon.power_bracer": "Power Bracer",
"item.cobblemon.power_lens": "Power Lens",
"item.cobblemon.power_weight": "Power Weight",
"item.cobblemon.poke_ball.tooltip": "1× fogási arány",
"item.cobblemon.slate_ball.tooltip": "1× fogási arány",
"item.cobblemon.azure_ball.tooltip": "1× fogási arány",
@@ -246,7 +237,7 @@
"item.cobblemon.leek_and_potato_stew": "Leek and Potato Stew",
"item.cobblemon.braised_vivichoke": "Braised Vivichoke",
"item.cobblemon.vivichoke_dip": "Vivichoke Dip",
"item.cobblemon.berry_juice": "Bogyólé",
"item.cobblemon.berry_juice": "Berry Juice",
"item.cobblemon.remedy": "Remedy",
"item.cobblemon.fine_remedy": "Fine Remedy",
"item.cobblemon.superb_remedy": "Superb Remedy",
@@ -288,7 +279,6 @@
"block.cobblemon.apricorn_leaves": "Barackfa Levelek",
"block.cobblemon.apricorn_fence": "Barackfa Kerítés",
"block.cobblemon.apricorn_sign": "Barackfa Tábla",
"block.cobblemon.apricorn_hanging_sign": "Apricorn Hanging Sign",
"block.cobblemon.apricorn_stairs": "Barackfa Lépcső",
"block.cobblemon.apricorn_pressure_plate": "Barackfa Nyomólap",
"block.cobblemon.apricorn_button": "Barackfa Gomb",
@@ -456,7 +446,7 @@
"item.cobblemon.chople_berry": "Chople Berry",
"item.cobblemon.chople_berry.tooltip": "Halves damage taken from a supereffective Fighting-type attack",
"item.cobblemon.coba_berry": "Coba Berry",
"item.cobblemon.coba_berry.tooltip": "Halves damage taken from a supereffective Flying-type attack",
"item.cobblemon.coba_berry.tooltip": "Halves damage taken from a supereffective Flying-type attac",
"item.cobblemon.colbur_berry": "Colbur Berry",
"item.cobblemon.colbur_berry.tooltip": "Halves damage taken from a supereffective Dark-type attack",
"item.cobblemon.cornn_berry": "Cornn Berry",
@@ -655,7 +645,7 @@
"advancements.cobblemon.obtain_all_berries.description": "Obtain one of every Berry in Cobblemon",
"advancements.cobblemon.use_pasture": "Free Roam: Enabled",
"advancements.cobblemon.use_pasture.description": "Craft a Pasture Block and allow your friends to wander",
"advancements.cobblemon.catch_all_vivillon": "Vivillonaire",
"advancements.cobblemon.catch_all_vivillon": "Patterned Wings",
"advancements.cobblemon.catch_all_vivillon.description": "Obtain all patterns of Vivillon",
"advancements.cobblemon.evolve_veevees": "Valued Veevees",
"advancements.cobblemon.evolve_veevees.description": "Evolve Eevee into 8 different forms",
@@ -712,20 +702,17 @@
"cobblemon.battle.recharge": "%1$s-nak/nek töltenie kell.",
"cobblemon.capture.broke_free": "A(z) %1$s kiszabadult!",
"cobblemon.capture.not_your_turn": "Nem te következel.",
"cobblemon.capture.attempted_capture": "%1$s threw their %2$s at %3$s!",
"cobblemon.capture.attempted_capture": "%1$s dobott egy %2$s-t %3$s-ra/re!",
"cobblemon.capture.succeeded": "Megvagy! Elkaptad %1$s-t.",
"cobblemon.capture.not_wild": "Az a(z) %1$s nem egy vad Pokémon.",
"cobblemon.capture.in_battle": "Az a(z) %1$s harban van úgyhogy nem tudod elkapni.",
"cobblemon.capture.busy": "A(z) %1$s el van foglalva!",
"cobblemon.capture.you_in_battle": "Harcban vagy.",
"cobblemon.capture.not_single": "Csak 1v1 harcban tudsz elkapni vad Pokémonokat.",
"cobblemon.capture.cannot_be_caught": "This Pokémon cannot be captured.",
"cobblemon.you_in_battle": "Harc közben ezt nem teheted!",
"cobblemon.battle.turn": "Most épp kör %1$s van",
"cobblemon.battle.side_subject.ally": "your",
"cobblemon.battle.side_subject.opponent": "the opposing",
"cobblemon.battle.transform": "%1$s transformed into %2$s",
"cobblemon.battle.endability": "%1$s's Ability was suppressed!",
"cobblemon.battle.weather.raindance.start": "It started to rain!",
"cobblemon.battle.weather.raindance.upkeep": "Rain continues to fall.",
"cobblemon.battle.weather.raindance.end": "The rain stopped.",
@@ -738,24 +725,7 @@
"cobblemon.battle.weather.hail.start": "It started to hail!",
"cobblemon.battle.weather.hail.upkeep": "The hail is crashing down.",
"cobblemon.battle.weather.hail.end": "The hail stopped.",
"cobblemon.battle.weather.snow.start": "It started to snow!",
"cobblemon.battle.weather.snow.upkeep": "The snow is falling down.",
"cobblemon.battle.weather.snow.end": "The snow stopped.",
"cobblemon.battle.start.bide": "%1$s begins storing energy!",
"cobblemon.battle.start.magnetrise": "%1$s levitated with electromagnetism!",
"cobblemon.battle.start.disable": "%1$s's %2$s was disabled!",
"cobblemon.battle.start.nightmare": "%1$s began having a nightmare!",
"cobblemon.battle.start.imprison": "%1$s sealed any moves its target shares with it!",
"cobblemon.battle.start.snatch": "%1$s is waiting for a target to make a move!",
"cobblemon.battle.start.noretreat": "%1$s can no longer escape because it used No Retreat!",
"cobblemon.battle.start.saltcure": "%1$s is being salt cured!",
"cobblemon.battle.start.shedtail": "%1$s shed its tail to create a decoy!",
"cobblemon.battle.start.smackdown": "%1$s fell straight down!",
"cobblemon.battle.start.torment": "%1$s was subjected to torment!",
"cobblemon.battle.start.foresight": "%1$s was identified!",
"cobblemon.battle.start.telekinesis": "%1$s was hurled into the air!",
"cobblemon.battle.start.laserfocus": "%1$s concentrated intensely!",
"cobblemon.battle.start.lockon": "%2$s took aim at %1$s!",
"cobblemon.battle.start.yawn": "%1$s grew drowsy!",
"cobblemon.battle.start.perish": "%1$s's perish count fell to %2$s.",
"cobblemon.battle.start.leechseed": "%1$s was seeded!",
@@ -770,24 +740,6 @@
"cobblemon.battle.start.miracleeye": "%1$s was identified!",
"cobblemon.battle.start.dynamax": "%1$s Dynamaxed!",
"cobblemon.battle.start.gmax": "%1$s Gigantamaxed!",
"cobblemon.battle.start.encore": "%1$s must do an encore!",
"cobblemon.battle.start.futuresight": "%1$s foresaw an attack!",
"cobblemon.battle.start.ingrain": "%1$s planted its roots!",
"cobblemon.battle.start.healblock": "%1$s was prevented from healing!",
"cobblemon.battle.start.mimic": "%1$s learned %2$s!",
"cobblemon.battle.start.octolock": "%1$s can no longer escape because of Octolock!",
"cobblemon.battle.start.burnup": "%1$s burned itself out!",
"cobblemon.battle.start.typechange": "%1$s transformed into the %2$s type!",
"cobblemon.battle.start.doomdesire": "%1$s chose Doom Desire as its destiny!",
"cobblemon.battle.start.doubleshock": "%1$s used up all of its electricity!",
"cobblemon.battle.start.stockpile": "%1$s stockpiled %2$s!",
"cobblemon.battle.start.powertrick": "%1$s switched its Attack and Defense!",
"cobblemon.battle.start.powershift": "%1$s swapped its offensive stats with its defensive stats!",
"cobblemon.battle.start.substitute": "%1$s put in a substitute!",
"cobblemon.battle.start.embargo": "%1$s can't use items anymore!",
"cobblemon.battle.start.typeadd": "%2$s type was added to %1$s!",
"cobblemon.battle.start.reflecttype": "%1$s's type became the same as %2$s's type!",
"cobblemon.battle.start.tarshot": "%1$s became weaker to fire!",
"cobblemon.battle.fieldstart.electricterrain": "An electric current ran across the battlefield!",
"cobblemon.battle.fieldstart.grassyterrain": "Grass grew to cover the battlefield!",
"cobblemon.battle.fieldstart.gravity": "Gravity intensified!",
@@ -809,9 +761,6 @@
"cobblemon.battle.fieldend.watersport": "The effects of Water Sport have faded.",
"cobblemon.battle.fieldend.wonderroom": "Wonder Room wore off, and Defense and Sp. Def stats returned to normal!",
"cobblemon.battle.fieldactivate.perishsong": "All Pokémon that heard the song will faint in three turns!",
"cobblemon.battle.fieldactivate.iondeluge": "A deluge of ions showers the battlefield!",
"cobblemon.battle.fieldactivate.fairylock": "No one will be able to run away during the next turn!",
"cobblemon.battle.fieldactivate.teatime": "It's teatime! Everyone dug in to their Berries!",
"cobblemon.battle.sidestart.stealthrock": "Polished stones float in the air around %1$s team!",
"cobblemon.battle.sidestart.spikes": "Spikes were scattered on the ground all around %1$s team!",
"cobblemon.battle.sidestart.toxicspikes": "Poison spikes were scattered on the ground all around %1$s team!",
@@ -820,9 +769,7 @@
"cobblemon.battle.sidestart.lightscreen": "Light Screen made %1$s team stronger against special moves!",
"cobblemon.battle.sidestart.auroraveil": "Aurora Veil made %1$s team stronger against physical and special moves!",
"cobblemon.battle.sidestart.tailwind": "The Tailwind blew from behind %1$s team!",
"cobblemon.battle.sidestart.safeguard": "%1$s team cloaked itself in a mystical veil!",
"cobblemon.battle.sidestart.luckychant": "Lucky Chant shielded %1$s team from critical hits!",
"cobblemon.battle.sidestart.mist": "%1$s team became shrouded in mist!",
"cobblemon.battle.sidestart.safeguard": "%1$s's team cloaked itself in a mystical veil!",
"cobblemon.battle.sideend.stealthrock": "The pointed stones disappeared from around %1$s team!",
"cobblemon.battle.sideend.spikes": "The spikes disappeared from the ground around %1$s team!",
"cobblemon.battle.sideend.toxicspikes": "The poison spikes disappeared from the ground around %1$s team!",
@@ -831,9 +778,7 @@
"cobblemon.battle.sideend.lightscreen": "%1$s team's Light Screen wore off!",
"cobblemon.battle.sideend.auroraveil": "%1$s team's Aurora Veil wore off!",
"cobblemon.battle.sideend.tailwind": "%1$s team's Tailwind petered out!",
"cobblemon.battle.sideend.safeguard": "%1$s team is no longer protected by Safeguard!",
"cobblemon.battle.sideend.luckychant": "%1$s team's Lucky Chant wore off!",
"cobblemon.battle.sideend.mist": "%1$s team is no longer protected by mist!",
"cobblemon.battle.sideend.safeguard": "%1$s's team is no longer protected by Safeguard!",
"cobblemon.battle.cant.generic": "%1$s can't use %2$s!",
"cobblemon.battle.cant.truant": "%1$s is loafing around!",
"cobblemon.battle.cant.flinch": "%1$s flinched and couldn't move!",
@@ -848,11 +793,6 @@
"cobblemon.battle.cant.taunt": "%1$s can't use %2$s after the taunt!",
"cobblemon.battle.cant.throatchop": "The effects of Throat Chop prevent %1$s from using certain moves!",
"cobblemon.battle.activate.confusion": "%1$s is confused!",
"cobblemon.battle.activate.happyhour": "Everyone is caught up in the happy atmosphere!",
"cobblemon.battle.activate.mindreader": "%2$s read the mind of %1$s!",
"cobblemon.battle.activate.magmastorm": "%1$s became trapped by swirling magma!",
"cobblemon.battle.activate.powersplit": "%1$s shared its power with the target!",
"cobblemon.battle.activate.pursuit": "(%1$s is being withdrawn...)",
"cobblemon.battle.activate.gravity": "%1$s couldn't stay airborne because of gravity!",
"cobblemon.battle.activate.mistyterrain": "%1$s surrounds itself with a protective mist!",
"cobblemon.battle.activate.psychicterrain": "%1$s surrounds itself with psychic terrain!",
@@ -861,10 +801,7 @@
"cobblemon.battle.activate.trapped": "%1$s can no longer escape!",
"cobblemon.battle.activate.bind": "%1$s was squeezed by %2$s!",
"cobblemon.battle.activate.wrap": "%1$s was wrapped by %2$s!",
"cobblemon.battle.activate.snatch": "%1$s snatched %2$s's move!",
"cobblemon.battle.activate.sandtomb": "%1$s became trapped by the quicksand!",
"cobblemon.battle.activate.struggle": "%1$s has no moves left!",
"cobblemon.battle.activate.stickyweb": "%1$s was caught in a sticky web!",
"cobblemon.battle.activate.courtchange": "%1$s swapped the battle effects affecting each side of the field!",
"cobblemon.battle.activate.guardsplit": "%1$s shared its guard with the target!",
"cobblemon.battle.activate.spite": "It reduced the PP of %1$s's %2$s by %3$s!",
@@ -881,37 +818,13 @@
"cobblemon.battle.activate.trick": "%1$s switched items with its target!",
"cobblemon.battle.activate.quickclaw": "%1$s can act faster than normal, thanks to its Quick Claw!",
"cobblemon.battle.activate.focusband": "%1$s hung on using its %2$s!",
"cobblemon.battle.activate.forewarn": "%2$s's %3$s was revealed!",
"cobblemon.battle.activate.forewarn": "%1$s's %2$s was revealed!",
"cobblemon.battle.activate.disguise": "It's disguise served it as a decoy!",
"cobblemon.battle.activate.liquidooze": "%1$s sucked up the liquid ooze!",
"cobblemon.battle.activate.whirlpool": "%1$s became trapped in the vortex!",
"cobblemon.battle.activate.clamp": "%2$s clamped down on %1$s!",
"cobblemon.battle.activate.afteryou": "%1$s took the kind offer!",
"cobblemon.battle.activate.beatup": "%1$s's attack!",
"cobblemon.battle.activate.celebrate": "Congratulations, %1$s!",
"cobblemon.battle.activate.substitute": "The substitute took damage for %1$s!",
"cobblemon.battle.activate.infestation": "%1$s has become infested!",
"cobblemon.battle.activate.phantomforce": "It broke through %1$s's protection!",
"cobblemon.battle.activate.matblock": "%3$s was blocked by the kicked-up mat!",
"cobblemon.battle.activate.electricterrain": "%1$s surrounds itself with electrified terrain!",
"cobblemon.battle.activate.ingrain": "%1$s anchored itself with its roots!",
"cobblemon.battle.activate.mist": "%1$s is protected by the mist!",
"cobblemon.battle.activate.poltergeist": "%1$s is about to be attacked by its %3$s!",
"cobblemon.battle.activate.powder": "When the flame touched the powder on the Pokémon, it exploded!",
"cobblemon.battle.activate.quash": "%1$s's move was postponed!",
"cobblemon.battle.activate.quickguard": "Quick Guard protected %1$s",
"cobblemon.battle.activate.safeguard": "%1$s is protected by Safeguard!",
"cobblemon.battle.activate.sketch": "%1$s sketched %3$s!",
"cobblemon.battle.activate.grudge": "%1$s's %3$s lost all of its PP due to the grudge!",
"cobblemon.battle.activate.speedswap": "%1$s switched Speed with its target!",
"cobblemon.battle.activate.switcheroo": "%1$s switched items with its target!",
"cobblemon.battle.activate.skillswap": "%1$s swapped Abilities with its target!",
"cobblemon.battle.activate.wideguard": "Wide Guard protected %1$s!",
"cobblemon.battle.activate.craftyshield": "Crafty Shield protected %1$s!",
"cobblemon.battle.activate.tidyup": "Tidying up complete!",
"cobblemon.battle.prepare.bounce": "%1$s sprang up!",
"cobblemon.battle.prepare.dig": "%1$s burrowed its way under the ground!",
"cobblemon.battle.prepare.shelltrap": "%1$s set a shell trap!",
"cobblemon.battle.prepare.dive": "%1$s hid underwater!",
"cobblemon.battle.prepare.fly": "%1$s flew up high!",
"cobblemon.battle.prepare.freezeshock": "%1$s became cloaked in a freezing light!",
@@ -925,10 +838,6 @@
"cobblemon.battle.prepare.skydrop": "%1$s took its target into the sky!",
"cobblemon.battle.prepare.solarbeam": "%1$s absorbed light!",
"cobblemon.battle.swapboost.generic": "%1$s swapped stat boosts with %2$s!",
"cobblemon.battle.swapboost.guardswap": "%1$s switched all changes to its Defense and Sp. Def with its target!",
"cobblemon.battle.swapboost.powerswap": "%1$s switched all changes to its Attack and Sp. Atk with its target!",
"cobblemon.battle.swapboost.heartswap": "%1$s switched stat changes with its target!",
"cobblemon.battle.copyboost.generic": "%1$s copied %2$s's stat changes!",
"cobblemon.battle.singleturn.protect": "%1$s protected itself!",
"cobblemon.battle.singleturn.endure": "%1$s braced itself!",
"cobblemon.battle.singleturn.craftyshield": "Crafty Shield protected %1$s's team!",
@@ -958,11 +867,7 @@
"cobblemon.battle.damage.leechseed": "%1$s's health is sapped by Leech Seed!",
"cobblemon.battle.damage.sandstorm": "%1$s was buffeted by the sandstorm.",
"cobblemon.battle.damage.hail": "%1$s was buffeted by hail.",
"cobblemon.battle.damage.saltcure": "%1$s is hurt by Salt Cure!",
"cobblemon.battle.damage.nightmare": "%1$s is locked in a nightmare!",
"cobblemon.battle.damage.magmastorm": "%1$s took damage from the magma!",
"cobblemon.battle.damage.stealthrock": "Pointed stones dug into %1$s!",
"cobblemon.battle.damage.highjumpkick": "%1$s crashed into the ground!",
"cobblemon.battle.damage.spikes": "%1$s was hurt by the spikes!",
"cobblemon.battle.damage.recoil": "%1$s was damaged by the recoil!",
"cobblemon.battle.damage.item": "%1$s was hurt by its %2$s!",
@@ -973,21 +878,8 @@
"cobblemon.battle.damage.whirlpool": "%1$s was hurt by Whirlpool!",
"cobblemon.battle.damage.clamp": "%1$s was hurt by Clamp!",
"cobblemon.battle.damage.curse": "%1$s was afflicted by the curse!",
"cobblemon.battle.damage.firespin": "%1$s is hurt by Fire Spin!",
"cobblemon.battle.damage.axekick": "%1$s crashed into the ground!",
"cobblemon.battle.damage.bind": "%1$s took damage from Bind!",
"cobblemon.battle.damage.baddreams": "%1$s took damage from Bad Dreams!",
"cobblemon.battle.damage.mindblown": "%1$s cut its own HP to power up its move!",
"cobblemon.battle.damage.infestation": "%1$s took damage from the infestation!",
"cobblemon.battle.damage.spikyshield": "%1$s was damaged from contact!",
"cobblemon.battle.damage.flameburst": "The bursting flame hit %1$s!",
"cobblemon.battle.end.bind": "%1$s is no longer being squeezed!",
"cobblemon.battle.end.wrap": "%1$s was freed from wrap!",
"cobblemon.battle.end.magnetrise": "%1$s's electromagnetism wore off!",
"cobblemon.battle.end.doomdesire": "%1$s took the Doom Desire attack!",
"cobblemon.battle.end.leechseed": "%1$s was freed from Leech Seed!",
"cobblemon.battle.end.powershift": "%1$s swapped its offensive stats with its defensive stats!",
"cobblemon.battle.end.torment": "%1$s is no longer tormented!",
"cobblemon.battle.end.disable": "%1$s's move is no longer disabled!",
"cobblemon.battle.end.protosynthesis": "The effects of %1$s's Protosynthesis wore off!",
"cobblemon.battle.end.taunt": "%1$s shook off the taunt!",
@@ -997,40 +889,11 @@
"cobblemon.battle.end.whirlpool": "%1$s was freed from the vortex!",
"cobblemon.battle.end.clamp": "%1$s was freed from Clamp!",
"cobblemon.battle.end.dynamax": "%1$s returned to normal!",
"cobblemon.battle.end.telekinesis": "%1$s was freed from the telekinesis!",
"cobblemon.battle.end.encore": "%1$s's Encore ended!",
"cobblemon.battle.end.attract": "%1$s got over its infatuation!",
"cobblemon.battle.end.futuresight": "%1$s took the Future Sight attack!",
"cobblemon.battle.end.embargo": "%1$s's can use items again!",
"cobblemon.battle.end.substitute": "%1$s's substitute faded!",
"cobblemon.battle.end.uproar": "%1$s calmed down.",
"cobblemon.battle.end.powertrick": "%1$s switched its Attack and Defense!",
"cobblemon.battle.end.healblock": "%1$s's Heal Block wore off!",
"cobblemon.battle.end.skydrop": "%1$s was freed from the Sky Drop!",
"cobblemon.battle.block.uproar": "But the uproar kept %1$s awake!",
"cobblemon.battle.fail.substitute": "But it could not create a substitute!",
"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 %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 stats did not get lowered!",
"cobblemon.battle.sethp.painsplit": "The battlers shared their pain!",
"cobblemon.battle.ability.sturdy": "%1$s endured the hit!",
"cobblemon.battle.ability.unnerve": "%1$s made the opponent too nervous to eat berries!",
"cobblemon.battle.ability.anticipation": "%1$s shuddered in anticipation!",
"cobblemon.battle.ability.airlock": "The effects of the weather disappeared.",
"cobblemon.battle.ability.trace": "%1$s traced the opposing %2$s's %3$s!",
"cobblemon.battle.ability.receiver": "%1$s's %2$s was taken over!",
"cobblemon.battle.ability.generic": "%1$s's %2$s activated!",
"cobblemon.battle.ability.magicbounce": "%1$s bounced the %2$s back!",
"cobblemon.battle.errors.busy": "%1$s is busy!",
@@ -1041,9 +904,7 @@
"cobblemon.battle.error.insufficient_pokemon": "%1$s has %2 Pokémon when %3 are required.",
"cobblemon.battle.error.insufficient_pokemon.personal": "You have %1 usable Pokémon but you need %2.",
"cobblemon.battle.error.pokemon_is_trapped": "[Unavailable choice] Can't switch: The active Pokémon is trapped",
"cobblemon.battle.error.canceled": "There's a time and place for everything, but not now!",
"cobblemon.battle.immune": "But %1$s is immune!",
"cobblemon.battle.invertboost": "%1$s's stat changes were inverted!",
"cobblemon.battle.missed": "But it missed.",
"cobblemon.battle.hit_count": "Hit %1$s times!",
"cobblemon.battle.hit_count_singular": "Hit 1 time!",
@@ -1062,14 +923,13 @@
"cobblemon.battle.enditem.incinerate": "%1$s's %2$s was burned up!",
"cobblemon.battle.enditem.airballoon": "%1$s's Air Balloon popped!",
"cobblemon.battle.enditem.redcard": "%1$s held up its Red Card against %3$s!",
"cobblemon.battle.enditem.pluck": "%3$s stole and ate %1$s's %2$s!",
"cobblemon.battle.enditem.berryjuice": "%1$s's Berry Juice activated!",
"cobblemon.battle.enditem.generic": "%1$s used its %2$s!",
"cobblemon.battle.enditem.mentalherb": "%1$s shook off mental effects due to its Mental Herb!",
"cobblemon.battle.enditem.powerherb": "%1$s became fully charged due to its Power Herb!",
"cobblemon.battle.enditem.mirrorherb": "%1$s copied stat changes with its Mirror Herb!",
"cobblemon.battle.enditem.whiteherb": "%1$s returned its status to normal using its White Herb!",
"cobblemon.battle.enditem.corrosivegas": "%3$s corroded %1$s's %2$s!",
"cobblemon.battle.enditem.stealeat": "%3$s stole and ate its target's %2$s!",
"cobblemon.battle.heal.zeffect": "%1$s's HP was restored by the Z-Power!",
"cobblemon.battle.heal.wish": "%1$s's wish came true!",
"cobblemon.battle.heal.drain": "%1$s had its HP drained!",
@@ -1077,16 +937,14 @@
"cobblemon.battle.heal.revivalblessing": "%1$s was revived and is ready to fight again!",
"cobblemon.battle.heal.aquaring": "A veil of water restored %1$s's HP!",
"cobblemon.battle.heal.ingrain": "%1$s absorbed nutrients with its roots!",
"cobblemon.battle.heal.lunardance": "%1$s became cloaked in mystical moonlight!",
"cobblemon.battle.heal.grassyterrain": "%1$s's HP was restored.",
"cobblemon.battle.heal.leftovers": "%1$s restored a little HP using its %2$s!",
"cobblemon.battle.heal.item": "%1$s restored HP using its %2$s!",
"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!",
"cobblemon.battle.bagitem.use": "%1$s used their %2$s on %3$s!",
"cobblemon.battle.bagitem.use": "%1$s used a %2$s on %3$s!",
"cobblemon.battle.bagitem.cannot": "You cannot use items right now.",
"cobblemon.battle.bagitem.invalid": "This item would not work.",
"cobblemon.battle.zpower": "%1$s surrounded itself with its Z-Power!",
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More