Compare commits

...
Author SHA1 Message Date
CeeJay 874d1d9329 Battle ends if teleport succeeds. Don't broadcast messages for ended battles 2025-09-25 00:18:59 -04:00
CeeJay d29e688064 rollback InstructionSet.execute() changes 2025-09-25 00:18:03 -04:00
CeeJay b6802069d8 Allow battle to continue if Teleport didn't succeed 2025-09-24 18:50:36 -04:00
CeeJay a4b8aafa27 Merge branch 'main' into wild-teleporting 2025-09-23 01:10:12 -04:00
Polymeta b00f1d9352 fix typo in pokemon interactions
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2025-09-22 10:53:31 +01:00
Polymeta a588cfadf8 Merge branch 'riding-scrape' into 'main'
Riding scrape

See merge request cable-mc/cobblemon!1869
2025-09-22 09:29:38 +00:00
Polymeta 2eb4062f67 [skip-ci] re-add client config for consistency
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2025-09-22 10:23:14 +01:00
Polymeta 43321d8872 licenses
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2025-09-22 10:07:19 +01:00
Hiroku a5ea584b75 Merge branch 'held-item-datapack' into 'main'
Implemented user-driven held item effects

See merge request cable-mc/cobblemon!1811
2025-09-22 08:10:13 +00:00
CraterandHiroku 6a9edc2e67 Implemented user-driven held item effects 2025-09-22 08:10:13 +00:00
Test 12377deff7 Merge branch 'dynlight-refactor' into 'main'
Number pushing and Dynlight betterments

See merge request cable-mc/cobblemon!1864
2025-09-22 07:47:42 +00:00
Paul 737ddd973b Tiny cleanup stuff dw about it [skip-ci] 2025-09-22 15:16:25 +10:00
Test d749b04261 fix cyclizar mount idle 2025-09-22 05:14:50 +00:00
Landon Wills a62e5a6571 Revert Golurk changes 2025-09-21 18:54:27 -04:00
Landon Wills 0ec337ee6c Scrape riding updates 2025-09-21 18:20:32 -04:00
Carmendar 76df0a429d changelog 2025-09-21 16:58:50 -05:00
Carmendar 08ea9378de Dewgong ready to scrape. 2025-09-21 16:57:07 -05:00
Carmendar c2bd21ab96 Merge branch 'main' into implement_pokemon 2025-09-21 11:42:32 -05:00
Paul 5db8ccfad4 Fixed various things about aprijuice ride boosts 2025-09-21 22:39:55 +10:00
Polymeta aa206d386a Merge branch 'stop-the-disco-spin' into 'main'
Fixed Pokémon spinning a bunch when re-calculating a path to a moving target, closes #1703

Closes #1703

See merge request cable-mc/cobblemon!1868
2025-09-21 10:11:11 +00:00
Paul a235af6c01 Fixed fliers taking fall damage upon landing without a passenger, fixed rarely flying pokemon joining a herd and launching into space 2025-09-21 19:24:23 +10:00
Carmendar a666a74a32 Slaking jump seat fix. 2025-09-21 03:22:51 -05:00
Carmendar c285120ff4 Merge branch 'main' into implement_pokemon 2025-09-21 03:17:33 -05:00
Paul dbd2890120 oop 2025-09-21 18:09:17 +10:00
Carmendar a5db46cdc5 Rhyhorn line ready for scrape & ride overlays for Slaking. 2025-09-21 01:17:58 -05:00
Carmendar 765cf9b96a Send in the bulls. (Tauros is ready to scrape.) 2025-09-21 01:12:38 -05:00
Paul efe7952869 Fixed Pokémon spinning a bunch when re-calculating a path to a moving target, closes #1703 2025-09-21 14:29:30 +10:00
Carmendar 9e434de285 Implemented spicy chicken legs animations. 2025-09-20 22:11:22 -05:00
Carmendar 712fe2c250 Merge branch 'main' into implement_pokemon 2025-09-20 22:09:16 -05:00
Hiroku 5db5a2ed35 Merge branch 'root-bone-animations-in-riding' into 'main'
Root bone animations in riding

See merge request cable-mc/cobblemon!1866
2025-09-21 02:15:02 +00:00
Paul 49c96e6fc8 Merge remote-tracking branch 'origin/main' 2025-09-21 10:46:21 +10:00
Paul d56c9a3f5a put da aprijuice recipes back 2025-09-21 10:42:53 +10:00
Carmendar a117303147 Merge branch 'main' into implement_pokemon 2025-09-20 17:50:10 -05:00
Landon dbf248a508 Merge branch 'riding-behaviour-tweaks-03' into 'main'
ride tweaks extended cut

See merge request cable-mc/cobblemon!1865
2025-09-20 17:40:28 +00:00
Jackson BowesandLandon 56d75b14fa ride tweaks extended cut 2025-09-20 17:40:27 +00:00
Paul 87311e2d7d Added default ride pose and use that instead of letting minecraft animate them 2025-09-20 22:03:44 +10:00
Paul bd63fb686d Support marking some seats as making the hands busy 2025-09-20 17:00:35 +10:00
Carmendar 0f9a422d44 no more garchomp quirks while mount flying. 2025-09-20 00:52:41 -05:00
Paul 32d18b47f9 Positional scaling fix for root-based ride player animation 2025-09-20 15:46:11 +10:00
Paul c618bf95fa Merge remote-tracking branch 'origin/main' into root-bone-animations-in-riding
# Conflicts:
#	common/src/main/java/com/cobblemon/mod/common/mixin/client/HumanoidModelMixin.java
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/player/MountedPlayerRenderer.kt
#	common/src/main/resources/mixins.cobblemon-common.json
2025-09-20 14:46:37 +10:00
Nadja Reitzenstein a7bd70e334 Make only held Pokedexes cast light 2025-09-19 13:10:12 +02:00
GenotypeXD-Dev d12bdc3745 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2025-09-18 21:53:03 -05:00
GenotypeXD-Dev 08c8623951 Flygon Size Fix 2025-09-18 21:38:51 -05:00
Nadja Reitzenstein d2ff7e3748 Make Charmander glow 2025-09-18 17:48:30 +02:00
Nadja Reitzenstein ea6452287b Refactor dynamic light support to be future-proof 2025-09-18 17:48:28 +02:00
Nadja Reitzenstein b1f7731563 Update dependencies all around 2025-09-18 17:47:39 +02:00
CeeJay c46a4d5936 try to offset vertically if teleport location is invalid 2025-09-04 01:08:11 -04:00
CeeJay c3c57f3f33 try using randomTeleport rather than homemade teleportation 2025-09-03 17:48:04 -04:00
CeeJay 0dba1e9f82 teleporting changelog 2025-08-22 13:51:25 -04:00
CeeJay 41457d8da8 battle properly ends after wild pokemon teleport
Resolves #391
2025-08-22 13:48:54 -04:00
CeeJay a8db098652 Merge remote-tracking branch 'origin/wild-teleporting' into wild-teleporting
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/interpreter/instructions/MoveInstruction.kt
2025-08-21 18:05:47 -04:00
CeeJay 1f241fc8dc add teleport sound 2025-08-21 18:03:23 -04:00
CeeJay 3921295fee send message in chat rather than battle ui 2025-08-21 15:17:17 -04:00
CeeJay 790e5e6c8b en_us and en_pt battleLang for a wild pokemon fleeing 2025-08-21 15:17:17 -04:00
CeeJay 2957cabf86 only end battle if pokemon successfully teleported away 2025-08-21 15:17:16 -04:00
CeeJay 6909c5ad6f wild pokemon use teleport -> teleports away 2025-08-21 15:17:16 -04:00
CeeJay c65d6bd83e send message in chat rather than battle ui 2025-08-21 15:16:33 -04:00
CeeJay dd6a526a49 en_us and en_pt battleLang for a wild pokemon fleeing 2025-08-21 14:28:31 -04:00
CeeJay b30b03fffd only end battle if pokemon successfully teleported away 2025-08-21 12:03:38 -04:00
CeeJay 1953538db5 wild pokemon use teleport -> teleports away 2025-08-21 01:38:55 -04:00
Paul be5ee8a6a3 Potentially got root bone animation working for players on pokes 2025-05-16 22:22:05 +10:00
121 changed files with 41920 additions and 2162 deletions
+3
View File
@@ -15,6 +15,9 @@
- baseScale in NPCs has been removed from classes and presets, and in the entity it is replaced with hitboxScale and renderScale.
- Added `EntityCallbacks` to `NPCEntity` and `PokemonEntity`. You can trigger custom callback types by using `[Entity].callbacks.process(...)`
### Fixes
- Fixed Pokémon with a moving walk target frequently spinning in place as they re-calculate their path.
### MoLang & Datapacks
- Added a `behaviours` datapack folder which motivates the Behaviour Editor screen on NPCs and Pokémon.
- Added "callback" support on PokemonEntity and NPCEntity that allows MoLang scripts to be executed in response to certain scenarios.
+11
View File
@@ -283,6 +283,15 @@
- Revavroom
- Bouffalant
- Lickilicky
- Blaziken
- Rhyhorn
- Rhydon
- Rhyperior
- Tauros
- Tauros - Paldea Aqua
- Tauros - Paldea Blaze
- Tauros - Paldea Combat
- Dewgong
### Model updates for the following Pokémon
- Cleffa
@@ -448,6 +457,7 @@
- MoLang `run_action_effect` now works on Pokémon.
- Changed MoLang entity function `is_standing_on` to allow for block tags in the list.
- Added entity (as `q.entity`) that executed the command to the `executemolangscript` command.
- A wild Pokémon using Teleport now ends the battle and causes the Pokémon to teleport a short distance away. Teleport still behaves the same in PvP battles.
- Refactored the following events to `.Pre` and `.Post` for consistency:
- `PokemonSentEvent`
- `ExperienceGainedEvent`
@@ -456,6 +466,7 @@
- Updated `EvolutionCompleteEvent` parameters to include the Source Pokemon that evolved.
- Updated `HatchEggEvent.Post` to include the Pokemon that hatched.
- Roseli Berry Trees now naturally generate in their preferred biomes.
- Refactored dynamic lights compat to be more future proof. The dynamic light support is only tested with LambDynamicLights, on NeoForged use that mod in combination with Sinytra Connector
### Fixes
- Fixed game crashing when removing national pokedex using datapacks
+7
View File
@@ -31,6 +31,7 @@ repositories {
maven(url = "${rootProject.projectDir}/deps")
maven(url = "https://api.modrinth.com/maven")
maven(url = "https://maven.neoforged.net/releases")
maven(url = "https://maven.gegy.dev")
mavenLocal()
}
@@ -44,6 +45,12 @@ dependencies {
modCompileOnly(libs.bundles.common.integrations.compileOnly) {
isTransitive = false
}
// LambDynamicLights is handled differently because we need the Mojang-mappings version of it.
modCompileOnly(libs.lambDynamicLights) {
capabilities {
requireCapability("dev.lambdaurora.lambdynamiclights:api-mojmap")
}
}
// Flywheel has no common dep so just pick one and don't use any platform specific code in common
// modCompileOnly(libs.flywheelFabric)
@@ -1,102 +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.compat;
import com.cobblemon.mod.common.CobblemonEntities;
import com.cobblemon.mod.common.client.render.layer.PokemonOnShoulderRenderer;
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity;
import com.cobblemon.mod.common.item.PokedexItem;
import com.cobblemon.mod.common.pokemon.FormData;
import com.cobblemon.mod.common.pokemon.lighthing.LightingData;
import dev.lambdaurora.lambdynlights.LambDynLights;
import dev.lambdaurora.lambdynlights.api.DynamicLightHandler;
import dev.lambdaurora.lambdynlights.api.DynamicLightHandlers;
import net.minecraft.core.BlockPos;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Optional;
import net.minecraft.world.entity.player.Player;
// Java class due to relying on entrypoint on Fabric side
public class LambDynamicLightsCompat {
// This is all called on client side
// These things are checked every tick so try to keep it as free as possible
// That being said it's unlikely school Toshiba person is running dynamic lighting and shaders to enjoy this
// Make sure not to call anything Fabric specific :)
public static void hookCompat() {
// Pokémon entities
DynamicLightHandlers.registerDynamicLightHandler(
CobblemonEntities.POKEMON,
DynamicLightHandler.makeHandler(
LambDynamicLightsCompat::resolvedPokemonLightLevel,
pokemon -> false
)
);
// Shouldered Pokémon
DynamicLightHandlers.registerDynamicLightHandler(
EntityType.PLAYER,
DynamicLightHandler.makeHandler(
LambDynamicLightsCompat::resolvedPlayerLightLevel,
player -> false
)
);
}
private static int resolvedPokemonLightLevel(PokemonEntity pokemon) {
var underwater = !pokemon.level().getFluidState(BlockPos.containing(pokemon.getX(), pokemon.getEyeY(), pokemon.getZ())).isEmpty();
ItemStack item = pokemon.getShownItem();
int itemLightLevel = item.isEmpty()?0:LambDynLights.getLuminanceFromItemStack(item, underwater);
int formLightLevel = extractFormLightLevel(pokemon.getForm(), underwater).orElse(0);
return Math.max(itemLightLevel, formLightLevel);
}
private static int resolvedPlayerLightLevel(Player player) {
var underwater = !player.level().getFluidState(BlockPos.containing(player.getX(), player.getEyeY(), player.getZ())).isEmpty();
final int leftShoulderLightLevel = extractShoulderLightLevel(PokemonOnShoulderRenderer.shoulderDataFrom(player.getShoulderEntityLeft()), underwater);
final int rightShoulderLightLevel = extractShoulderLightLevel(PokemonOnShoulderRenderer.shoulderDataFrom(player.getShoulderEntityRight()), underwater);
final int itemLightLevel = customHeldItemLightLevel(player.getMainHandItem(), player.getOffhandItem());
return Math.max(itemLightLevel, Math.max(leftShoulderLightLevel, rightShoulderLightLevel));
}
private static Optional<Integer> extractFormLightLevel(@NotNull FormData form, boolean underwater) {
if (form.getLightingData() == null || !liquidGlowModeSupport(form.getLightingData().getLiquidGlowMode(), underwater)) {
return Optional.empty();
}
return Optional.of(form.getLightingData().getLightLevel());
}
private static int extractShoulderLightLevel(@Nullable PokemonOnShoulderRenderer.ShoulderData shoulderData, boolean underwater) {
if (shoulderData == null) {
return 0;
}
ItemStack item = shoulderData.getShownItem();
int itemLightLevel = item.isEmpty() ? 0 :LambDynLights.getLuminanceFromItemStack(item, underwater);
int formLightLevel = extractFormLightLevel(shoulderData.getForm(), underwater).orElse(0);
return Math.max(itemLightLevel, formLightLevel);
}
private static int customHeldItemLightLevel(ItemStack mainhand, ItemStack offhand) {
return (mainhand.getItem() instanceof PokedexItem || offhand.getItem() instanceof PokedexItem) ? 13 : 0;
}
private static boolean liquidGlowModeSupport(@NotNull LightingData.LiquidGlowMode liquidGlowMode, boolean underwater) {
return underwater ? liquidGlowMode.getGlowsUnderwater() : liquidGlowMode.getGlowsInLand();
}
}
@@ -0,0 +1,28 @@
/*
* 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.compat.lambdynamiclights;
import com.cobblemon.mod.common.pokemon.FormData;
import com.cobblemon.mod.common.pokemon.lighthing.LightingData;
import org.jetbrains.annotations.NotNull;
import java.util.Optional;
public abstract class CustomLuminance {
protected static Optional<Integer> extractFormLightLevel(@NotNull FormData form, boolean underwater) {
if (form.getLightingData() == null || !liquidGlowModeSupport(form.getLightingData().getLiquidGlowMode(), underwater)) {
return Optional.empty();
}
return Optional.of(form.getLightingData().getLightLevel());
}
protected static boolean liquidGlowModeSupport(@NotNull LightingData.LiquidGlowMode liquidGlowMode, boolean underwater) {
return underwater ? liquidGlowMode.getGlowsUnderwater() : liquidGlowMode.getGlowsInLand();
}
}
@@ -0,0 +1,42 @@
/*
* 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.compat.lambdynamiclights;
import com.cobblemon.mod.common.Cobblemon;
import dev.lambdaurora.lambdynlights.api.DynamicLightsContext;
import dev.lambdaurora.lambdynlights.api.DynamicLightsInitializer;
import dev.lambdaurora.lambdynlights.api.entity.luminance.EntityLuminance;
import dev.lambdaurora.lambdynlights.api.item.ItemLightSourceManager;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.EntityType;
public class LambDynamicLightsInitializer implements DynamicLightsInitializer {
public static final EntityLuminance.Type POKEMON_LUMINANCE = EntityLuminance.Type.registerSimple(
ResourceLocation.fromNamespaceAndPath(Cobblemon.MODID, "pokemon"),
PokemonLuminance.INSTANCE
);
public static final EntityLuminance.Type PLAYER_LUMINANCE = EntityLuminance.Type.registerSimple(
ResourceLocation.fromNamespaceAndPath(Cobblemon.MODID, "shoulder"),
PlayerLuminance.INSTANCE
);
@Override
public void onInitializeDynamicLights(DynamicLightsContext context) {
Cobblemon.LOGGER.info("Lamb Dynamic Lights compatibility enabled");
context.entityLightSourceManager().onRegisterEvent().register(ctx -> {
ctx.register(EntityType.PLAYER, PlayerLuminance.INSTANCE);
});
}
@SuppressWarnings({"removal", "UnstableApiUsage"})
@Override
public void onInitializeDynamicLights(ItemLightSourceManager itemLightSourceManager) {}
}
@@ -0,0 +1,72 @@
/*
* 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.compat.lambdynamiclights;
import com.cobblemon.mod.common.Cobblemon;
import com.cobblemon.mod.common.client.render.layer.PokemonOnShoulderRenderer;
import dev.lambdaurora.lambdynlights.api.entity.luminance.EntityLuminance;
import dev.lambdaurora.lambdynlights.api.item.ItemLightSourceManager;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.TagKey;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Range;
public final class PlayerLuminance extends CustomLuminance implements EntityLuminance {
public static final PlayerLuminance INSTANCE = new PlayerLuminance();
private static final TagKey<Item> POKEDEX = TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(Cobblemon.MODID, "pokedex"));
@Override
public @NotNull Type type() {
return LambDynamicLightsInitializer.PLAYER_LUMINANCE;
}
@Override
public @Range(from = 0L, to = 15L) int getLuminance(@NotNull ItemLightSourceManager itemLightSourceManager, @NotNull Entity entity) {
if (entity instanceof Player player) {
final int shoulderLightLevel = shoulderLuminance(itemLightSourceManager, player);
final int itemLightLevel = player.isHolding(stack -> stack.is(POKEDEX)) ? 13 : 0;
return Math.max(shoulderLightLevel, itemLightLevel);
} else {
return 0;
}
}
private @Range(from = 0L, to = 15L) static int shoulderLuminance(@NotNull ItemLightSourceManager itemLightSourceManager, @NotNull Player player) {
final var leftShoulder = PokemonOnShoulderRenderer.shoulderDataFrom(player.getShoulderEntityLeft());
final var rightShoulder = PokemonOnShoulderRenderer.shoulderDataFrom(player.getShoulderEntityRight());
if (leftShoulder == null && rightShoulder == null) {
return 0;
}
final int leftShoulderLightLevel = extractShoulderLightLevel(leftShoulder, itemLightSourceManager, player.isUnderWater());
final int rightShoulderLightLevel = extractShoulderLightLevel(rightShoulder, itemLightSourceManager, player.isUnderWater());
return Math.max(leftShoulderLightLevel, rightShoulderLightLevel);
}
private static int extractShoulderLightLevel(@Nullable PokemonOnShoulderRenderer.ShoulderData shoulderData, @NotNull ItemLightSourceManager itemLightSourceManager, boolean underwater) {
if (shoulderData == null) {
return 0;
}
ItemStack item = shoulderData.getShownItem();
int itemLightLevel = item.isEmpty() ? 0 : itemLightSourceManager.getLuminance(item, underwater);
int formLightLevel = extractFormLightLevel(shoulderData.getForm(), underwater).orElse(0);
return Math.max(itemLightLevel, formLightLevel);
}
}
@@ -0,0 +1,45 @@
/*
* 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.compat.lambdynamiclights;
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity;
import dev.lambdaurora.lambdynlights.api.entity.luminance.EntityLuminance;
import dev.lambdaurora.lambdynlights.api.item.ItemLightSourceManager;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Range;
public final class PokemonLuminance extends CustomLuminance implements EntityLuminance {
public static final PokemonLuminance INSTANCE = new PokemonLuminance();
private PokemonLuminance() {}
@Override
public @NotNull Type type() {
return LambDynamicLightsInitializer.POKEMON_LUMINANCE;
}
@Override
public @Range(from = 0L, to = 15L) int getLuminance(
@NotNull ItemLightSourceManager itemLightSourceManager,
@NotNull Entity entity
) {
if (entity instanceof PokemonEntity pokemon) {
boolean underwater = pokemon.isUnderWater();
ItemStack item = pokemon.getShownItem();
int itemLightLevel = item.isEmpty() ? 0 : itemLightSourceManager.getLuminance(item, underwater);
int formLightLevel = extractFormLightLevel(pokemon.getForm(), underwater).orElse(0);
return Math.max(itemLightLevel, formLightLevel);
} else {
return 0;
}
}
}
@@ -31,14 +31,15 @@ public class AbstractClientPlayerMixin {
PokedexUsageContext usageContext = CobblemonClient.INSTANCE.getPokedexUsageContext();
if (usageContext.getScanningGuiOpen()) {
cir.setReturnValue(usageContext.getFovMultiplier());
}
} else {
// Only modify fov through riding if the pokedex is not open
LocalPlayer player = (LocalPlayer) (Object) this;
if (player != null && player.isPassenger() && player.getVehicle() instanceof PokemonEntity) {
PokemonEntity ride = (PokemonEntity) player.getVehicle();
LocalPlayer player = (LocalPlayer) (Object) this;
if (player != null && player.isPassenger() && player.getVehicle() instanceof PokemonEntity) {
PokemonEntity ride = (PokemonEntity) player.getVehicle();
//Return custom fov mult
cir.setReturnValue(ride.rideFovMult());
// Return custom fov mult for riding
cir.setReturnValue(ride.rideFovMult());
}
}
}
}
@@ -0,0 +1,46 @@
/*
* 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.client;
import com.cobblemon.mod.common.client.render.player.MountedPlayerRenderer;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.model.AgeableListModel;
import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.model.Model;
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.CallbackInfo;
/**
* This mixin adds to the head of the renderToBuffer function and allows us to detect if it is a HumanoidModel and
* is being rendered as part of a player in the world who is riding a PokemonEntity. If so we need to obey any
* root animations that have been applied earlier.
*
* @author Hiroku
* @since May 16, 2025
*/
@Mixin(AgeableListModel.class)
public class AgeableListModelMixin {
@Inject(method = "renderToBuffer", at = @At("HEAD"))
private void cobblemon$renderToBuffer(
PoseStack poseStack,
VertexConsumer vertexConsumer,
int packedLight,
int packedOverlay,
int colour,
CallbackInfo ci
) {
Model model = (Model) (Object) this;
if (model instanceof HumanoidModel<?> && MountedPlayerRenderer.shouldApplyRootAnimation) {
MountedPlayerRenderer.INSTANCE.animateRoot(poseStack);
}
}
}
@@ -19,20 +19,17 @@ import net.minecraft.world.entity.LivingEntity;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
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.HashMap;
@Mixin(HumanoidModel.class)
public class HumanoidModelMixin {
@Unique HashMap<String, ModelPart> relevantPartsByName = new HashMap<>();
@Shadow @Final
public ModelPart head;
@Shadow @Final
public ModelPart hat;
@Shadow @Final
public ModelPart rightArm;
@Shadow @Final
public ModelPart leftArm;
@@ -40,6 +37,8 @@ public class HumanoidModelMixin {
public ModelPart rightLeg;
@Shadow @Final
public ModelPart leftLeg;
@Shadow @Final
public ModelPart body;
@Inject(method = "setupAnim*", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/geom/ModelPart;copyFrom(Lnet/minecraft/client/model/geom/ModelPart;)V", shift = At.Shift.BEFORE))
public void cobblemon$animateRiders(
@@ -51,19 +50,23 @@ public class HumanoidModelMixin {
float headPitch,
CallbackInfo ci
) {
if (relevantPartsByName.isEmpty()) {
relevantPartsByName.put("arm_left", leftArm);
relevantPartsByName.put("arm_right", rightArm);
relevantPartsByName.put("leg_left", leftLeg);
relevantPartsByName.put("leg_right", rightLeg);
relevantPartsByName.put("head", head);
MountedPlayerRenderer.shouldApplyRootAnimation = false;
if (MountedPlayerRenderer.relevantPartsByName.size() <= 1) {
MountedPlayerRenderer.relevantPartsByName.put("arm_left", leftArm);
MountedPlayerRenderer.relevantPartsByName.put("arm_right", rightArm);
MountedPlayerRenderer.relevantPartsByName.put("leg_left", leftLeg);
MountedPlayerRenderer.relevantPartsByName.put("leg_right", rightLeg);
MountedPlayerRenderer.relevantPartsByName.put("head", head);
MountedPlayerRenderer.relevantPartsByName.put("hat", hat);
MountedPlayerRenderer.relevantPartsByName.put("torso", body);
}
Entity vehicle = entity.getVehicle();
if (vehicle instanceof PokemonEntity pokemonEntity && entity instanceof OrientationControllable) {
var shouldRotatePlayerHead = pokemonEntity.ifRidingAvailableSupply(false, (behaviour, settings, state) -> {
return behaviour.shouldRotateRiderHead(settings, state, pokemonEntity);
});
var shouldRotatePlayerHead = pokemonEntity.ifRidingAvailableSupply(false, (behaviour, settings, state) ->
behaviour.shouldRotateRiderHead(settings, state, pokemonEntity)
);
if (!shouldRotatePlayerHead) {
netHeadYaw = 0f;
@@ -76,7 +79,8 @@ public class HumanoidModelMixin {
if (!(entity instanceof AbstractClientPlayer player)) return;
MountedPlayerRenderer.INSTANCE.animate(pokemonEntity, player, relevantPartsByName, netHeadYaw, headPitch, ageInTicks, limbSwing, limbSwingAmount);
MountedPlayerRenderer.shouldApplyRootAnimation = true;
MountedPlayerRenderer.INSTANCE.animate((HumanoidModel<AbstractClientPlayer>)(Object)this, pokemonEntity, player, netHeadYaw, headPitch, ageInTicks, limbSwing, limbSwingAmount);
}
}
}
@@ -174,6 +174,16 @@ public abstract class LocalPlayerMixin extends AbstractClientPlayer implements O
return this.cobblemon$isDoubleJumping;
}
@Inject(method = "isHandsBusy", at = @At("HEAD"), cancellable = true)
private void cobblemon$isHandsBusy(CallbackInfoReturnable<Boolean> cir) {
Entity vehicle = this.getVehicle();
if (vehicle instanceof PokemonEntity pokemonEntity) {
int seatIndex = pokemonEntity.getPassengers().indexOf(this);
Seat seat = pokemonEntity.getSeats().get(seatIndex);
cir.setReturnValue(seat.getHandsBusy());
}
}
@Override
public HitResult pick(double hitDistance, float partialTicks, boolean hitFluids) {
Entity vehicle = this.getVehicle();
@@ -146,32 +146,30 @@ public abstract class MouseHandlerMixin {
return true;
}
//Send mouse input to be interpreted into rotation
//deltas by the ride controller
// Send mouse input to be interpreted into rotation
// deltas by the ride controller
Vec3 angVecMouse = cobblemon$getRideMouseRotation(cursorDeltaX, cursorDeltaY, movementTime);
//Perform Rotation using mouse influenced rotation deltas.
// Perform Rotation using mouse influenced rotation deltas.
controllable.getOrientationController().rotate(
(float) angVecMouse.x,
(float) angVecMouse.y,
(float) angVecMouse.z
);
//Gather and apply the current rotation deltas
// Gather and apply the current rotation deltas
var angRot = cobblemon$getAngularVelocity(movementTime);
//Apply smoothing if requested by the controller.
//This Might be best if done by the controller itself?
if(cobblemon$shouldUseAngVelSmoothing())
{
// Apply smoothing if requested by the controller.
// This Might be best if done by the controller itself?
if(cobblemon$shouldUseAngVelSmoothing()) {
var yaw = yawSmoother.getNewDeltaValue(angRot.x * 0.5f, d);
var pitch = pitchSmoother.getNewDeltaValue(angRot.y * 0.5f, d);
var roll = rollSmoother.getNewDeltaValue(angRot.z * 0.5f, d);
controllable.getOrientationController().rotate((float) yaw, (float) pitch, (float) roll);
}
//Otherwise simply apply the smoothing
else
{
// Otherwise simply apply the smoothing
else {
controllable.getOrientationController().rotate((float) (angRot.x * 10 * d), (float) (angRot.y * 10 * d), (float) (angRot.z * 10 * d));
}
return false;
@@ -26,10 +26,10 @@ object CobblemonItemComponents : PlatformRegistry<Registry<DataComponentType<*>>
.networkSynchronized(PokemonItemComponent.PACKET_CODEC)
.build())
val HELD_ITEM_REP: DataComponentType<HeldItemCapableComponent> = DataComponentType.builder<HeldItemCapableComponent>()
.persistent(HeldItemCapableComponent.CODEC)
.networkSynchronized(HeldItemCapableComponent.PACKET_CODEC)
.build()
val HELD_ITEM_EFFECT: DataComponentType<HeldItemEffectComponent> = create("held_item_effect", DataComponentType.builder<HeldItemEffectComponent>()
.persistent(HeldItemEffectComponent.CODEC)
.networkSynchronized(HeldItemEffectComponent.PACKET_CODEC)
.build())
val BAIT: DataComponentType<RodBaitComponent> = create("bait", DataComponentType.builder<RodBaitComponent>()
.persistent(RodBaitComponent.CODEC)
@@ -86,6 +86,7 @@ object CobblemonItemComponents : PlatformRegistry<Registry<DataComponentType<*>>
Registry.register(BuiltInRegistries.DATA_COMPONENT_TYPE, ResourceLocation.parse("cobblemon:ingredient"), INGREDIENT)
Registry.register(BuiltInRegistries.DATA_COMPONENT_TYPE, ResourceLocation.parse("cobblemon:food"), FOOD)
Registry.register(BuiltInRegistries.DATA_COMPONENT_TYPE, ResourceLocation.parse("cobblemon:mob_effects"), MOB_EFFECTS)
Registry.register(BuiltInRegistries.DATA_COMPONENT_TYPE, ResourceLocation.parse("cobblemon:held_item_effect"), HELD_ITEM_EFFECT)
}
override val registry = BuiltInRegistries.DATA_COMPONENT_TYPE
@@ -219,6 +219,7 @@ open class PokemonBattle(
}
fun broadcastChatMessage(component: Component) {
if (ended) {return}
chatLog.add(component)
sendSpectatorUpdate(BattleMessagePacket(component))
return actors.forEach { it.sendMessage(component) }
@@ -0,0 +1,57 @@
/*
* 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.api.item
import com.cobblemon.mod.common.api.data.DataRegistry
import com.cobblemon.mod.common.api.reactive.SimpleObservable
import com.cobblemon.mod.common.battles.runner.ShowdownService
import com.cobblemon.mod.common.pokemon.helditem.CobblemonHeldItemManager
import com.cobblemon.mod.common.util.cobblemonResource
import net.minecraft.resources.ResourceLocation
import net.minecraft.server.level.ServerPlayer
import net.minecraft.server.packs.PackType
import net.minecraft.server.packs.resources.ResourceManager
import java.io.File
object HeldItems : DataRegistry {
override val id = cobblemonResource("held_items")
override val type = PackType.SERVER_DATA
override val observable = SimpleObservable<HeldItems>()
override fun sync(player: ServerPlayer) {}
// val heldItems = PrioritizedList<BagItemLike>()
internal val heldItemsScripts = mutableMapOf<String, String>() // showdown item ID to JavaScript
val showdownItems = hashSetOf<String>()
override fun reload(manager: ResourceManager) {
heldItemsScripts.clear()
ShowdownService.service.resetRegistryData("heldItem")
manager.listResources("held_items") { it.path.endsWith(".js") }.forEach { (identifier, resource) ->
resource.open().use { stream ->
stream.bufferedReader().use { reader ->
val resolvedIdentifier = ResourceLocation.fromNamespaceAndPath(identifier.namespace, File(identifier.path).nameWithoutExtension)
val js = reader.readText()
heldItemsScripts[resolvedIdentifier.path] = js
}
}
}
ShowdownService.service.sendRegistryData(heldItemsScripts, "heldItem")
val itemsJson = ShowdownService.service.getRegistryData("heldItem")
for (i in 0 until itemsJson.size()) {
val jsItem = itemsJson[i].asJsonObject
showdownItems += jsItem.get("id").asString
}
CobblemonHeldItemManager.load()
this.observable.emit(this)
}
}
@@ -53,7 +53,6 @@ import com.cobblemon.mod.common.pokemon.ai.ObtainableItemConditionAdapter
import com.cobblemon.mod.common.pokemon.evolution.adapters.CobblemonEvolutionAdapter
import com.cobblemon.mod.common.pokemon.evolution.adapters.CobblemonPreEvolutionAdapter
import com.cobblemon.mod.common.pokemon.evolution.adapters.LegacyItemConditionWrapperAdapter
import com.cobblemon.mod.common.pokemon.helditem.CobblemonHeldItemManager
import com.cobblemon.mod.common.util.adapters.*
import com.cobblemon.mod.common.util.cobblemonResource
import com.google.common.collect.HashBasedTable
@@ -158,8 +157,6 @@ object PokemonSpecies : JsonDataRegistry<Species> {
it.resetRegistryData("species")
it.sendRegistryData(allShowdownSpecies(), "species")
it.indicateSpeciesInitialized()
// Reload this with the mod
CobblemonHeldItemManager.load()
Cobblemon.LOGGER.info("Loaded {} Pokémon species", this.speciesByIdentifier.size)
this.observable.emit(this)
}
@@ -25,7 +25,8 @@ data class Seat(
val locator: String?,
val offset: Vec3?,
val poseOffsets: MutableList<SeatPoseOffset>?,
val poseAnimations: MutableList<SeatPoseAnimations>?
val poseAnimations: MutableList<SeatPoseAnimations>?,
val handsBusy: Boolean = false,
) : Encodable {
fun getOffset(poseType: PoseType) : Vec3 {
return poseOffsets?.firstOrNull { poseType in it.poseTypes }?.offset ?: Vec3.ZERO
@@ -40,6 +41,7 @@ data class Seat(
buffer.writeNullable(poseAnimations) { _, v ->
buffer.writeCollection(v) { _, animations -> animations.encode(buffer) }
}
buffer.writeBoolean(handsBusy)
}
companion object {
@@ -48,7 +50,8 @@ data class Seat(
buffer.readNullable { buffer.readString() },
buffer.readNullable { buffer.readVec3() },
buffer.readNullable { buffer.readList { SeatPoseOffset.decode(buffer) } },
buffer.readNullable { buffer.readList { SeatPoseAnimations.decode(buffer) } }
buffer.readNullable { buffer.readList { SeatPoseAnimations.decode(buffer) } },
buffer.readBoolean()
)
}
}
@@ -10,10 +10,8 @@ package com.cobblemon.mod.common.api.riding.behaviour
import com.cobblemon.mod.common.api.net.Decodable
import com.cobblemon.mod.common.api.net.Encodable
import com.cobblemon.mod.common.api.riding.RidingStyle
import com.cobblemon.mod.common.api.riding.stats.RidingStat
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.phys.Vec3
/**
* Represents static settings of a riding behaviour.
@@ -27,10 +25,9 @@ interface RidingBehaviourSettings: Encodable, Decodable {
val key: ResourceLocation
val stats: MutableMap<RidingStat, IntRange>
fun calculate(stat: RidingStat, boosts: Int): Float {
fun calculate(stat: RidingStat, boostedAmount: Float): Float {
val range = stats[stat] ?: return 0F
val boostQuotient = boosts / 255F
return range.first + (range.last - range.first) * boostQuotient
return (range.first + boostedAmount).coerceAtMost(range.last.toFloat())
}
fun hasStat(stat: RidingStat) = stats.containsKey(stat)
@@ -49,6 +49,7 @@ class RidingController(
if (newTransition != null && behaviourSettings != null) {
val newState = RidingBehaviours.get(behaviourSettings.key).createDefaultState(behaviourSettings)
context?.let { newState.stamina.set(it.state.stamina.get(), forced = true) }
context?.let { newState.rideVelocity.set(it.state.rideVelocity.get(), forced = true) }
context = ActiveRidingContext(behaviourSettings.key, behaviourSettings, newState, newTransition)
lastTransitionAge = entity.ticksLived
} else {
@@ -21,10 +21,8 @@ import com.cobblemon.mod.common.api.riding.sound.RideSoundSettingsList
import com.cobblemon.mod.common.api.riding.stats.RidingStat
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.*
import com.cobblemon.mod.common.util.math.geometry.toRadians
import net.minecraft.client.Minecraft
import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.RegistryFriendlyByteBuf
import net.minecraft.resources.ResourceLocation
@@ -84,11 +82,15 @@ class BirdBehaviour : RidingBehaviour<BirdSettings, BirdState> {
vehicle: PokemonEntity,
driver: Player,
) {
// Also checks stamina
val controller = (driver as OrientationControllable).orientationController
if (cos(controller.roll.toRadians()) < 0.0) {
val upsideDownRate = 1.0 / (2.0 * 20.0) // 2 seconds to max out upsideDown force
state.currUpsideDownForce.set( min(1.0, state.currUpsideDownForce.get() + upsideDownRate * abs(cos(controller.roll.toRadians()))))
} else { // Its right side up so reset it
} else if (state.stamina.get() == 0.0f) {
val upsideDownRate = 1.0 / (2.0 * 20.0) // 1 seconds to max out
state.currUpsideDownForce.set( min(1.0, state.currUpsideDownForce.get() + upsideDownRate))
} else { // Its right side up or has stamina so reset it
state.currUpsideDownForce.set(0.0)
}
}
@@ -109,7 +111,7 @@ class BirdBehaviour : RidingBehaviour<BirdSettings, BirdState> {
val newStam = if (driver.zza > 0.0) max(0.0f,stam - stamDrainRate)
else if (!state.gliding.get()) max(0.0f,stam - stamDrainRate * 0.5f) // if hovering half the stam drain
else min(1.0f,stam + stamDrainRate * 0.2f)
else stam
state.stamina.set(newStam)
}
@@ -149,8 +151,7 @@ class BirdBehaviour : RidingBehaviour<BirdSettings, BirdState> {
}
// The downward force used to encourage players to stop flying upside down.
val extraDownwardForce = if(state.stamina.get() == 0.0f) -0.3
else state.currUpsideDownForce.get().pow(2) * -0.3 // 6 blocks a second downward
val extraDownwardForce = state.currUpsideDownForce.get().pow(2) * -0.3 // 6 blocks a second downward
val velocity = Vec3(state.rideVelocity.get().x , upForce + extraDownwardForce, forwardForce)
return velocity
@@ -299,10 +300,10 @@ class BirdBehaviour : RidingBehaviour<BirdSettings, BirdState> {
// Calculate correcting roll force.
// Mult by cos(pitch) to ensure that it doesn't roll correct at when diving or climbing
val rollCorrectionTimer = vehicle.runtime.resolveDouble(settings.timeToRollCorrect)
val maxRollCorrectionRate = if (state.rideVelocity.get().length() < 0.1) 15.0f else 8.0f * (cos(controller.pitch.toRadians())).pow(2) * ((state.noInputTime.get() - rollCorrectionTimer) * 2).coerceIn(0.0, 1.0).toFloat()
val maxRollCorrectionRate = if (state.rideVelocity.get().length() < 0.1) 15.0f else 8.0f * (cos(controller.pitch.toRadians())).pow(2) * ((state.noInputTimeRoll.get() - rollCorrectionTimer) * 2).coerceIn(0.0, 1.0).toFloat()
val maxRollForce = maxRollCorrectionRate / 40.0
val rollArrivalDeg = 90.0
if(state.rideVelocity.get().length() < 0.1 || state.noInputTime.get() > rollCorrectionTimer) {
if(state.rideVelocity.get().length() < 0.1 || state.noInputTimeRoll.get() > rollCorrectionTimer) {
val arrivalInfluence = (min(rollArrivalDeg,abs(controller.roll).toDouble()) / rollArrivalDeg)
val desiredRollForce = (0 - controller.roll).sign * maxRollCorrectionRate * arrivalInfluence
var steeredRollForce = desiredRollForce - state.currRollCorrectionForce.get()
@@ -324,12 +325,13 @@ class BirdBehaviour : RidingBehaviour<BirdSettings, BirdState> {
}
//Calculate correcting pitch force.
val maxPitchCorrectionRate = 15
val maxPitchForce = maxPitchCorrectionRate / 40.0
val pitchArrivalDeg = 90.0
if(state.rideVelocity.get().length() < 0.1) {
val arrivalInfluence = (min(pitchArrivalDeg,abs(controller.pitch).toDouble()) / pitchArrivalDeg)
val desiredPitchForce = (0 - controller.pitch).sign * maxPitchCorrectionRate * arrivalInfluence
val maxPitchCorrectionRate = if (state.currUpsideDownForce.get() != 0.0) 8f * state.currUpsideDownForce.get() else 15f
val maxPitchForce = maxPitchCorrectionRate.toFloat() / 40.0f
val pitchArrivalDeg = 90.0f
val desiredPitch = if (state.currUpsideDownForce.get() != 0.0) 90.0 else 0.0
if((state.rideVelocity.get().length() < 0.1 && controller.pitch < 0.0) || state.currUpsideDownForce.get() != 0.0) {
val arrivalInfluence = (min(pitchArrivalDeg,abs(controller.pitch - desiredPitch).toFloat()) / pitchArrivalDeg)
val desiredPitchForce = (desiredPitch - controller.pitch).sign * maxPitchCorrectionRate.toFloat() * arrivalInfluence
var steeredPitchForce = desiredPitchForce - state.currPitchCorrectionForce.get()
// Ensure the 'steering' correction force doesn't exceed our maxForce
@@ -364,9 +366,15 @@ class BirdBehaviour : RidingBehaviour<BirdSettings, BirdState> {
// Begin the roll correction time counter if not enough mouse input
// is detected
if (abs(mouseX) < 1 && abs(mouseY) < 1) {
state.noInputTime.set(state.noInputTime.get() + deltaTime)
state.noInputTimeRoll.set(state.noInputTimeRoll.get() + deltaTime)
} else {
state.noInputTime.set(0.0)
state.noInputTimeRoll.set(0.0)
}
if (abs(mouseY) < 1) {
state.noInputTimePitch.set(state.noInputTimePitch.get() + deltaTime)
} else {
state.noInputTimePitch.set(0.0)
}
return when {
@@ -487,7 +495,7 @@ class BirdBehaviour : RidingBehaviour<BirdSettings, BirdState> {
// - pitch faster at higher speeds
val p = 1.0 - vehicle.runtime.resolveDouble(settings.horizontalPitchExpr)
var localPitch = yInput * (1 - abs(sin(controller.roll.toRadians())).pow(2) * p * hypot(controller.forwardVector.x.toDouble(), controller.forwardVector.z.toDouble()).toFloat())
localPitch *= if (currHorzSpeed > hoverSpeed) RidingBehaviour.scaleToRange(currHorzSpeed, hoverSpeed, topSpeed)
localPitch *= if (currSpeed > hoverSpeed || yInput > 0.0) RidingBehaviour.scaleToRange(currSpeed, 0.0, topSpeed).coerceIn(0.2, 1.0)
else 0.0
// Roll less when slow and not at all when at hoverSpeed or lower.
@@ -649,7 +657,7 @@ class BirdSettings : RidingBehaviourSettings {
var speedExpr: Expression = "q.get_ride_stats('SPEED', 'AIR', 20.0, 4.0)".asExpression()
// Seconds from stationary to top speed
var accelerationExpr: Expression = "q.get_ride_stats('ACCELERATION', 'AIR', 2.0, 8.0)".asExpression()
var staminaExpr: Expression = "q.get_ride_stats('STAMINA', 'AIR', 15.0, 2.0)".asExpression()
var staminaExpr: Expression = "q.get_ride_stats('STAMINA', 'AIR', 60.0, 15.0)".asExpression()
var glidespeedExpr: Expression = "q.get_ride_stats('JUMP', 'AIR', 2.0, 1.0)".asExpression()
private set
@@ -693,7 +701,8 @@ class BirdState : RidingBehaviourState() {
var lastGlide = ridingState(-100L, Side.CLIENT)
var currRollCorrectionForce = ridingState(0.0, Side.CLIENT)
var currPitchCorrectionForce = ridingState(0.0, Side.CLIENT)
var noInputTime = ridingState(0.0, Side.CLIENT)
var noInputTimeRoll = ridingState(0.0, Side.CLIENT)
var noInputTimePitch = ridingState(0.0, Side.CLIENT)
var currUpsideDownForce = ridingState(0.0, Side.CLIENT)
override fun encode(buffer: FriendlyByteBuf) {
@@ -712,7 +721,8 @@ class BirdState : RidingBehaviourState() {
lastGlide.set(-100L, forced = true)
currRollCorrectionForce.set(0.0, forced = true)
currPitchCorrectionForce.set(0.0, forced = true)
noInputTime.set(0.0, forced = true)
noInputTimeRoll.set(0.0, forced = true)
noInputTimePitch.set(0.0, forced = true)
}
override fun toString(): String {
@@ -726,7 +736,8 @@ class BirdState : RidingBehaviourState() {
it.lastGlide.set(this.lastGlide.get(), forced = true)
it.currRollCorrectionForce.set(this.currRollCorrectionForce.get(), forced = true)
it.currPitchCorrectionForce.set(this.currPitchCorrectionForce.get(), forced = true)
it.noInputTime.set(this.noInputTime.get(), forced = true)
it.noInputTimeRoll.set(this.noInputTimeRoll.get(), forced = true)
it.noInputTimePitch.set(this.noInputTimePitch.get(), forced = true)
}
override fun shouldSync(previous: RidingBehaviourState): Boolean {
@@ -75,7 +75,7 @@ class GliderBehaviour : RidingBehaviour<GliderSettings, RidingBehaviourState> {
val xVector = if (vehicle.runtime.resolveBoolean(settings.canStrafe)) driver.xxa.toDouble() else 0.0
val yVector = -vehicle.runtime.resolveDouble(settings.glideSpeed)
val zVector = driver.zza.toDouble()
val speedStat = settings.calculate(RidingStat.SPEED, 0)
val speedStat = settings.calculate(RidingStat.SPEED, 0F)
return Vec3(xVector, yVector, zVector)
}
@@ -11,8 +11,6 @@ package com.cobblemon.mod.common.api.riding.behaviour.types.air
import com.bedrockk.molang.Expression
import com.cobblemon.mod.common.api.riding.RidingStyle
import com.cobblemon.mod.common.api.riding.behaviour.*
import com.cobblemon.mod.common.api.riding.behaviour.types.land.HorseSettings
import com.cobblemon.mod.common.api.riding.behaviour.types.land.HorseState
import com.cobblemon.mod.common.api.riding.posing.PoseOption
import com.cobblemon.mod.common.api.riding.posing.PoseProvider
import com.cobblemon.mod.common.api.riding.sound.RideSoundSettingsList
@@ -27,7 +25,6 @@ import net.minecraft.network.RegistryFriendlyByteBuf
import net.minecraft.resources.ResourceLocation
import net.minecraft.util.Mth
import net.minecraft.util.SmoothDouble
import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.player.Player
import net.minecraft.world.level.ClipContext
@@ -131,8 +128,8 @@ class HoverBehaviour : RidingBehaviour<HoverSettings, HoverState> {
) {
val stam = state.stamina.get()
val stamDrainRate = (1.0f / vehicle.runtime.resolveDouble(settings.staminaExpr)).toFloat() / 20.0f
val newStam = if (state.tooHigh.get()) max(0.0f, stam - stamDrainRate) else min(1.0f,stam + stamDrainRate)
val stamReplenishRate = (1.0f / vehicle.runtime.resolveDouble(settings.stamReplenishTimeSeconds) ).toFloat() / 20.0f // 2 seconds to replenish a full bar of stamina
val newStam = if (state.tooHigh.get()) max(0.0f, stam - stamDrainRate) else min(1.0f,stam + stamReplenishRate)
state.stamina.set(newStam)
}
@@ -433,6 +430,9 @@ class HoverSettings : RidingBehaviourSettings {
var canJump = "true".asExpression()
private set
var stamReplenishTimeSeconds = "2.0".asExpression()
private set
// Speed in block per second
var speedExpr: Expression = "q.get_ride_stats('SPEED', 'AIR', 7.0, 1.0)".asExpression()
private set
@@ -87,7 +87,7 @@ class JetBehaviour : RidingBehaviour<JetSettings, JetState> {
val boostKeyPressed = Minecraft.getInstance().options.keySprint.isDown()
if(state.stamina.get() != 0.0f && boostKeyPressed) {
if (state.stamina.get() >= 0.25f) {
if (state.stamina.get() >= 0.0f) {
//If on the previous tick the boost key was held then don't change if the ride is boosting
if(state.boostIsToggleable.get()) {
//flip the boosting state if boost key is pressed
@@ -172,8 +172,9 @@ class JetBehaviour : RidingBehaviour<JetSettings, JetState> {
driver: Player
) {
val topSpeed = vehicle.runtime.resolveDouble(settings.speedExpr) / 20.0
val accel = vehicle.runtime.resolveDouble(settings.accelerationExpr) / 400.0
val minSpeed = vehicle.runtime.resolveDouble(settings.minSpeed) / 20.0
val accel = topSpeed / (vehicle.runtime.resolveDouble(settings.accelerationExpr) * 20.0)
val deccel = vehicle.runtime.resolveDouble(settings.deccelRate)//0.005
val minSpeed = topSpeed * vehicle.runtime.resolveDouble(settings.minSpeedFactor)
val speed = state.rideVelocity.get().length()
val boostMult = vehicle.runtime.resolveDouble(settings.jumpExpr)
@@ -187,7 +188,7 @@ class JetBehaviour : RidingBehaviour<JetSettings, JetState> {
Vec3(
state.rideVelocity.get().x,
state.rideVelocity.get().y,
max(state.rideVelocity.get().z - ((accel) / 2), minSpeed * 0.5)
max(state.rideVelocity.get().z - (deccel), minSpeed * 0.5)
)
)
}
@@ -215,7 +216,7 @@ class JetBehaviour : RidingBehaviour<JetSettings, JetState> {
Vec3(
state.rideVelocity.get().x,
state.rideVelocity.get().y,
max(state.rideVelocity.get().z - ((accel) / 2), minSpeed)
max(state.rideVelocity.get().z - (deccel), minSpeed)
)
)
} else if (speed > topSpeed) {
@@ -526,7 +527,11 @@ class JetSettings : RidingBehaviourSettings {
var gravity: Expression = "0".asExpression()
private set
var minSpeed: Expression = "12.0".asExpression()
var deccelRate: Expression = "0.005".asExpression()
private set
// Mult to top speed in order to derive minSpeed
var minSpeedFactor: Expression = "0.25".asExpression()
private set
var handlingYawExpr: Expression = "q.get_ride_stats('SKILL', 'AIR', 50.0, 25.0)".asExpression()
@@ -546,9 +551,9 @@ class JetSettings : RidingBehaviourSettings {
// Top Speed in blocks per second
var speedExpr: Expression = "q.get_ride_stats('SPEED', 'AIR', 24.0, 4.0)".asExpression()
private set
// Acceleration in blocks per s^2
// Seconds to get to top speed
var accelerationExpr: Expression =
"q.get_ride_stats('ACCELERATION', 'AIR', 4.0, 1.0)".asExpression()
"q.get_ride_stats('ACCELERATION', 'AIR', 3.0, 8.0)".asExpression()
private set
// Time in seconds to drain full bar of stamina flying
var staminaExpr: Expression = "q.get_ride_stats('STAMINA', 'AIR', 60.0, 4.0)".asExpression()
@@ -561,7 +566,8 @@ class JetSettings : RidingBehaviourSettings {
buffer.writeRidingStats(stats)
rideSounds.encode(buffer)
buffer.writeExpression(gravity)
buffer.writeExpression(minSpeed)
buffer.writeExpression(deccelRate)
buffer.writeExpression(minSpeedFactor)
buffer.writeExpression(handlingYawExpr)
buffer.writeExpression(infiniteStamina)
buffer.writeExpression(jumpExpr)
@@ -575,7 +581,8 @@ class JetSettings : RidingBehaviourSettings {
stats.putAll(buffer.readRidingStats())
rideSounds = RideSoundSettingsList.decode(buffer)
gravity = buffer.readExpression()
minSpeed = buffer.readExpression()
deccelRate = buffer.readExpression()
minSpeedFactor = buffer.readExpression()
handlingYawExpr = buffer.readExpression()
infiniteStamina = buffer.readExpression()
jumpExpr = buffer.readExpression()
@@ -18,6 +18,7 @@ import com.cobblemon.mod.common.api.riding.stats.RidingStat
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.util.*
import com.cobblemon.mod.common.util.math.geometry.toRadians
import net.minecraft.core.Direction
import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.RegistryFriendlyByteBuf
@@ -30,6 +31,7 @@ import net.minecraft.world.entity.player.Player
import net.minecraft.world.phys.Vec2
import net.minecraft.world.phys.Vec3
import net.minecraft.world.phys.shapes.Shapes
import org.joml.Matrix3f
import kotlin.math.*
class HorseBehaviour : RidingBehaviour<HorseSettings, HorseState> {
@@ -243,8 +245,21 @@ class HorseBehaviour : RidingBehaviour<HorseSettings, HorseState> {
* Gather the previous velocity and check for horizontal
* collisions
*****************************************************/
val dmSpeed = vehicle.deltaMovement.length()
val rvSpeed = state.rideVelocity.get().length()
var newVelocity = state.rideVelocity.get() //.normalize().scale(vehicle.deltaMovement.horizontalDistance())
/******************************************************
* Gather the previous velocity and check for horizontal
* collisions
*****************************************************/
// if (dmSpeed > rvSpeed) {
// // align the velocity vector to be in local vehicle space
// newVelocity = vehicle.deltaMovement
// val yawAligned = Matrix3f().rotateY(-vehicle.yRot.toRadians())
// newVelocity = (newVelocity.toVector3f().mul(yawAligned)).toVec3d()
// }
if (vehicle.horizontalCollision) {
newVelocity = newVelocity.normalize().scale(vehicle.deltaMovement.length())
}
@@ -42,9 +42,10 @@ class RideLoopSound(val ride: PokemonEntity, val soundSettings: RideSoundSetting
var fade: Float = 0.0f
var shouldMuffle: Boolean = soundSettings.muffleEnabled
var rideAttenuation: RideAttenuationModel = soundSettings.attenuationModel
var muffleAmount: Float = 1.0f // Currently slightly misleading. 1.0 is on muffle and 0.0 is full hFgain muting
// TODO: revisit below flag once multi passenger support is enabled
var isPassenger: Boolean = Minecraft.getInstance().player?.id == ride.controllingPassenger?.id
var muffleAmount: Float = 1.0f // Currently slightly misleading. 1.0 is no muffle and 0.0 is full hFgain muting
var isPassenger: Boolean = ride.passengers.any { passenger ->
Minecraft.getInstance().player?.id == passenger.id
}
init {
this.looping = true
@@ -181,7 +181,7 @@ object ShowdownInterpreter {
while (iterator.hasNext()) {
val message = iterator.next()
val id = message.id.replace("|", "")
val instruction = updateInstructionParser[id]?.invoke(battle, instructionSet, message, iterator) ?: UnknownInstruction(message)
val instruction: InterpreterInstruction = updateInstructionParser[id]?.invoke(battle, instructionSet, message, iterator) ?: UnknownInstruction(message)
instructionSet.instructions.add(instruction)
}
}
@@ -15,6 +15,9 @@ import com.cobblemon.mod.common.CobblemonMemories
import com.cobblemon.mod.common.api.battles.interpreter.BattleMessage
import com.cobblemon.mod.common.api.battles.interpreter.Effect
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
import com.cobblemon.mod.common.api.battles.model.actor.EntityBackedBattleActor
import com.cobblemon.mod.common.api.events.CobblemonEvents
import com.cobblemon.mod.common.api.events.battles.BattleFledEvent
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addBattleMessageFunctions
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addStandardFunctions
import com.cobblemon.mod.common.api.molang.MoLangFunctions.asMostSpecificMoLangValue
@@ -22,19 +25,24 @@ import com.cobblemon.mod.common.api.moves.Moves
import com.cobblemon.mod.common.api.moves.animations.ActionEffectContext
import com.cobblemon.mod.common.api.moves.animations.TargetsProvider
import com.cobblemon.mod.common.api.moves.animations.UsersProvider
import com.cobblemon.mod.common.api.text.yellow
import com.cobblemon.mod.common.battles.ShowdownInterpreter
import com.cobblemon.mod.common.battles.actor.PlayerBattleActor
import com.cobblemon.mod.common.battles.dispatch.CauserInstruction
import com.cobblemon.mod.common.battles.dispatch.GO
import com.cobblemon.mod.common.battles.dispatch.InstructionSet
import com.cobblemon.mod.common.battles.dispatch.InterpreterInstruction
import com.cobblemon.mod.common.battles.dispatch.UntilDispatch
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.pokemon.evolution.progress.UseMoveEvolutionProgress
import com.cobblemon.mod.common.util.asArrayValue
import com.cobblemon.mod.common.util.battleLang
import com.cobblemon.mod.common.util.cobblemonResource
import com.cobblemon.mod.common.util.*
import net.minecraft.core.BlockPos
import net.minecraft.server.level.ServerLevel
import net.minecraft.sounds.SoundEvents
import java.util.concurrent.CompletableFuture
import net.minecraft.world.entity.LivingEntity
import java.lang.Math.*
import kotlin.math.roundToInt
/**
* Format: |move|POKEMON|MOVE|TARGET
@@ -72,17 +80,27 @@ class MoveInstruction(
val pokemonName = userPokemon.getName()
ShowdownInterpreter.lastCauser[battle.battleId] = message
// For Spread targets the message data only gives the pnx strings. So we can't know what pokemon are actually targeted until the previous messages have been interpreted
val spreadTargetPokemon = spreadTargets.map { battle.activePokemon.firstOrNull() { poke -> poke.getPNX() == it }?.battlePokemon }
val spreadTargetPokemon =
spreadTargets.map { battle.activePokemon.firstOrNull() { poke -> poke.getPNX() == it }?.battlePokemon }
val targetPokemonEntity = targetPokemon?.entity
if (targetPokemonEntity != null) {
userPokemon.entity?.brain?.setMemory(CobblemonMemories.TARGETED_BATTLE_POKEMON, targetPokemonEntity.uuid)
userPokemon.entity?.brain?.setMemory(
CobblemonMemories.TARGETED_BATTLE_POKEMON,
targetPokemonEntity.uuid
)
}
userPokemon.effectedPokemon.let { pokemon ->
if (UseMoveEvolutionProgress.supports(pokemon, move)) {
val progress = pokemon.evolutionProxy.current().progressFirstOrCreate({ it is UseMoveEvolutionProgress && it.currentProgress().move == move }) { UseMoveEvolutionProgress() }
progress.updateProgress(UseMoveEvolutionProgress.Progress(move, progress.currentProgress().amount + 1))
val progress = pokemon.evolutionProxy.current()
.progressFirstOrCreate({ it is UseMoveEvolutionProgress && it.currentProgress().move == move }) { UseMoveEvolutionProgress() }
progress.updateProgress(
UseMoveEvolutionProgress.Progress(
move,
progress.currentProgress().amount + 1
)
)
}
}
@@ -104,7 +122,7 @@ class MoveInstruction(
val providers = mutableListOf<Any>(battle)
userPokemon.effectedPokemon.entity?.let { entity ->
runtime.environment.query.addFunction("user") { entity.asMostSpecificMoLangValue()}
runtime.environment.query.addFunction("user") { entity.asMostSpecificMoLangValue() }
UsersProvider(entity)
}?.let(providers::add)
@@ -128,6 +146,24 @@ class MoveInstruction(
level = battle.players.firstOrNull()?.level()
)
if (isWildTeleport(battle)) {
var teleportSuccess = false
val teleportingEntity = userPokemon.originalPokemon.entity
if (teleportingEntity != null) {
teleportSuccess = tryTeleport(battle.players.firstOrNull()?.level() as ServerLevel, teleportingEntity, 10, 30, 32)
}
if (teleportSuccess){
battle.ended = true
battle.dispatchWaiting(1.0F) {
battle.actors.filterIsInstance<EntityBackedBattleActor<*>>().mapNotNull { it.entity }
.forEach { it.sendSystemMessage(battleLang("wild_flee", pokemonName).yellow()) }
battle.end()
}
}
}
val subsequentInstructions = instructionSet.findInstructionsCausedBy(this)
val missedTargets = subsequentInstructions.filterIsInstance<MissInstruction>().mapNotNull { it.target }
val hitCountInstruction = subsequentInstructions.filterIsInstance<HitCountInstruction>().firstOrNull()
@@ -141,7 +177,8 @@ class MoveInstruction(
}
}
val hurtTargets = subsequentInstructions.filterIsInstance<DamageInstruction>().mapNotNull { it.expectedTarget }
val hurtTargets =
subsequentInstructions.filterIsInstance<DamageInstruction>().mapNotNull { it.expectedTarget }
runtime.environment.query.addFunction("hurt") { params ->
if (params.params.size == 0) {
return@addFunction DoubleValue(hurtTargets.isNotEmpty())
@@ -164,8 +201,52 @@ class MoveInstruction(
return@dispatch UntilDispatch { "effects" !in holds }.andThen {
val userPokemonId = userPokemon.entity?.uuid ?: return@andThen
val targets = hurtTargets.mapNotNull { it.entity }
userPokemonId.let { id -> targets.forEach { it.brain.setMemory(CobblemonMemories.TARGETED_BATTLE_POKEMON, id) } }
userPokemonId.let { id ->
targets.forEach {
it.brain.setMemory(
CobblemonMemories.TARGETED_BATTLE_POKEMON,
id
)
}
}
}
}
}
fun tryTeleport(
level: ServerLevel,
pokemon: PokemonEntity,
minRadius: Int,
maxRadius: Int,
attempts: Int
): Boolean {
val origin = pokemon.blockPosition()
val rng = level.random
var success = false
for (i in 0 until attempts) {
val dist = rng.nextInt(minRadius, maxRadius + 1)
val angle = rng.nextDouble() * (PI * 2.0)
val dx = (cos(angle) * dist)
val dz = (sin(angle) * dist)
val x = (origin.x + dx)
val yOffsetMax = rng.nextInt(5, 15)
val z = (origin.z + dz)
val yOffsets = (0..yOffsetMax).flatMap { listOf(it, -it) }.distinct()
//iterate over possible y distance, tries least vertical movement first
for (yOffset in yOffsets){
success = pokemon.randomTeleport(x, pokemon.position().y + yOffset, z, false)
if (success) {
level.playSoundServer(origin.toVec3d(), SoundEvents.PLAYER_TELEPORT)
return true
}
}
}
return false
}
fun isWildTeleport(battle: PokemonBattle) : Boolean {
return move.name == "teleport" && message.battlePokemon(0, battle)?.originalPokemon?.isWild() ?: false
}
}
@@ -9,30 +9,63 @@
package com.cobblemon.mod.common.client.render.player
import com.bedrockk.molang.runtime.value.DoubleValue
import com.cobblemon.mod.common.api.riding.RidingAnimation
import com.cobblemon.mod.common.client.entity.PokemonClientDelegate
import com.cobblemon.mod.common.client.render.models.blockbench.bedrock.animation.BedrockAnimationRepository
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.mojang.blaze3d.vertex.PoseStack
import com.mojang.math.Axis
import net.minecraft.client.model.AnimationUtils
import net.minecraft.client.model.HumanoidModel
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.client.player.AbstractClientPlayer
import net.minecraft.world.InteractionHand
import net.minecraft.world.entity.HumanoidArm
import net.minecraft.world.phys.Vec3
/**
* @author landonjw
*/
object MountedPlayerRenderer {
@JvmField
var shouldApplyRootAnimation = false
@JvmField
val relevantPartsByName = mutableMapOf(
"body" to ModelPart(emptyList(), emptyMap()),
)
val defaultAnimations = listOf(
RidingAnimation(
fileName = "player",
animationName = "animation.player.default_ride_pose"
)
)
fun animate(
model: HumanoidModel<AbstractClientPlayer>,
pokemonEntity: PokemonEntity,
player: AbstractClientPlayer,
relevantPartsByName: Map<String, ModelPart>,
headYaw: Float,
headPitch: Float,
ageInTicks: Float,
limbSwing: Float,
limbSwingAmount: Float
) {
// We need to reset the root because it's a synthetic part, Minecraft won't do this for us.
val root = relevantPartsByName["body"] ?: return
root.x = 0F
root.y = 0F
root.z = 0F
root.xRot = 0F
root.yRot = 0F
root.zRot = 0F
val seatIndex = pokemonEntity.passengers.indexOf(player).takeIf { it != -1 && it < pokemonEntity.seats.size } ?: return
val seat = pokemonEntity.seats[seatIndex]
val animations = seat.poseAnimations?.firstOrNull { it.poseTypes.isEmpty() || it.poseTypes.contains(pokemonEntity.getCurrentPoseType()) }?.animations
?: return
val animations = seat.poseAnimations
?.firstOrNull { it.poseTypes.isEmpty() || it.poseTypes.contains(pokemonEntity.getCurrentPoseType()) }?.animations
?: defaultAnimations
val state = pokemonEntity.delegate as PokemonClientDelegate
relevantPartsByName.values.forEach {
@@ -44,6 +77,8 @@ object MountedPlayerRenderer {
state.runtime.environment.setSimpleVariable("age_in_ticks", DoubleValue(ageInTicks.toDouble()))
state.runtime.environment.setSimpleVariable("limb_swing", DoubleValue(limbSwing.toDouble()))
state.runtime.environment.setSimpleVariable("limb_swing_amount", DoubleValue(limbSwingAmount.toDouble()))
state.runtime.environment.setSimpleVariable("head_yaw", DoubleValue(headYaw.toDouble()))
state.runtime.environment.setSimpleVariable("head_pitch", DoubleValue(headPitch.toDouble()))
// TODO add the q.player reference, requires a cached thing or something on the client idk
@@ -61,5 +96,59 @@ object MountedPlayerRenderer {
intensity = 1F
)
}
applyRegularAnimation(model, player, ageInTicks)
}
/**
* This does what Minecraft would typically do for various additional body part
* rendering thingies. It's largely copy paste.
*/
fun applyRegularAnimation(
model: HumanoidModel<AbstractClientPlayer>,
player: AbstractClientPlayer,
ageInTicks: Float
) {
val rightHanded = player.mainArm == HumanoidArm.RIGHT
if (player.isUsingItem) {
val usingMainHand = player.usedItemHand == InteractionHand.MAIN_HAND
if (usingMainHand == rightHanded) {
model.poseRightArm(player)
} else {
model.poseLeftArm(player)
}
} else {
val offHandIsTwoHanded: Boolean = if (rightHanded) model.leftArmPose.isTwoHanded else model.rightArmPose.isTwoHanded
if (rightHanded != offHandIsTwoHanded) {
model.poseLeftArm(player)
model.poseRightArm(player)
} else {
model.poseRightArm(player)
model.poseLeftArm(player)
}
}
model.setupAttackAnimation(player, ageInTicks)
if (model.rightArmPose != HumanoidModel.ArmPose.SPYGLASS) {
AnimationUtils.bobModelPart(model.rightArm, ageInTicks, 1.0F);
}
if (model.leftArmPose != HumanoidModel.ArmPose.SPYGLASS) {
AnimationUtils.bobModelPart(model.leftArm, ageInTicks, -1.0F);
}
model.hat.copyFrom(model.head)
}
const val RIDING_SITTING_OFFSET = -10.0
fun animateRoot(stack: PoseStack) {
val root = relevantPartsByName["body"] ?: return
val rootOffset = Vec3(root.x.toDouble(), root.y.toDouble() + RIDING_SITTING_OFFSET, root.z.toDouble()).scale(1/16.0)
val rotation = Vec3(root.xRot.toDouble(), root.yRot.toDouble(), root.zRot.toDouble())
stack.mulPose(Axis.ZP.rotation(rotation.z.toFloat()))
stack.mulPose(Axis.YP.rotation(rotation.y.toFloat()))
stack.mulPose(Axis.XP.rotation(rotation.x.toFloat()))
stack.translate(rootOffset.x.toFloat(), rootOffset.y.toFloat(), rootOffset.z.toFloat())
}
}
@@ -9,6 +9,7 @@
package com.cobblemon.mod.common.command
import com.cobblemon.mod.common.api.abilities.Abilities
import com.cobblemon.mod.common.api.item.HeldItems
import com.cobblemon.mod.common.api.moves.Moves
import com.cobblemon.mod.common.api.pokemon.PokemonSpecies
import com.cobblemon.mod.common.battles.BagItems
@@ -36,7 +37,7 @@ object ReloadShowdownCommand {
ShowdownService.service.resetAllRegistries()
ShowdownService.service.sendRegistryData(Abilities.abilityScripts, "ability")
ShowdownService.service.sendRegistryData(BagItems.bagItemsScripts, "bagItem")
// TODO: ShowdownService.service.sendRegistryData(notYetImplemented, "heldItem")
ShowdownService.service.sendRegistryData(HeldItems.heldItemsScripts, "heldItem")
ShowdownService.service.sendRegistryData(Moves.moveScripts, "move")
ShowdownService.service.sendRegistryData(PokemonSpecies.allShowdownSpecies(), "species")
context.source.sendSystemMessage(Component.literal("Reloaded showdown"))
@@ -29,6 +29,7 @@ import com.cobblemon.mod.common.api.fishing.PokeRods
import com.cobblemon.mod.common.api.fossil.Fossils
import com.cobblemon.mod.common.api.fossil.NaturalMaterials
import com.cobblemon.mod.common.api.interaction.PokemonInteractions
import com.cobblemon.mod.common.api.item.HeldItems
import com.cobblemon.mod.common.api.mark.Marks
import com.cobblemon.mod.common.api.moves.Moves
import com.cobblemon.mod.common.api.moves.animations.ActionEffects
@@ -87,6 +88,7 @@ object CobblemonDataProvider : DataProvider {
this.register(CobblemonSpawnRules)
this.register(CobblemonMechanics)
this.register(BagItems)
this.register(HeldItems)
this.register(Dialogues)
this.register(NaturalMaterials)
this.register(Fossils)
@@ -15,9 +15,11 @@ import com.google.common.collect.ImmutableMap
import java.util.UUID
import kotlin.math.pow
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.MoverType
import net.minecraft.world.entity.ai.behavior.Behavior
import net.minecraft.world.entity.ai.memory.MemoryModuleType
import net.minecraft.world.entity.ai.memory.MemoryStatus
import net.minecraft.world.entity.ai.memory.WalkTarget
import net.minecraft.world.phys.Vec3
class FollowHerdLeaderTask : Behavior<PokemonEntity>(
@@ -67,8 +69,14 @@ class FollowHerdLeaderTask : Behavior<PokemonEntity>(
entity.brain.eraseMemory(CobblemonMemories.HERD_LEADER) // We can't go where this guy's going
return
}
entity.setFlying(true)
entity.addDeltaMovement(Vec3(0.0, 2.0, 0.0))
entity.brain.setMemory(
MemoryModuleType.WALK_TARGET,
CobblemonWalkTarget(
pos = leader.blockPosition(),
speedModifier = 0.3F,
completionRange = closeEnough.toInt()
)
)
} else if (leaderMoveControl.banking) {
if (leader.isInLiquid && !entity.isInLiquid) {
// We should get into water asap so we can mimic the banking
@@ -10,6 +10,7 @@ package com.cobblemon.mod.common.entity.ai
import com.cobblemon.mod.common.entity.OmniPathingEntity
import com.cobblemon.mod.common.pokemon.ai.OmniPathNodeMaker
import com.cobblemon.mod.common.util.deleteNode
import com.cobblemon.mod.common.util.getWaterAndLavaIn
import com.cobblemon.mod.common.util.toVec3d
import com.google.common.collect.ImmutableSet
@@ -269,6 +270,28 @@ class OmniPathNavigation(val world: Level, val entity: Mob) : GroundPathNavigati
override fun trimPath() {
super.trimPath()
val path = getPath() ?: return
// What's there to trim
if (path.nodeCount < 2) {
return
}
/*
* Sometimes entities spin in place at the start of their path
* because of rounding stuff (I think) so try to detect those
* cases and nix the first node so they just move forward.
*/
val introNode = path.getNode(0)
val subsequentNode = path.getNode(1)
val mobMiddle = entity.position()
val toIntroNode = introNode.asVec3().add(0.5, 0.0, 0.5).subtract(mobMiddle)
val toSubsequentNode = subsequentNode.asVec3().add(0.5, 0.0, 0.5).subtract(mobMiddle)
// if the first two nodes are pointing in opposite directions (>90 degrees) from the entity or the second node is closer, trim the first node
if (toIntroNode.dot(toSubsequentNode) < 0 || toIntroNode.lengthSqr() > toSubsequentNode.lengthSqr()) {
path.deleteNode(0)
}
var i = 2
// Tries to skip some nodes that are all lined up
@@ -96,6 +96,7 @@ import com.cobblemon.mod.common.net.messages.client.sound.UnvalidatedPlaySoundS2
import com.cobblemon.mod.common.net.messages.client.spawn.SpawnPokemonPacket
import com.cobblemon.mod.common.net.messages.client.ui.InteractPokemonUIPacket
import com.cobblemon.mod.common.net.messages.server.behaviour.DamageOnCollisionPacket
import com.cobblemon.mod.common.net.messages.server.riding.DismountPokemonPacket
import com.cobblemon.mod.common.net.serverhandling.storage.SendOutPokemonHandler.SEND_OUT_DURATION
import com.cobblemon.mod.common.pokeball.PokeBall
import com.cobblemon.mod.common.pokedex.scanner.PokedexEntityData
@@ -123,6 +124,7 @@ import java.util.UUID
import java.util.concurrent.CompletableFuture
import kotlin.math.PI
import kotlin.math.ceil
import kotlin.math.max
import kotlin.math.min
import net.minecraft.core.BlockPos
import net.minecraft.core.component.DataComponents
@@ -174,6 +176,7 @@ import net.minecraft.world.item.Items
import net.minecraft.world.level.Level
import net.minecraft.world.level.LightLayer
import net.minecraft.world.level.block.SuspiciousEffectHolder
import net.minecraft.world.level.block.state.BlockState
import net.minecraft.world.level.gameevent.GameEvent
import net.minecraft.world.level.material.EmptyFluid
import net.minecraft.world.level.material.FluidState
@@ -1795,7 +1798,7 @@ open class PokemonEntity(
for (passenger in this.passengers) {
passenger.deltaMovement = this.deltaMovement
}
this.ejectPassengers()
DismountPokemonPacket().sendToServer()
// Reset ride velocity
state.rideVelocity.set(state.rideVelocity.get().multiply(0.0, 1.0, 0.0))
@@ -1862,6 +1865,13 @@ open class PokemonEntity(
fun isFalling() =
this.fallDistance > 0 && this.level().getBlockState(this.blockPosition().below()).isAir && !this.isFlying()
override fun checkFallDamage(y: Double, onGround: Boolean, state: BlockState, pos: BlockPos) {
super.checkFallDamage(y, onGround, state, pos)
if (isFlying() && this.passengers.isEmpty() && y < 0.0 && !onGround) {
fallDistance = 0F // Prevent fall damage after flying without a rider
}
}
override fun getCurrentPoseType(): PoseType = this.entityData.get(POSE_TYPE)
/**
@@ -2034,10 +2044,6 @@ open class PokemonEntity(
}
override fun canBeLeashed() = true
// override fun canBeLeashedBy(player: Player): Boolean {
// return this.ownerUuid == null || this.ownerUuid == player.uuid
// }
override fun setLeashedTo(entity: Entity, bl: Boolean) {
super.setLeashedTo(entity, bl)
if (this.ownerUUID != null && this.ownerUUID != entity.uuid) {
@@ -2045,8 +2051,8 @@ open class PokemonEntity(
}
}
/** Retrieves the battle theme associated with this Pokemon's Species/Form, or the default PVW theme if not found. */
fun getBattleTheme() = this.form.battleTheme ?: CobblemonSounds.PVW_BATTLE.location
/** Retrieves the battle theme associated with this Pokemon's Species/Form which falls back to the default PVW theme if not found. */
fun getBattleTheme() = this.form.battleTheme
/**
* A utility method to instance a [Pokemon] aware if the [world] is client sided or not.
@@ -2061,21 +2067,22 @@ open class PokemonEntity(
// Takes in a requested stat type with a base minimum and base maximum and returns the interpolated
// stat based on the boost of that pokemons stat
fun getRideStat(stat: RidingStat, style: RidingStyle, baseMin: Double, baseMax: Double): Double {
//TODO: Change from static zero boost once aprijuice is implemented.
if (rideStatOverrides[style] != null && rideStatOverrides[style]!![stat] != null) {
return (((baseMax - baseMin) / 100) * rideStatOverrides[style]!![stat]!!) + baseMin
fun getRideStat(rideStat: RidingStat, style: RidingStyle, baseMin: Double, baseMax: Double): Double {
if (rideStatOverrides[style] != null && rideStatOverrides[style]!![rideStat] != null) {
return (((baseMax - baseMin) / 100) * rideStatOverrides[style]!![rideStat]!!) + baseMin
}
val stat = this.rideProp.behaviours?.get(style)?.calculate(stat, 0) ?: return 0.0
val stat = this.rideProp.behaviours?.get(style)?.calculate(rideStat, entityData.get(RIDE_BOOSTS)[rideStat] ?: 0F) ?: return 0.0
val statVal = (((baseMax - baseMin) / 100) * stat) + baseMin
return statVal
// Cap the minimum value at a very small value to prevent control inversions and other unexpected behaviour in
// the ride controllers when using negative values
return max(statVal, 1e-6)
}
fun getRawRideStat(stat: RidingStat, style: RidingStyle): Double {
if (rideStatOverrides[style] != null && rideStatOverrides[style]!![stat] != null) {
return rideStatOverrides[style]!![stat]!!
}
return this.rideProp.behaviours?.get(style)?.calculate(stat, 0)?.toDouble() ?: 0.0
return this.rideProp.behaviours?.get(style)?.calculate(stat, 0F)?.toDouble() ?: 0.0
}
internal fun overrideRideStat(style: RidingStyle, stat: RidingStat, value: Double) {
@@ -1,26 +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.item.components
import com.mojang.serialization.Codec
import io.netty.buffer.ByteBuf
import net.minecraft.network.codec.ByteBufCodecs
import net.minecraft.network.codec.StreamCodec
import net.minecraft.resources.ResourceLocation
data class HeldItemCapableComponent(val item: ResourceLocation) {
companion object {
val CODEC: Codec<HeldItemCapableComponent> = ResourceLocation.CODEC.xmap(
{ HeldItemCapableComponent(it) },
{ it.item }
)
val PACKET_CODEC: StreamCodec<ByteBuf, HeldItemCapableComponent> = ByteBufCodecs.fromCodec(CODEC)
}
}
@@ -0,0 +1,42 @@
/*
* 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.item.components
import com.mojang.serialization.Codec
import com.mojang.serialization.codecs.RecordCodecBuilder
import io.netty.buffer.ByteBuf
import net.minecraft.network.codec.ByteBufCodecs
import net.minecraft.network.codec.StreamCodec
import net.minecraft.resources.ResourceLocation
data class HeldItemEffectComponent(val showdownId: String, val consumed: Boolean = false) {
companion object {
val CODEC: Codec<HeldItemEffectComponent> = RecordCodecBuilder.create { builder ->
builder.group(
Codec.STRING.fieldOf("showdownId").forGetter { it.showdownId },
Codec.BOOL.fieldOf("consumed").forGetter { it.consumed },
).apply(builder, ::HeldItemEffectComponent)
}
val PACKET_CODEC: StreamCodec<ByteBuf, HeldItemEffectComponent> = ByteBufCodecs.fromCodec(CODEC)
}
override fun toString(): String { return showdownId }
override fun equals(other: Any?): Boolean =
other is HeldItemEffectComponent
&& this.showdownId == other.showdownId
&& this.consumed == other.consumed
override fun hashCode(): Int {
var result = consumed.hashCode()
result = 31 * result + showdownId.hashCode()
return result
}
}
@@ -12,6 +12,7 @@ import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.api.mark.Marks
import com.cobblemon.mod.common.api.pokeball.PokeBalls
import com.cobblemon.mod.common.api.pokemon.PokemonSpecies
import com.cobblemon.mod.common.api.riding.stats.RidingStat
import com.cobblemon.mod.common.entity.PlatformType
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
@@ -26,31 +27,32 @@ import net.minecraft.network.protocol.game.ClientboundAddEntityPacket
import net.minecraft.resources.ResourceLocation
class SpawnPokemonPacket(
var ownerId: UUID?,
var pokemonUUID: UUID,
var scaleModifier: Float,
var speciesId: ResourceLocation,
var gender: Gender,
var shiny: Boolean,
var formName: String,
var aspects: Set<String>,
var battleId: UUID?,
var phasingTargetId: Int,
var beamMode: Byte,
var platform: PlatformType,
var nickname: MutableComponent?,
var mark: ResourceLocation?,
var labelLevel: Int,
var poseType: PoseType,
var unbattlable: Boolean,
var hideLabel: Boolean,
var caughtBall: ResourceLocation,
var spawnYaw: Float,
var friendship: Int,
var freezeFrame: Float,
var passengers: IntArray,
var tickSpawned: Int,
vanillaSpawnPacket: ClientboundAddEntityPacket,
var ownerId: UUID?,
var pokemonUUID: UUID,
var scaleModifier: Float,
var speciesId: ResourceLocation,
var gender: Gender,
var shiny: Boolean,
var formName: String,
var aspects: Set<String>,
var battleId: UUID?,
var phasingTargetId: Int,
var beamMode: Byte,
var platform: PlatformType,
var nickname: MutableComponent?,
var mark: ResourceLocation?,
var labelLevel: Int,
var poseType: PoseType,
var unbattlable: Boolean,
var hideLabel: Boolean,
var caughtBall: ResourceLocation,
var spawnYaw: Float,
var friendship: Int,
var freezeFrame: Float,
var passengers: IntArray,
var tickSpawned: Int,
var rideBoosts: Map<RidingStat, Float>,
vanillaSpawnPacket: ClientboundAddEntityPacket,
) : SpawnExtraDataEntityPacket<SpawnPokemonPacket, PokemonEntity>(vanillaSpawnPacket) {
override val id: ResourceLocation = ID
@@ -80,6 +82,7 @@ class SpawnPokemonPacket(
entity.entityData.get(PokemonEntity.FREEZE_FRAME),
entity.passengers.map { it.id }.toIntArray(),
entity.tickCount,
entity.entityData.get(PokemonEntity.RIDE_BOOSTS),
vanillaSpawnPacket
)
@@ -108,6 +111,11 @@ class SpawnPokemonPacket(
buffer.writeFloat(this.freezeFrame)
buffer.writeVarIntArray(this.passengers)
buffer.writeInt(this.tickSpawned)
buffer.writeMap(
rideBoosts,
{ _, stat -> buffer.writeEnumConstant(stat) },
{ _, value -> buffer.writeFloat(value) }
)
}
override fun applyData(entity: PokemonEntity, level: ClientLevel) {
@@ -137,6 +145,7 @@ class SpawnPokemonPacket(
entity.entityData.set(PokemonEntity.SPAWN_DIRECTION, spawnYaw)
entity.entityData.set(PokemonEntity.FRIENDSHIP, friendship)
entity.entityData.set(PokemonEntity.FREEZE_FRAME, freezeFrame)
entity.entityData.set(PokemonEntity.RIDE_BOOSTS, rideBoosts)
entity.ejectPassengers()
passengers.forEach {
@@ -176,9 +185,13 @@ class SpawnPokemonPacket(
val freezeFrame = buffer.readFloat()
val passengers = buffer.readVarIntArray()
val tickSpawned = buffer.readInt()
val rideBoosts = buffer.readMap(
{ buffer.readEnumConstant(RidingStat::class.java) },
{ buffer.readFloat() }
)
val vanillaPacket = decodeVanillaPacket(buffer)
return SpawnPokemonPacket(ownerId, pokemonUUID, scaleModifier, speciesId, gender, shiny, formName, aspects, battleId, phasingTargetId, beamModeEmitter, platform, nickname, mark, labelLevel, poseType, unbattlable, hideLabel, caughtBall, spawnAngle, friendship, freezeFrame, passengers, tickSpawned, vanillaPacket)
return SpawnPokemonPacket(ownerId, pokemonUUID, scaleModifier, speciesId, gender, shiny, formName, aspects, battleId, phasingTargetId, beamModeEmitter, platform, nickname, mark, labelLevel, poseType, unbattlable, hideLabel, caughtBall, spawnAngle, friendship, freezeFrame, passengers, tickSpawned, rideBoosts, vanillaPacket)
}
}
@@ -1821,8 +1821,13 @@ open class Pokemon : ShowdownIdentifiable {
moveSet.update()
}
/**
* Gets the largest conceivable boost that can be granted to a stat. This is effectively the widest range
* from min to max of this stat for any of the styles. For example, if ACCELERATION is from 10 to 40 in one
* style and 20 to 60 in another, the max ride boost is 40.
*/
fun getMaxRideBoost(stat: RidingStat): Int {
return form.riding.behaviours?.maxOf { it.value.stats[stat]?.endInclusive ?: 0 } ?: 0
return form.riding.behaviours?.maxOf { it.value.stats[stat]?.let { it.last - it.first } ?: 0 } ?: 0
}
fun getRideBoost(stat: RidingStat): Float {
@@ -10,9 +10,9 @@ package com.cobblemon.mod.common.pokemon.helditem
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonItemComponents
import com.cobblemon.mod.common.api.item.HeldItems
import com.cobblemon.mod.common.api.pokemon.helditem.HeldItemManager
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.battles.runner.ShowdownService
import com.google.common.collect.HashBiMap
import net.minecraft.core.registries.BuiltInRegistries
import net.minecraft.network.chat.Component
@@ -32,17 +32,11 @@ abstract class BaseCobblemonHeldItemManager : HeldItemManager {
internal open fun load() {
this.itemIds.clear()
val itemsJson = ShowdownService.service.getRegistryData("heldItem")
val showdownIds = hashSetOf<String>()
for (i in 0 until itemsJson.size()) {
val jsItem = itemsJson[i].asJsonObject
showdownIds += jsItem.get("id").asString
}
BuiltInRegistries.ITEM.forEach { item ->
val identifier = BuiltInRegistries.ITEM.getKey(item)
if (identifier.namespace == Cobblemon.MODID) {
val formattedPath = identifier.path.replace("_", "")
if (showdownIds.contains(formattedPath)) {
if (HeldItems.showdownItems.contains(formattedPath)) {
this.itemIds[formattedPath] = item
}
}
@@ -51,9 +45,9 @@ abstract class BaseCobblemonHeldItemManager : HeldItemManager {
override fun showdownId(pokemon: BattlePokemon): String? {
val item = pokemon.effectedPokemon.heldItemNoCopy()
val identifier = item.get(CobblemonItemComponents.HELD_ITEM_REP)?.item ?: BuiltInRegistries.ITEM.getKey(item.item)
val identifier = item.get(CobblemonItemComponents.HELD_ITEM_EFFECT)?.showdownId ?: BuiltInRegistries.ITEM.getKey(item.item).path
val formattedPath = identifier.path.replace("_", "")
val formattedPath = identifier.replace("_", "")
if (this.itemIds.containsKey(formattedPath)) {
return formattedPath
}
@@ -9,6 +9,7 @@
package com.cobblemon.mod.common.pokemon.helditem
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonItemComponents.HELD_ITEM_EFFECT
import com.cobblemon.mod.common.api.battles.interpreter.BattleMessage
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
import com.cobblemon.mod.common.api.pokemon.helditem.HeldItemManager
@@ -60,9 +61,12 @@ object CobblemonHeldItemManager : BaseCobblemonHeldItemManager() {
override fun showdownId(pokemon: BattlePokemon): String? {
val itemStack = pokemon.effectedPokemon.heldItemNoCopy()
if (remaps.containsKey(itemStack.item)) {
if (itemStack.has(HELD_ITEM_EFFECT))
return itemStack.get(HELD_ITEM_EFFECT)!!.showdownId
if (remaps.containsKey(itemStack.item))
return remaps[itemStack.item]
}
for (remap in stackRemaps) {
val id = remap.apply(itemStack)
@@ -80,9 +84,11 @@ object CobblemonHeldItemManager : BaseCobblemonHeldItemManager() {
}
fun showdownId(itemStack: ItemStack): String? {
if (remaps.containsKey(itemStack.item)) {
if (itemStack.has(HELD_ITEM_EFFECT))
return itemStack.get(HELD_ITEM_EFFECT)?.showdownId
if (remaps.containsKey(itemStack.item))
return remaps[itemStack.item]
}
for (remap in stackRemaps) {
val id = remap.apply(itemStack)
@@ -173,13 +179,18 @@ object CobblemonHeldItemManager : BaseCobblemonHeldItemManager() {
}
override fun shouldConsumeItem(pokemon: BattlePokemon, battle: PokemonBattle, showdownId: String): Boolean {
val itemStack = pokemon.effectedPokemon.heldItem()
if (itemStack.has(HELD_ITEM_EFFECT))
return itemStack.get(HELD_ITEM_EFFECT)!!.consumed
// In 3rd party and the future battles might have multiple types, give it a priority from pvp down to wild.
val tag = when {
battle.isPvP -> CobblemonItemTags.CONSUMED_IN_PVP_BATTLE
battle.isPvN -> CobblemonItemTags.CONSUMED_IN_NPC_BATTLE
else -> CobblemonItemTags.CONSUMED_IN_WILD_BATTLE
}
return pokemon.effectedPokemon.heldItem().`is`(tag)
return itemStack.`is`(tag)
}
/**
@@ -0,0 +1,49 @@
{
"format_version": "1.8.0",
"animations": {
"animation.player.test_riding_pose": {
"loop": "hold_on_last_frame",
"bones": {
"body": {
"rotation": [22.5, 0, 0],
"position": [0, 6, 0]
},
"arm_right": {
"rotation": [-145.18392, -14.90835, "-20.3017894552"]
},
"leg_right": {
"rotation": [47.48933, -18.97397, 16.56855]
},
"arm_left": {
"rotation": [-145.18392, -14.90835, 20.30179]
},
"leg_left": {
"rotation": [48.65802, 13.31791, -11.45696]
}
}
},
"animation.player.default_ride_pose": {
"loop": "hold_on_last_frame",
"bones": {
"body": {
"position": [0, -10, 0]
},
"head": {
"rotation": ["v.head_pitch", "v.head_yaw", 0]
},
"arm_right": {
"rotation": [-40, 0, 0]
},
"arm_left": {
"rotation": [-40, 0, 0]
},
"leg_right": {
"rotation": [-81, 18, 4.5]
},
"leg_left": {
"rotation": [-81, -18, -4.5]
}
}
}
}
}
@@ -5,9 +5,10 @@
"loop": true,
"bones": {
"body": {
"position": [0, -9, 0]
"position": [0, -9, 0],
"rotation": [25, 0, 0]
},
"torso": {
"_torso_disabled_because_it_cannot_be_reparented": {
"rotation": [25, 0, 0]
},
"arm_right": {
@@ -1,79 +1,15 @@
{
"format_version": "1.8.0",
"animations": {
"animation.dewgong.pose": {
"loop": true,
"bones": {
"body": {
"rotation": [0, 12.5, 0]
},
"tail": {
"rotation": [2.41492, 0.64686, -14.98637]
},
"tail2": {
"rotation": [34.97911, 1.05627, -2.26603]
},
"tail3": {
"rotation": [46.78082, -13.99545, -14.43276]
},
"tail4": {
"rotation": [7.5, 0, 0]
},
"tail6": {
"rotation": [30, 0, 0]
},
"chest": {
"rotation": [-32.5, 0, 0]
},
"neck": {
"rotation": [-52.52635, -1.5216, 1.98385]
},
"head": {
"rotation": [83.46987, -8.35694, -6.53013],
"position": [0.58854, -0.68263, -0.01172]
},
"flipper_left": {
"rotation": [32.28184, -14.8934, 25.70507],
"position": [0, -1.68678, 1.0746]
},
"flipper_left2": {
"rotation": [0, -15, -15]
},
"flipper_left3": {
"rotation": [0, 0, -37.5]
},
"flipper_right": {
"rotation": [99.40658, 28.75123, -7.23212],
"position": [0, -1.68678, 1.0746]
},
"flipper_right2": {
"rotation": [0, 0, 15]
},
"flipper_right3": {
"rotation": [0, 0, 37.5]
},
"tail5": {
"rotation": [27.5, 0, 0]
},
"eye_right": {
"position": [0.25, 0, 0]
},
"eye_highlight_left": {
"position": [0.25, 0, 0]
},
"eye_highlight_right": {
"position": [0.25, 0, 0]
}
}
},
"animation.dewgong.ground_idle": {
"loop": true,
"bones": {
"body": {
"rotation": [-5, 0, 0]
"rotation": ["-5+Math.cos((query.anim_time) * 90 * 2) * 1", 0, 0],
"position": [0, 0, "0+Math.cos((query.anim_time) * 90 * 2) * -0.3"]
},
"tail": {
"rotation": [-2.5, 0, 0]
"rotation": ["-2.5+Math.cos((query.anim_time) * 90 * 2) * -1", 0, 0]
},
"tail2": {
"rotation": [0, 0, 0]
@@ -88,16 +24,16 @@
"rotation": [5, 0, 0]
},
"chest": {
"rotation": [-32.5, 0, 0]
"rotation": ["-32.5+Math.cos((query.anim_time) * 90 * 2 - 45) * 0.5", 0, 0]
},
"neck": {
"rotation": [-50, 0, 0]
"rotation": ["-50+Math.cos((query.anim_time) * 90 * 2) * -1", 0, 0]
},
"head": {
"rotation": [85, 0, 0]
"rotation": ["85+Math.cos((query.anim_time) * 90 * 2 + 45) * 1", 0, 0]
},
"flipper_left": {
"rotation": [25.90134, -21.60983, 48.92416],
"rotation": [25.90134, -21.60983, "51.4242+Math.cos((query.anim_time) * 90 * 2) * -1"],
"position": [0, -1.68678, 1.0746]
},
"flipper_left2": {
@@ -107,7 +43,7 @@
"rotation": [0, 0, -37.5]
},
"flipper_right": {
"rotation": [25.90134, 21.60983, -48.92416],
"rotation": [25.90134, 21.60983, "-51.4242+Math.cos((query.anim_time) * 90 * 2) * 1"],
"position": [0, -1.68678, 1.0746]
},
"flipper_right2": {
@@ -117,7 +53,507 @@
"rotation": [0, 0, 37.5]
},
"torso": {
"rotation": [5, 0, 0]
"rotation": ["5+Math.cos((query.anim_time) * 90 * 2) * -0.5", 0, 0]
}
}
},
"animation.dewgong.ground_walk": {
"loop": true,
"animation_length": 1,
"bones": {
"body": {
"rotation": {
"0.0": [-5, 0, 0],
"0.1667": [-0.495, 0, 0],
"0.25": [0, 0, 0],
"0.3333": [-0.5, 0, 0],
"0.5": [-4.795, 0, 0],
"0.5417": [-5.4, 0, 0],
"0.6667": [-5, 0, 0]
},
"position": {
"0.0": [0, 0, "0+Math.cos((query.anim_time) * 90 * 4) * 3"],
"0.0833": [0, 0, "0+Math.cos((query.anim_time) * 90 * 4) * 3"],
"0.2083": [0, 1.36, "0+Math.cos((query.anim_time) * 90 * 4) * 3"],
"0.2917": [0, 1.845, "0+Math.cos((query.anim_time) * 90 * 4) * 3"],
"0.3333": [0, 2, "0+Math.cos((query.anim_time) * 90 * 4) * 3"],
"0.375": [0, 1.845, "0+Math.cos((query.anim_time) * 90 * 4) * 3"],
"0.4583": [0, 1.36, "0+Math.cos((query.anim_time) * 90 * 4) * 3"],
"0.5833": [0, 0, "0+Math.cos((query.anim_time) * 90 * 4) * 3"]
}
},
"tail": {
"rotation": {
"0.0": [5.775, 0, 0],
"0.1667": [-13.44, 0, 0],
"0.2083": [-15, 0, 0],
"0.5": [0, 0, 0],
"0.875": [7.5, 0, 0],
"1.0": [5.775, 0, 0]
}
},
"tail2": {
"rotation": {
"0.0": [15, 0, 0],
"0.1667": [0, 0, 0],
"0.5417": [0, 0, 0],
"0.6667": [-7.5, 0, 0],
"0.8333": [12.46, 0, 0],
"0.9167": [17.42, 0, 0],
"1.0": [15, 0, 0]
}
},
"tail3": {
"rotation": {
"0.0": [22.5, 0, 0],
"0.125": [34.5, 0, 0],
"0.2083": [17.5, 0, 0],
"0.3333": [-5, 0, 0],
"0.5417": [-5, 0, 0],
"0.6667": [0, 0, 0],
"0.75": [-22.5, 0, 0],
"1.0": [22.5, 0, 0]
}
},
"tail4": {
"rotation": {
"0.0": [25, 0, 0],
"0.125": [17.5, 0, 0],
"0.25": [-5.45, 0, 0],
"0.2917": [2.5, 0, 0],
"0.7083": [2.5, 0, 0],
"0.75": [-1.67, 0, 0],
"0.8333": [-25, 0, 0],
"1.0": [25, 0, 0]
}
},
"tail6": {
"rotation": {
"0.0": [-42.5, 0, 0],
"0.1667": [44.17, 0, 0],
"0.25": [42.5, 0, 0],
"0.2917": [2.5, 0, 0],
"0.3333": [2.5, 0, 0],
"0.75": [2.5, 0, 0],
"0.7917": [20, 0, 0],
"0.8333": [40, 0, 0],
"0.875": [-40, 0, 0],
"1.0": [-42.5, 0, 0]
}
},
"chest": {
"rotation": {
"0.0": [-32.5, 0, 0],
"0.0833": {
"pre": [-26.79, 0, 0],
"post": [-26.79, 0, 0],
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": [-22, 0, 0],
"lerp_mode": "catmullrom"
},
"0.3333": {
"post": [-18.575, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [-17.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5833": {
"post": [-21.6, 0, 0],
"lerp_mode": "catmullrom"
},
"0.6667": {
"post": [-29.47, 0, 0],
"lerp_mode": "catmullrom"
},
"0.7083": {
"post": [-33.695, 0, 0],
"lerp_mode": "catmullrom"
},
"0.7917": {
"post": [-38, 0, 0],
"lerp_mode": "catmullrom"
},
"0.875": {
"post": [-36.9, 0, 0],
"lerp_mode": "catmullrom"
},
"1.0": [-32.5, 0, 0]
}
},
"neck": {
"rotation": {
"0.0": [-50, 0, 0],
"0.1667": [-40, 0, 0],
"0.2917": [-37.575, 0, 0],
"0.5833": [-36.815, 0, 0],
"0.7083": [-39.345, 0, 0],
"0.8333": [-47.315, 0, 0],
"0.9167": [-49.585, 0, 0],
"1.0": [-50, 0, 0]
},
"position": {
"0.0": [0, 0, 0],
"0.1667": [0, 0, 1],
"0.6667": [0, 0, 1],
"1.0": [0, 0, 0]
}
},
"head": {
"rotation": {
"0.0": [85, 0, 0],
"0.1667": [62, 0, 0],
"0.2083": [60, 0, 0],
"0.4167": [55, 0, 0],
"0.5417": [57, 0, 0],
"0.7917": [79.5, 0, 0],
"0.9167": [84.175, 0, 0],
"1.0": [85, 0, 0]
}
},
"flipper_left": {
"rotation": {
"0.0": [70.90134, 0.89017, 78.92416],
"0.25": [17.15, -1.36, 58.92],
"0.2917": [13.11, -5.57, 54.92],
"0.4583": [-3.06, -22.4, 43.92],
"0.5": [-9.1, -26.61, 43.92],
"0.625": [16.53, -12.375, 38.315],
"0.6667": [22.57, -3.065, 36.275],
"0.75": [34.65, 4.64, 35.195],
"0.9167": [58.82, 6.785, 50.56],
"1.0": [70.90134, 0.89017, 78.92416]
},
"position": [0, -1.68678, 1.0746]
},
"flipper_left2": {
"rotation": {
"0.0": [0, 0, -42.5],
"0.0417": [0, 0, -26.875],
"0.0833": [0, 0, -40],
"0.125": [0, 0, -48.13],
"0.1667": [0, 0, -51.25],
"0.25": [0, 0, -42.5],
"0.375": [0, 0, -29.25],
"0.5": [0, 0, -20],
"0.5417": [0, 0, -18.75],
"0.5833": [0, 0, -32.5],
"0.7917": [0, 0, -42.5],
"1.0": [0, 0, -42.5]
}
},
"flipper_left3": {
"rotation": {
"0.0": [0, 0, -70],
"0.0833": [0, 0, -22.5],
"0.1667": [0, 0, -11.67],
"0.2083": [0, 0, -16.25],
"0.5": [0, 0, -25],
"0.5417": [0, 0, -25.83],
"0.625": [0, 0, 20],
"0.7917": [0, 0, -47.5],
"1.0": [0, 0, -70]
}
},
"flipper_right": {
"rotation": {
"0.0": [70.90134, -0.89017, -78.92416],
"0.25": [17.15, 1.36, -58.92],
"0.2917": [13.11, 5.57, -54.92],
"0.4583": [-3.06, 22.4, -43.92],
"0.5": [-9.1, 26.61, -43.92],
"0.625": [16.53, 12.375, -38.315],
"0.6667": [22.57, 3.065, -36.275],
"0.75": [34.65, -4.64, -35.195],
"0.9167": [58.82, -6.785, -50.56],
"1.0": [70.90134, -0.89017, -78.92416]
},
"position": [0, -1.68678, 1.0746]
},
"flipper_right2": {
"rotation": {
"0.0": [0, 0, 42.5],
"0.0417": [0, 0, 26.875],
"0.0833": [0, 0, 40],
"0.125": [0, 0, 48.13],
"0.1667": [0, 0, 51.25],
"0.25": [0, 0, 42.5],
"0.375": [0, 0, 29.25],
"0.5": [0, 0, 20],
"0.5417": [0, 0, 18.75],
"0.5833": [0, 0, 32.5],
"0.7917": [0, 0, 42.5],
"1.0": [0, 0, 42.5]
}
},
"flipper_right3": {
"rotation": {
"0.0": [0, 0, 70],
"0.0833": [0, 0, 22.5],
"0.1667": [0, 0, 11.67],
"0.2083": [0, 0, 16.25],
"0.5": [0, 0, 25],
"0.5417": [0, 0, 25.83],
"0.625": [0, 0, -20],
"0.7917": [0, 0, 47.5],
"1.0": [0, 0, 70]
}
},
"torso": {
"rotation": {
"0.0": [4.6, 0, 0],
"0.0417": [6.03, 0, 0],
"0.125": [8.44, 0, 0],
"0.2917": {
"pre": [9.6, 0, 0],
"post": [9.6, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5833": {
"post": [8.35, 0, 0],
"lerp_mode": "catmullrom"
},
"0.7917": {
"post": [-1.9, 0, 0],
"lerp_mode": "catmullrom"
},
"0.9583": [3.13, 0, 0],
"1.0": [4.6, 0, 0]
}
},
"tail5": {
"rotation": {
"0.0": [-6.95, 0, 0],
"0.0833": [23.83, 0, 0],
"0.2083": [32.5, 0, 0],
"0.2917": [0, 0, 0],
"0.3333": [7.5, 0, 0],
"0.5417": [5, 0, 0],
"0.6667": [5, 0, 0],
"0.7083": [10, 0, 0],
"0.75": [22.5, 0, 0],
"0.7917": [1.25, 0, 0],
"0.8333": [-22.5, 0, 0],
"1.0": [-6.95, 0, 0]
}
},
"jaw": {
"rotation": {
"0.0833": [0, 0, 0],
"0.2083": [25.75, 0, 0],
"0.2917": [32.24, 0, 0],
"0.4583": [32.5, 0, 0],
"0.7083": [0, 0, 0]
}
}
}
},
"animation.dewgong.water_idle": {
"loop": true,
"bones": {
"body": {
"rotation": ["-5+Math.cos((query.anim_time) * 90 * 2 - 90) * -1", 0, 0],
"position": [0, "0+Math.cos((query.anim_time) * 90 * 2) * 1", 0]
},
"tail": {
"rotation": ["-2.5+Math.cos((query.anim_time) * 90 * 2 - 150) * 2", 0, 0]
},
"tail2": {
"rotation": ["-5+Math.cos((query.anim_time) * 90 * 2 - 210) * 2", 0, 0]
},
"tail3": {
"rotation": ["5+Math.cos((query.anim_time) * 90 * 2 - 270) * 3", 0, 0]
},
"tail4": {
"rotation": ["5+Math.cos((query.anim_time) * 90 * 2 - 300) * 3", 0, 0]
},
"tail6": {
"rotation": ["5+Math.cos((query.anim_time) * 90 * 2 - 450) * 12", 0, 0]
},
"chest": {
"rotation": ["5+Math.cos((query.anim_time) * 90 * 2 - 150) * -1", 0, 0],
"position": [0, 0, 0.25]
},
"neck": {
"rotation": ["-50+Math.cos((query.anim_time) * 90 * 2 - 90) * 1", 0, 0]
},
"head": {
"rotation": ["52.5+Math.cos((query.anim_time) * 90 * 2 - 90) * 1", 0, 0],
"position": [0, 0, 1]
},
"flipper_left": {
"rotation": [0, -12.5, "12.5+Math.cos((query.anim_time) * 90 * 2 - 90) * -4"],
"position": [0, -1.68678, 1.0746]
},
"flipper_left2": {
"rotation": [0, 0, "10+Math.cos((query.anim_time) * 90 * 2 - 150) * -7"]
},
"flipper_left3": {
"rotation": [0, 0, "10+Math.cos((query.anim_time) * 90 * 2 - 210) * -7"]
},
"flipper_right": {
"rotation": [0, 12.5, "-12.5+Math.cos((query.anim_time) * 90 * 2 - 90) * 4"],
"position": [0, -1.68678, 1.0746]
},
"flipper_right2": {
"rotation": [0, 0, "-10+Math.cos((query.anim_time) * 90 * 2 - 150) * 7"]
},
"flipper_right3": {
"rotation": [0, 0, "-10+Math.cos((query.anim_time) * 90 * 2 - 210) * 7"]
},
"torso": {
"rotation": [2.5, 0, 0]
},
"tail5": {
"rotation": ["7.5+Math.cos((query.anim_time) * 90 * 2 - 390) * 8", 0, 0]
}
}
},
"animation.dewgong.water_swim": {
"loop": true,
"animation_length": 0.75,
"bones": {
"body": {
"rotation": ["-5+Math.cos((query.anim_time) * 90 * 16/3 - 45) * 2", 0, 0],
"position": [0, "0+Math.cos((query.anim_time) * 90 * 16/3 + 45) * 2", "0+Math.cos((query.anim_time) * 90 * 16/3) * 3"]
},
"tail": {
"rotation": ["-2.5+Math.cos((query.anim_time) * 90 * 16/3 - 90) * 6", 0, 0]
},
"tail2": {
"rotation": ["-5+Math.cos((query.anim_time) * 90 * 16/3 - 135) * 6", 0, 0]
},
"tail3": {
"rotation": ["5+Math.cos((query.anim_time) * 90 * 16/3 - 180) * 6", 0, 0]
},
"tail4": {
"rotation": ["5+Math.cos((query.anim_time) * 90 * 16/3 - 200) * 16", 0, 0]
},
"tail6": {
"rotation": ["5+Math.cos((query.anim_time) * 90 * 16/3 - 350) * 26", 0, 0]
},
"chest": {
"rotation": ["5+Math.cos((query.anim_time) * 90 * 16/3 + 45) * 1", 0, 0],
"position": [0, 0, 0.25]
},
"neck": {
"rotation": ["-50+Math.cos((query.anim_time) * 90 * 16/3 + 90) * -2", 0, 0]
},
"head": {
"rotation": ["47.5+Math.cos((query.anim_time) * 90 * 16/3 - 45) * -6", 0, 0],
"position": [0, 0, 1]
},
"flipper_left": {
"rotation": {
"0.0": [37.25, 50.65, 0],
"0.0417": [37.25, 46.72, 1.1],
"0.375": [37.25, -45.255, 12.5],
"0.4167": [37.25, -47.5, 12.5],
"0.4583": [39.9, -45.255, 12.5],
"0.5417": [52.825, -13.75, 8.97],
"0.5833": [55.5, -0.315, 7.2],
"0.625": [52.325, 16.325, 5.03],
"0.7083": [38.4, 46.72, 0.7],
"0.75": [37.25, 50.65, 0]
},
"position": [0, -1.68678, 1.0746]
},
"flipper_left2": {
"rotation": {
"0.0": [0, 0, 0],
"0.125": [0, 0, -10],
"0.2917": [0, 0, -0.76],
"0.4167": [0, 0, 24.75],
"0.4583": [0, 0, 37.5],
"0.625": [0, 0, 64.5],
"0.75": [0, 0, 0]
}
},
"flipper_left3": {
"rotation": {
"0.0": [0, 0, 10],
"0.125": [0, 0, -7.5],
"0.375": [0, 0, -9.37],
"0.4583": [0, 0, 20],
"0.625": [0, 0, 35],
"0.75": [0, 0, 10]
}
},
"flipper_right": {
"rotation": {
"0.0": [37.25, -50.65, 0],
"0.0417": [37.25, -46.72, -1.1],
"0.375": [37.25, 45.255, -12.5],
"0.4167": [37.25, 47.5, -12.5],
"0.4583": [39.9, 45.255, -12.5],
"0.5417": [52.825, 13.75, -8.97],
"0.5833": [55.5, 0.315, -7.2],
"0.625": [52.325, -16.325, -5.03],
"0.7083": [38.4, -46.72, -0.7],
"0.75": [37.25, -50.65, 0]
},
"position": [0, -1.68678, 1.0746]
},
"flipper_right2": {
"rotation": {
"0.0": [0, 0, 0],
"0.125": [0, 0, 10],
"0.2917": [0, 0, 0.76],
"0.4167": [0, 0, -24.75],
"0.4583": [0, 0, -37.5],
"0.625": [0, 0, -64.5],
"0.75": [0, 0, 0]
}
},
"flipper_right3": {
"rotation": {
"0.0": [0, 0, -30],
"0.0833": [0, 0, -3.17],
"0.125": [0, 0, 7.5],
"0.375": [0, 0, 9.37],
"0.4583": [0, 0, -20],
"0.625": [0, 0, -35],
"0.75": [0, 0, -30]
}
},
"torso": {
"rotation": ["2.5+Math.cos((query.anim_time) * 90 * 16/3 + 0) * 2", 0, 0]
},
"tail5": {
"rotation": ["7.5+Math.cos((query.anim_time) * 90 * 16/3 - 260) * 26", 0, 0]
}
}
},
"animation.dewgong.ride_water_swim": {
"loop": true,
"bones": {
"body": {
"rotation": [0, 0, "q.r.yaw_change(0)*-10"]
},
"tail": {
"rotation": ["q.r.pitch_change(0)*5", "q.r.yaw_change(0)*-5", 0]
},
"tail2": {
"rotation": ["q.r.pitch_change(4)*8", "q.r.yaw_change(0)*-5", 0]
},
"tail3": {
"rotation": ["q.r.pitch_change(6)*12", "q.r.yaw_change(0)*-5", 0]
},
"torso": {
"rotation": ["q.r.pitch_change(0)*-5", "q.r.yaw_change(0)*5", 0]
},
"chest": {
"rotation": ["q.r.pitch_change(0)*-10", "q.r.yaw_change(0)*5", 0],
"position": [0, 0, "2+q.r.pitch_change(0)*-2"]
},
"neck": {
"rotation": ["q.r.pitch_change(0)*-5", "q.r.yaw_change(0)*5", 0]
},
"head": {
"rotation": ["q.r.pitch_change(0)*-20", 0, 0]
}
}
},
@@ -140,11 +576,6 @@
"1.25": [0, 0, 0]
}
}
},
"sound_effects": {
"0.0417": {
"effect": "pokemon.dewgong.cry"
}
}
},
"animation.dewgong.blink": {
@@ -210,7 +641,7 @@
}
}
},
"animation.dewgong.new": {
"animation.dewgong.neckdemo": {
"loop": true,
"bones": {
"neck": {
@@ -220,6 +651,195 @@
"rotation": [72.5, 0, 0]
}
}
},
"animation.dewgong.pose": {
"loop": true,
"bones": {
"body": {
"rotation": [0, 12.5, 0]
},
"tail": {
"rotation": [2.41492, 0.64686, -14.98637]
},
"tail2": {
"rotation": [34.97911, 1.05627, -2.26603]
},
"tail3": {
"rotation": [46.78082, -13.99545, -14.43276]
},
"tail4": {
"rotation": [7.5, 0, 0]
},
"tail6": {
"rotation": [30, 0, 0]
},
"chest": {
"rotation": [-32.5, 0, 0]
},
"neck": {
"rotation": [-52.52635, -1.5216, 1.98385]
},
"head": {
"rotation": [83.46987, -8.35694, -6.53013],
"position": [0.58854, -0.68263, -0.01172]
},
"flipper_left": {
"rotation": [32.28184, -14.8934, 25.70507],
"position": [0, -1.68678, 1.0746]
},
"flipper_left2": {
"rotation": [0, -15, -15]
},
"flipper_left3": {
"rotation": [0, 0, -37.5]
},
"flipper_right": {
"rotation": [99.40658, 28.75123, -7.23212],
"position": [0, -1.68678, 1.0746]
},
"flipper_right2": {
"rotation": [0, 0, 15]
},
"flipper_right3": {
"rotation": [0, 0, 37.5]
},
"tail5": {
"rotation": [27.5, 0, 0]
},
"eye_right": {
"position": [0.25, 0, 0]
},
"eye_highlight_left": {
"position": [0.25, 0, 0]
},
"eye_highlight_right": {
"position": [0.25, 0, 0]
}
}
},
"animation.dewgong.test_walkspeed": {
"loop": true,
"animation_length": 3.5,
"bones": {
"body": {
"position": [0, 0, "39-q.anim_time*90*0.26"]
}
}
},
"animation.dewgong.basepose": {
"loop": true,
"bones": {
"body": {
"rotation": [-5, 0, 0]
},
"tail": {
"rotation": [-2.5, 0, 0]
},
"tail2": {
"rotation": [0, 0, 0]
},
"tail3": {
"rotation": [4.5, 0, 0]
},
"tail4": {
"rotation": [-2.5, 0, 0]
},
"tail6": {
"rotation": [5, 0, 0]
},
"chest": {
"rotation": [-32.5, 0, 0]
},
"neck": {
"rotation": [-50, 0, 0]
},
"head": {
"rotation": [85, 0, 0]
},
"flipper_left": {
"rotation": [25.90134, -21.60983, 48.92416],
"position": [0, -1.68678, 1.0746]
},
"flipper_left2": {
"rotation": [0, 0, -15]
},
"flipper_left3": {
"rotation": [0, 0, -37.5]
},
"flipper_right": {
"rotation": [25.90134, 21.60983, -48.92416],
"position": [0, -1.68678, 1.0746]
},
"flipper_right2": {
"rotation": [0, 0, 15]
},
"flipper_right3": {
"rotation": [0, 0, 37.5]
},
"torso": {
"rotation": [5, 0, 0]
}
}
},
"animation.dewgong.basepose_water": {
"loop": true,
"bones": {
"body": {
"rotation": [-5, 0, 0]
},
"tail": {
"rotation": [-2.5, 0, 0]
},
"tail2": {
"rotation": [-5, 0, 0]
},
"tail3": {
"rotation": [5, 0, 0]
},
"tail4": {
"rotation": [5, 0, 0]
},
"tail6": {
"rotation": [5, 0, 0]
},
"chest": {
"rotation": [5, 0, 0],
"position": [0, 0, 0.25]
},
"neck": {
"rotation": [-50, 0, 0]
},
"head": {
"rotation": [52.5, 0, 0],
"position": [0, 0, 1]
},
"flipper_left": {
"rotation": [0, -12.5, 12.5],
"position": [0, -1.68678, 1.0746]
},
"flipper_left2": {
"rotation": [0, 0, 10]
},
"flipper_left3": {
"rotation": [0, 0, 10]
},
"flipper_right": {
"rotation": [0, 12.5, -12.5],
"position": [0, -1.68678, 1.0746]
},
"flipper_right2": {
"rotation": [0, 0, -10]
},
"flipper_right3": {
"rotation": [0, 0, -10]
},
"torso": {
"rotation": [2.5, 0, 0]
},
"tail5": {
"rotation": [7.5, 0, 0]
}
}
}
}
}
@@ -40,19 +40,19 @@
"tail_right5": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9+120)*10", "-math.sin(q.anim_time*90*1.5-33*2+120)*10", 0]
},
"tail": {
"tail_middle": {
"rotation": ["-math.sin(q.anim_time*90*3-33*5-120)*10+5", "-math.sin(q.anim_time*90*1.5-33*5-120)*4", 0]
},
"tail2": {
"tail_middle2": {
"rotation": ["-math.sin(q.anim_time*90*3-33*6-120)*8", "math.sin(q.anim_time*90*1.5-33*6-120)*6", 0]
},
"tail3": {
"tail_middle3": {
"rotation": ["-math.sin(q.anim_time*90*3-33*7-120)*8", "math.sin(q.anim_time*90*1.5-33*4-120)*8", 0]
},
"tail4": {
"tail_middle4": {
"rotation": ["-math.sin(q.anim_time*90*3-33*8-120)*8", "math.sin(q.anim_time*90*1.5-33*3-120)*8", 0]
},
"tail5": {
"tail_middle5": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9-120)*10", "-math.sin(q.anim_time*90*1.5-33*2-120)*10", 0]
},
"tail_left": {
@@ -175,7 +175,7 @@
"tail_right6": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9+120)*6", "-math.sin(q.anim_time*90*1.5-33*2+120)*10", 0]
},
"tail6": {
"tail_middle6": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9+120)*6", "-math.sin(q.anim_time*90*1.5-33*2+120)*10", 0]
},
"tail_left6": {
@@ -223,19 +223,19 @@
"tail_right5": {
"rotation": ["-math.sin(q.anim_time*90*4*2-33*8+45)*16", "-math.sin(q.anim_time*90*2-33*8)*6", 0]
},
"tail": {
"tail_middle": {
"rotation": ["-math.sin(q.anim_time*90*4*2-33*5+45)*10+5", "-math.sin(q.anim_time*90*4-33*6+45)*2", 0]
},
"tail2": {
"tail_middle2": {
"rotation": ["-math.sin(q.anim_time*90*4*2-33*6+45)*12", "-math.sin(q.anim_time*90*4-33*7+45)*2", 0]
},
"tail3": {
"tail_middle3": {
"rotation": ["-math.sin(q.anim_time*90*4*2-33*7+45)*14", "-math.sin(q.anim_time*90*4-33*8+45)*2", 0]
},
"tail4": {
"tail_middle4": {
"rotation": ["-math.sin(q.anim_time*90*4*2-33*8+45)*16", "-math.sin(q.anim_time*90*4-33*9+45)*2", 0]
},
"tail5": {
"tail_middle5": {
"rotation": ["-math.sin(q.anim_time*90*4*2-33*9+45)*16", "-math.sin(q.anim_time*90*4-33*10+45)*4", 0]
},
"tail_left": {
@@ -345,7 +345,7 @@
"tail_right6": {
"rotation": ["-math.sin(q.anim_time*90*4*2-33*8+45)*14", "-math.sin(q.anim_time*90*2-33*8)*10", 0]
},
"tail6": {
"tail_middle6": {
"rotation": ["-math.sin(q.anim_time*90*4*2-33*9+45)*14", "-math.sin(q.anim_time*90*4-33*10+45)*6", 0]
},
"tail_left6": {
@@ -387,19 +387,19 @@
"tail_right5": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9+120)*10", "-math.sin(q.anim_time*90*1.5-33*2+120)*10", 0]
},
"tail": {
"tail_middle": {
"rotation": ["-math.sin(q.anim_time*90*3-33*5-120)*10+5", "-math.sin(q.anim_time*90*1.5-33*5-120)*4", 0]
},
"tail2": {
"tail_middle2": {
"rotation": ["-math.sin(q.anim_time*90*3-33*6-120)*8", "math.sin(q.anim_time*90*1.5-33*6-120)*6", 0]
},
"tail3": {
"tail_middle3": {
"rotation": ["-math.sin(q.anim_time*90*3-33*7-120)*8", "math.sin(q.anim_time*90*1.5-33*4-120)*8", 0]
},
"tail4": {
"tail_middle4": {
"rotation": ["-math.sin(q.anim_time*90*3-33*8-120)*8", "math.sin(q.anim_time*90*1.5-33*3-120)*8", 0]
},
"tail5": {
"tail_middle5": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9-120)*10", "-math.sin(q.anim_time*90*1.5-33*2-120)*10", 0]
},
"tail_left": {
@@ -472,7 +472,7 @@
"tail_right6": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9+120)*6", "-math.sin(q.anim_time*90*1.5-33*2+120)*10", 0]
},
"tail6": {
"tail_middle6": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9-120)*6", "-math.sin(q.anim_time*90*1.5-33*2-120)*10", 0]
},
"tail_left6": {
@@ -480,6 +480,255 @@
}
}
},
"animation.tauros.ride_ground_walk": {
"loop": true,
"bones": {
"hips": {
"rotation": [0, "q.r.yaw_change(0)*-5", 0]
},
"tails": {
"rotation": [0, "q.r.yaw_change(0)*-15", 0]
},
"torso2": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"torso3": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"head": {
"rotation": [0, "q.r.yaw_change(0)*15", 0]
},
"ftorso2": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"ftorso3": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
}
}
},
"animation.tauros.ride_ground_run": {
"loop": true,
"bones": {
"hips": {
"rotation": [0, "q.r.yaw_change(0)*-5", 0]
},
"torso": {
"rotation": [0, 0, "q.r.yaw_change(0)*-10"]
},
"tails": {
"rotation": [0, "q.r.yaw_change(0)*-15", 0]
},
"torso2": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"torso3": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"head": {
"rotation": [0, "q.r.yaw_change(0)*15", 0]
},
"ftorso2": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"ftorso3": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
}
}
},
"animation.tauros.ride_jump": {
"loop": true,
"bones": {
"body": {
"position": [0, "2+math.sin(q.anim_time*90*12)/24", 0]
},
"hips": {
"rotation": ["q.r.velocity_y(0)*-20", 0, 0]
},
"tails": {
"rotation": ["q.r.velocity_y(0)*20", 0, 0]
},
"tail_left": {
"rotation": ["-math.sin(q.anim_time*90*10)*2", -15, 0]
},
"tail_left2": {
"rotation": ["-math.sin(q.anim_time*90*10-30)*3", 0, 0]
},
"tail_left3": {
"rotation": ["-math.sin(q.anim_time*90*10-60)*4", 0, 0]
},
"tail_left4": {
"rotation": ["-math.sin(q.anim_time*90*10-90)*5", 0, 0]
},
"tail_left5": {
"rotation": ["-math.sin(q.anim_time*90*10-120)*6", 0, 0]
},
"tail_left6": {
"rotation": ["-math.sin(q.anim_time*90*10-150)*8", 0, 0]
},
"tail_middle": {
"rotation": ["math.sin(q.anim_time*90*10)*2", 0, 0]
},
"tail_middle2": {
"rotation": ["math.sin(q.anim_time*90*10-30)*3", 0, 0]
},
"tail_middle3": {
"rotation": ["math.sin(q.anim_time*90*10-60)*4", 0, 0]
},
"tail_middle4": {
"rotation": ["math.sin(q.anim_time*90*10-90)*5", 0, 0]
},
"tail_middle5": {
"rotation": ["math.sin(q.anim_time*90*10-120)*6", 0, 0]
},
"tail_middle6": {
"rotation": ["math.sin(q.anim_time*90*10-150)*8", 0, 0]
},
"tail_right": {
"rotation": ["-math.sin(q.anim_time*90*10-60)*2", 15, 0]
},
"tail_right2": {
"rotation": ["-math.sin(q.anim_time*90*10-90)*3", 0, 0]
},
"tail_right3": {
"rotation": ["-math.sin(q.anim_time*90*10-120)*4", 0, 0]
},
"tail_right4": {
"rotation": ["-math.sin(q.anim_time*90*10-150)*5", 0, 0]
},
"tail_right5": {
"rotation": ["-math.sin(q.anim_time*90*10-180)*6", 0, 0]
},
"tail_right6": {
"rotation": ["-math.sin(q.anim_time*90*10-210)*8", 0, 0]
},
"mane_bottom": {
"rotation": ["math.sin(q.anim_time*90*20)*2", 0, 0]
},
"mane_top": {
"rotation": ["-math.sin(q.anim_time*90*20)*2", 0, 0]
},
"leg_front_right": {
"rotation": ["-30+math.sin(q.anim_time*90*20-60)/2+q.r.velocity_y(0)*40", 0, 0]
},
"leg_front_right2": {
"rotation": ["40+math.sin(q.anim_time*90*20-150)+q.r.velocity_y(0)*30", 0, 0]
},
"leg_front_left": {
"rotation": ["-25+math.sin(q.anim_time*90*20)/2+q.r.velocity_y(0)*40", 0, 0]
},
"leg_front_left2": {
"rotation": ["40+math.sin(q.anim_time*90*20-90)+q.r.velocity_y(0)*30", 0, 0]
},
"leg_back_right": {
"rotation": ["5+math.sin(q.anim_time*90*20)/2+q.r.velocity_y(0)*20", 0, 0]
},
"leg_back_right2": {
"rotation": ["-15+math.sin(q.anim_time*90*20-90)+q.r.velocity_y(0)*20", 0, 0]
},
"leg_back_left": {
"rotation": ["10+math.sin(q.anim_time*90*20-60)/2+q.r.velocity_y(0)*20", 0, 0]
},
"leg_back_left2": {
"rotation": ["-15+math.sin(q.anim_time*90*20-150)+q.r.velocity_y(0)*20", 0, 0]
}
}
},
"animation.tauros.render": {
"loop": true,
"bones": {
"torso": {
"rotation": [5, 0, 0]
},
"head_angle": {
"rotation": [7.5, 0, 0]
},
"tail_right": {
"rotation": [28.49002, 17.28889, 10.8585]
},
"tail_right2": {
"rotation": [-2.61298, -9.65594, 15.22074]
},
"tail_right3": {
"rotation": [0, -15, 0]
},
"tail_right4": {
"rotation": [0, -27.5, 0]
},
"tail_right5": {
"rotation": [0, -17.5, 0]
},
"tail_middle": {
"rotation": [47.5, 0, 0]
},
"tail_middle2": {
"rotation": [10.15375, 12.42297, 0.88796]
},
"tail_middle3": {
"rotation": [-5.03364, 9.99043, -0.22117]
},
"tail_middle4": {
"rotation": [0, 7.5, 0]
},
"tail_middle5": {
"rotation": [17.5, -5, -5]
},
"tail_left": {
"rotation": [-5, 0, 0]
},
"tail_left2": {
"rotation": [17.61435, 9.91358, -6.18155]
},
"tail_left3": {
"rotation": [12.92638, 14.63639, 3.31914]
},
"tail_left4": {
"rotation": [0, 37.5, 0]
},
"tail_left5": {
"rotation": [0, 52.5, 0]
},
"leg_front_right": {
"rotation": [-7.5, 0, 0]
},
"leg_front_right2": {
"rotation": [22.5, 0, 0]
},
"leg_front_right3": {
"rotation": [22.5, 0, 0]
},
"leg_front_left2": {
"rotation": [-7.5, 0, 0]
},
"leg_front_left3": {
"rotation": [7.5, 0, 0]
},
"leg_back_right2": {
"rotation": [-10, 0, 0]
},
"leg_back_right3": {
"rotation": [10, 0, 0]
}
}
},
"animation.tauros.blink": {
"animation_length": 0.1667,
"bones": {
"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]}
}
},
"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]}
}
}
}
},
"animation.tauros.cry": {
"animation_length": 2.125,
"bones": {
@@ -617,15 +866,15 @@
},
"position": {
"0.0": {
"post": [0, -0.5, 0],
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.4583": {
"post": [0, -1, 0],
"lerp_mode": "catmullrom"
},
"0.5417": [0, -0.5, 0],
"1.7917": [0, -0.5, 0]
"0.5417": [0, 0, 0],
"1.7917": [0, 0, 0]
}
},
"leg_front_right2": {
@@ -711,6 +960,10 @@
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.3333": {
"post": [-0.00259, -0.29316, -0.18789],
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
@@ -739,102 +992,6 @@
"effect": "pokemon.tauros.cry"
}
}
},
"animation.tauros.render": {
"loop": true,
"bones": {
"torso": {
"rotation": [5, 0, 0]
},
"head_angle": {
"rotation": [7.5, 0, 0]
},
"tail_right": {
"rotation": [28.49002, 17.28889, 10.8585]
},
"tail_right2": {
"rotation": [-2.61298, -9.65594, 15.22074]
},
"tail_right3": {
"rotation": [0, -15, 0]
},
"tail_right4": {
"rotation": [0, -27.5, 0]
},
"tail_right5": {
"rotation": [0, -17.5, 0]
},
"tail": {
"rotation": [47.5, 0, 0]
},
"tail2": {
"rotation": [10.15375, 12.42297, 0.88796]
},
"tail3": {
"rotation": [-5.03364, 9.99043, -0.22117]
},
"tail4": {
"rotation": [0, 7.5, 0]
},
"tail5": {
"rotation": [17.5, -5, -5]
},
"tail_left": {
"rotation": [-5, 0, 0]
},
"tail_left2": {
"rotation": [17.61435, 9.91358, -6.18155]
},
"tail_left3": {
"rotation": [12.92638, 14.63639, 3.31914]
},
"tail_left4": {
"rotation": [0, 37.5, 0]
},
"tail_left5": {
"rotation": [0, 52.5, 0]
},
"leg_front_right": {
"rotation": [-7.5, 0, 0]
},
"leg_front_right2": {
"rotation": [22.5, 0, 0]
},
"leg_front_right3": {
"rotation": [22.5, 0, 0]
},
"leg_front_left2": {
"rotation": [-7.5, 0, 0]
},
"leg_front_left3": {
"rotation": [7.5, 0, 0]
},
"leg_back_right2": {
"rotation": [-10, 0, 0]
},
"leg_back_right3": {
"rotation": [10, 0, 0]
}
}
},
"animation.tauros.blink": {
"animation_length": 0.1667,
"bones": {
"eyelid_right": {
"position": {
"0.0": [-0.1, 0, -0.1],
"0.125": [-0.1, 0, -0.1],
"0.1667": [0, 0, 0]
}
},
"eyelid_left": {
"position": {
"0.0": [0.1, 0, -0.1],
"0.125": [0.1, 0, -0.1],
"0.1667": [0, 0, 0]
}
}
}
}
}
}
@@ -227,7 +227,7 @@
"rotation": ["-math.sin(q.anim_time*90*4*2)*20+10", 0, 0]
},
"tail_right": {
"rotation": ["-math.sin(q.anim_time*90*4*2-33*4+45)*10+5", "math.sin(q.anim_time*90*2-33*4)*1+5", 0]
"rotation": ["-math.sin(q.anim_time*90*4*2-33*3+45)*12+5", "NaN-math.sin(q.anim_time*90*2-33*3+180)*1+5", 0]
},
"tail_right2": {
"rotation": ["-math.sin(q.anim_time*90*4*2-33*5+45)*12", "-math.sin(q.anim_time*90*2-33*5)*2+5", 0]
@@ -257,7 +257,7 @@
"rotation": ["-math.sin(q.anim_time*90*4*2-33*9+45)*16", "-math.sin(q.anim_time*90*4-33*10+45)*4", 0]
},
"tail_left": {
"rotation": ["-math.sin(q.anim_time*90*4*2-33*3+45)*12+5", "-math.sin(q.anim_time*90*2-33*3+180)*1-5", 0]
"rotation": ["-math.sin(q.anim_time*90*4*2-33*3+45)*12+5", "-math.sin(q.anim_time*90*2-33*3+180)*1+5", 0]
},
"tail_left2": {
"rotation": ["-math.sin(q.anim_time*90*4*2-33*4+45)*10", "math.sin(q.anim_time*90*2-33*4+180)*2-5", 0]
@@ -534,6 +534,684 @@
}
}
},
"animation.tauros_paldean_aqua.ride_ground_walk": {
"loop": true,
"bones": {
"torso2": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"torso3": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"head": {
"rotation": [0, "q.r.yaw_change(0)*10", 0]
},
"hips": {
"rotation": [0, "q.r.yaw_change(0)*-5", 0]
},
"tails": {
"rotation": [0, "q.r.yaw_change(0)*-15", 0]
},
"ftorso2": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"ftorso3": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
}
}
},
"animation.tauros_paldean_aqua.ride_ground_run": {
"loop": true,
"bones": {
"torso": {
"rotation": [0, 0, "q.r.yaw_change(0)*-10"]
},
"torso2": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"torso3": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"head": {
"rotation": [0, "q.r.yaw_change(0)*15", 0]
},
"hips": {
"rotation": [0, "q.r.yaw_change(0)*-5", 0]
},
"tails": {
"rotation": [0, "q.r.yaw_change(0)*-15", 0]
},
"ftorso2": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"ftorso3": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
}
}
},
"animation.tauros_paldean_aqua.ride_jump_land": {
"loop": true,
"bones": {
"body": {
"position": [0, "2+math.sin(q.anim_time*90*12)/24", 0]
},
"mane_bottom": {
"rotation": ["math.sin(q.anim_time*90*20)*2", 0, 0]
},
"mane_top": {
"rotation": ["-math.sin(q.anim_time*90*20)*2", 0, 0]
},
"leg_front_right": {
"rotation": ["-30+math.sin(q.anim_time*90*20-60)/2+q.r.velocity_y(0)*40", 0, 0]
},
"leg_front_right2": {
"rotation": ["40+math.sin(q.anim_time*90*20-150)+q.r.velocity_y(0)*30", 0, 0]
},
"leg_front_left": {
"rotation": ["-25+math.sin(q.anim_time*90*20)/2+q.r.velocity_y(0)*40", 0, 0]
},
"leg_front_left2": {
"rotation": ["40+math.sin(q.anim_time*90*20-90)+q.r.velocity_y(0)*30", 0, 0]
},
"leg_back_right": {
"rotation": ["5+math.sin(q.anim_time*90*20)/2+q.r.velocity_y(0)*20", 0, 0]
},
"leg_back_right2": {
"rotation": ["-15+math.sin(q.anim_time*90*20-90)+q.r.velocity_y(0)*20", 0, 0]
},
"leg_back_left": {
"rotation": ["10+math.sin(q.anim_time*90*20-60)/2+q.r.velocity_y(0)*20", 0, 0]
},
"leg_back_left2": {
"rotation": ["-15+math.sin(q.anim_time*90*20-150)+q.r.velocity_y(0)*20", 0, 0]
},
"hips": {
"rotation": ["q.r.velocity_y(0)*-20", 0, 0]
},
"tails": {
"rotation": ["q.r.velocity_y(0)*20", 0, 0]
},
"tail_left": {
"rotation": ["-math.sin(q.anim_time*90*10)*2", -15, 0]
},
"tail_left2": {
"rotation": ["-math.sin(q.anim_time*90*10-30)*3", 0, 0]
},
"tail_left3": {
"rotation": ["-math.sin(q.anim_time*90*10-60)*4", 0, 0]
},
"tail_left4": {
"rotation": ["-math.sin(q.anim_time*90*10-90)*5", 0, 0]
},
"tail_left5": {
"rotation": ["-math.sin(q.anim_time*90*10-120)*6", 0, 0]
},
"tail_left6": {
"rotation": ["-math.sin(q.anim_time*90*10-150)*8", 0, 0]
},
"tail_middle": {
"rotation": ["math.sin(q.anim_time*90*10)*2", 0, 0]
},
"tail_middle2": {
"rotation": ["math.sin(q.anim_time*90*10-30)*3", 0, 0]
},
"tail_middle3": {
"rotation": ["math.sin(q.anim_time*90*10-60)*4", 0, 0]
},
"tail_middle4": {
"rotation": ["math.sin(q.anim_time*90*10-90)*5", 0, 0]
},
"tail_middle5": {
"rotation": ["math.sin(q.anim_time*90*10-120)*6", 0, 0]
},
"tail_middle6": {
"rotation": ["math.sin(q.anim_time*90*10-150)*8", 0, 0]
},
"tail_right": {
"rotation": ["-math.sin(q.anim_time*90*10-60)*2", 15, 0]
},
"tail_right2": {
"rotation": ["-math.sin(q.anim_time*90*10-90)*3", 0, 0]
},
"tail_right3": {
"rotation": ["-math.sin(q.anim_time*90*10-120)*4", 0, 0]
},
"tail_right4": {
"rotation": ["-math.sin(q.anim_time*90*10-150)*5", 0, 0]
},
"tail_right5": {
"rotation": ["-math.sin(q.anim_time*90*10-180)*6", 0, 0]
},
"tail_right6": {
"rotation": ["-math.sin(q.anim_time*90*10-210)*8", 0, 0]
},
"horn_glow_right": {
"scale": 0
},
"horn_glow_right2": {
"scale": 0
},
"horn_glow_right3": {
"scale": 0
},
"horn_glow_left": {
"scale": 0
},
"horn_glow_left2": {
"scale": 0
},
"horn_glow_left3": {
"scale": 0
}
}
},
"animation.tauros_paldean_aqua.surfacewater_idle": {
"loop": true,
"bones": {
"body": {
"position": [0, "-15+math.sin(q.anim_time*90)/2", 0]
},
"hips": {
"rotation": ["-5-math.sin(q.anim_time*90-90)/2", 0, 0]
},
"torso": {
"rotation": [0, 0, "math.sin(q.anim_time*45-90)*2"]
},
"tails": {
"rotation": [-30, 0, 0]
},
"tail_left": {
"rotation": ["-math.sin(q.anim_time*90*1.5)*8", "math.sin(q.anim_time*90*(1.5/2))*3", 0]
},
"tail_left2": {
"rotation": ["-5-math.sin(q.anim_time*90*1.5-30)*8", "math.sin(q.anim_time*90*(1.5/2)-30)*3", 0]
},
"tail_left3": {
"rotation": ["-math.sin(q.anim_time*90*1.5-60)*8", "15+math.sin(q.anim_time*90*(1.5/2)-60)*3", 0]
},
"tail_left4": {
"rotation": ["-math.sin(q.anim_time*90*1.5-90)*8", "15+math.sin(q.anim_time*90*(1.5/2)-90)*3", 0]
},
"tail_left5": {
"rotation": ["-math.sin(q.anim_time*90*1.5-120)*8", "math.sin(q.anim_time*90*(1.5/2)-120)*3", 0]
},
"tail_left6": {
"rotation": ["-math.sin(q.anim_time*90*1.5-150)*8", "math.sin(q.anim_time*90*(1.5/2)-150)*3", 0]
},
"tail_left7": {
"rotation": ["-math.sin(q.anim_time*90*1.5-180)*8", "math.sin(q.anim_time*90*(1.5/2)-180)*3", 0]
},
"tail_middle": {
"rotation": [2, 0, 0]
},
"tail_middle2": {
"rotation": ["15-math.sin(q.anim_time*90*1.5)*8", "math.sin(q.anim_time*90*(1.5/2))*3", 0]
},
"tail_middle3": {
"rotation": ["-math.sin(q.anim_time*90*1.5-30)*8", "math.sin(q.anim_time*90*(1.5/2)-30)*3", 0]
},
"tail_middle4": {
"rotation": ["-math.sin(q.anim_time*90*1.5-60)*8", "math.sin(q.anim_time*90*(1.5/2)-60)*3", 0]
},
"tail_middle5": {
"rotation": ["-math.sin(q.anim_time*90*1.5-90)*8", "math.sin(q.anim_time*90*(1.5/2)-90)*3", 0]
},
"tail_middle6": {
"rotation": ["-math.sin(q.anim_time*90*1.5-120)*8", "math.sin(q.anim_time*90*(1.5/2)-120)*3", 0]
},
"tail_middle7": {
"rotation": ["-math.sin(q.anim_time*90*1.5-150)*8", "math.sin(q.anim_time*90*(1.5/2)-150)*3", 0]
},
"tail_right": {
"rotation": ["-math.sin(q.anim_time*90*1.5)*8", "math.sin(q.anim_time*90*(1.5/2))*3", 0]
},
"tail_right2": {
"rotation": ["-5-math.sin(q.anim_time*90*1.5-30)*8", "math.sin(q.anim_time*90*(1.5/2)-30)*3", 0]
},
"tail_right3": {
"rotation": ["-math.sin(q.anim_time*90*1.5-60)*8", "-15-math.sin(q.anim_time*90*(1.5/2)-60)*3", 0]
},
"tail_right4": {
"rotation": ["-math.sin(q.anim_time*90*1.5-90)*8", "-15+math.sin(q.anim_time*90*(1.5/2)-90)*3", 0]
},
"tail_right5": {
"rotation": ["-math.sin(q.anim_time*90*1.5-120)*8", "math.sin(q.anim_time*90*(1.5/2)-120)*3", 0]
},
"tail_right6": {
"rotation": ["-math.sin(q.anim_time*90*1.5-150)*8", "math.sin(q.anim_time*90*(1.5/2)-150)*3", 0]
},
"tail_right7": {
"rotation": ["-math.sin(q.anim_time*90*1.5-180)*8", "math.sin(q.anim_time*90*(1.5/2)-180)*3", 0]
},
"torso2": {
"rotation": ["-2.5-math.sin(q.anim_time*90-150)/2", 0, 0]
},
"torso3": {
"rotation": ["-5-math.sin(q.anim_time*90-210)", 0, 0]
},
"mane_bottom": {
"rotation": ["-47.5-math.sin(q.anim_time*90-120)*8", 0, 0]
},
"lower_mane_right": {
"rotation": [0, 0, "math.sin(q.anim_time*90-120)*8"]
},
"lower_mane_left": {
"rotation": [0, 0, "-math.sin(q.anim_time*90-120)*8"]
},
"mane_top": {
"rotation": ["math.sin(q.anim_time*90-120)*8", 0, 0]
},
"mane_left_top": {
"rotation": [0, 0, "-math.sin(q.anim_time*90-120)*8"]
},
"mane_right_top": {
"rotation": [0, 0, "math.sin(q.anim_time*90-120)*8"]
},
"mane_left_bottom": {
"rotation": [0, 0, "-math.sin(q.anim_time*90-120)*8"]
},
"mane_right_bottom": {
"rotation": [0, 0, "math.sin(q.anim_time*90-120)*8"]
},
"head": {
"rotation": ["-math.sin(q.anim_time*90-270)", 0, "math.sin(q.anim_time*45-150)*2"]
},
"horn_glow_right": {
"scale": 0
},
"horn_glow_right2": {
"scale": 0
},
"horn_glow_right3": {
"scale": 0
},
"horn_glow_left": {
"scale": 0
},
"horn_glow_left2": {
"scale": 0
},
"horn_glow_left3": {
"scale": 0
},
"ftorso2": {
"rotation": [-2.5, 0, 0]
},
"ftorso3": {
"rotation": [-5, 0, 0]
},
"leg_front_right": {
"rotation": ["math.sin(q.anim_time*90*2-60)*4", 0, 0],
"position": [0, "-math.sin(q.anim_time*90*2)/4", "-math.cos(q.anim_time*90*2)/4"]
},
"leg_front_right2": {
"rotation": ["20+math.sin(q.anim_time*90*2-120)*6", 0, 0]
},
"leg_front_right3": {
"rotation": ["15+math.sin(q.anim_time*90*2-180)*8", 0, 0]
},
"leg_front_left": {
"rotation": ["-math.sin(q.anim_time*90*2-60)*4", 0, 0],
"position": [0, "math.sin(q.anim_time*90*2)/4", "math.cos(q.anim_time*90*2)/4"]
},
"leg_front_left2": {
"rotation": ["20-math.sin(q.anim_time*90*2-120)*6", 0, 0]
},
"leg_front_left3": {
"rotation": ["15-math.sin(q.anim_time*90*2-180)*8", 0, 0]
},
"leg_back_right": {
"rotation": ["-math.sin(q.anim_time*90*2-60)*4", 0, 0],
"position": [0, "math.sin(q.anim_time*90*2)/4", "math.cos(q.anim_time*90*2)/4"]
},
"leg_back_right2": {
"rotation": ["-20-math.sin(q.anim_time*90*2-120)*15", 0, 0]
},
"leg_back_right3": {
"rotation": ["12.5-math.sin(q.anim_time*90*2-180)*8", 0, 0]
},
"leg_back_left": {
"rotation": ["math.sin(q.anim_time*90*2-60)*4", 0, 0],
"position": [0, "-math.sin(q.anim_time*90*2)/4", "-math.cos(q.anim_time*90*2)/4"]
},
"leg_back_left2": {
"rotation": ["-20+math.sin(q.anim_time*90*2-120)*15", 0, 0]
},
"leg_back_left3": {
"rotation": ["12.5+math.sin(q.anim_time*90*2-180)*8", 0, 0]
}
}
},
"animation.tauros_paldean_aqua.surfacewater_swim": {
"loop": true,
"bones": {
"body": {
"position": [0, "-15+math.sin(q.anim_time*90*3)/4", 0]
},
"hips": {
"rotation": ["-10-math.sin(q.anim_time*90*3)", 0, 0]
},
"torso": {
"rotation": [7.5, 0, 0]
},
"tails": {
"rotation": [15, 0, "math.mod(q.anim_time*2,1)*360"]
},
"tail_left": {
"rotation": [-15, 17.5, 27.5]
},
"tail_left2": {
"rotation": [0, -5, 0]
},
"tail_left3": {
"rotation": [0, -5, 0]
},
"tail_left4": {
"rotation": [0, 12.5, 0]
},
"tail_left5": {
"rotation": [15, 12.5, 0]
},
"tail_left6": {
"rotation": [17.5, 15, 0]
},
"tail_left7": {
"rotation": [12.5, 15, 0]
},
"tail_middle": {
"rotation": [-7.5, 0, 0]
},
"tail_middle2": {
"rotation": [-7.5, 0, 0]
},
"tail_middle3": {
"rotation": [-7.5, 0, 0]
},
"tail_middle4": {
"rotation": [20, 0, 0]
},
"tail_middle5": {
"rotation": [15, -22.5, 0]
},
"tail_middle6": {
"rotation": [10, -20, 0]
},
"tail_middle7": {
"rotation": [10, -22.5, 0]
},
"tail_right": {
"rotation": [-15, -17.5, -27.5]
},
"tail_right2": {
"rotation": [0, 5, 0]
},
"tail_right3": {
"rotation": [0, 5, 0]
},
"tail_right4": {
"rotation": [0, -12.5, 0]
},
"tail_right5": {
"rotation": [-15, -12.5, 0]
},
"tail_right6": {
"rotation": [-17.5, -15, 0]
},
"tail_right7": {
"rotation": [-12.5, -15, 0]
},
"tail_right8": {
"rotation": [-25, 0, 0]
},
"torso2": {
"rotation": ["-math.sin(q.anim_time*90*3-60)", 0, 0]
},
"torso3": {
"rotation": ["2.5-math.sin(q.anim_time*90*3-120)", 0, 0]
},
"mane_bottom": {
"rotation": ["25+math.sin(q.anim_time*90*3)*8", 0, 0]
},
"lower_mane_right": {
"rotation": ["math.sin(q.anim_time*90*3+90)*4", 0, 0]
},
"lower_mane_left": {
"rotation": ["math.sin(q.anim_time*90*3+90)*4", 0, 0]
},
"mane_left_top": {
"rotation": ["math.sin(q.anim_time*90*3-30)*8", 0, 0]
},
"mane_right_top": {
"rotation": ["math.sin(q.anim_time*90*3-30)*8", 0, 0]
},
"mane_left_bottom": {
"rotation": ["math.sin(q.anim_time*90*3+30)*8", 0, 0]
},
"mane_right_bottom": {
"rotation": ["math.sin(q.anim_time*90*3+30)*8", 0, 0]
},
"head": {
"rotation": ["-25-math.sin(q.anim_time*90*3-150)", 0, 0]
},
"horn_glow_right": {
"scale": 0
},
"horn_glow_right2": {
"scale": 0
},
"horn_glow_right3": {
"scale": 0
},
"horn_glow_left": {
"scale": 0
},
"horn_glow_left2": {
"scale": 0
},
"horn_glow_left3": {
"scale": 0
},
"ftorso2": {
"rotation": ["-math.sin(q.anim_time*90*3-60)", 0, 0]
},
"ftorso3": {
"rotation": ["2.5-math.sin(q.anim_time*90*3-120)", 0, 0]
},
"leg_front_right": {
"rotation": ["5-math.sin(q.anim_time*90*3-120)*4", 0, 0],
"position": [0, "-2+math.sin(q.anim_time*90*3-30)/4", "math.cos(q.anim_time*90*3-30)/4"]
},
"leg_front_right2": {
"rotation": ["57.5-math.sin(q.anim_time*90*3-180)*8", 0, 0]
},
"leg_front_right3": {
"rotation": ["32.5-math.sin(q.anim_time*90*3-210)*6", 0, 0],
"position": [0, 0.25, 0]
},
"leg_front_left": {
"rotation": ["5-math.sin(q.anim_time*90*3-90)*4", 0, 0],
"position": [0, "-2+math.sin(q.anim_time*90*3)/4", "math.cos(q.anim_time*90*3)/4"]
},
"leg_front_left2": {
"rotation": ["57.5-math.sin(q.anim_time*90*3-150)*8", 0, 0]
},
"leg_front_left3": {
"rotation": ["32.5-math.sin(q.anim_time*90*3-180)*6", 0, 0],
"position": [0, 0.25, 0]
},
"leg_back_right": {
"rotation": ["57.5+math.sin(q.anim_time*90*3-120)*4", 0, 0],
"position": [0, "-math.sin(q.anim_time*90*3)/4", "-math.cos(q.anim_time*90*3)/4"]
},
"leg_back_right2": {
"rotation": ["-15+math.sin(q.anim_time*90*3-180)*4", 0, 0]
},
"leg_back_right3": {
"rotation": ["15+math.sin(q.anim_time*90*3-210)*6", 0, 0]
},
"leg_back_left": {
"rotation": ["42.5+math.sin(q.anim_time*90*3-90)*4", 0, 0],
"position": [0, "-math.sin(q.anim_time*90*3)/4", "-math.cos(q.anim_time*90*3)/4"]
},
"leg_back_left2": {
"rotation": ["-37.5+math.sin(q.anim_time*90*3-150)*4", 0, 0]
},
"leg_back_left3": {
"rotation": ["15+math.sin(q.anim_time*90*3-180)*6", 0, 0]
}
}
},
"animation.tauros_paldean_aqua.ride_surfacewater_swim": {
"loop": true,
"bones": {
"torso2": {
"rotation": [0, "q.r.yaw_change(0)*10", 0]
},
"torso3": {
"rotation": [0, "q.r.yaw_change(0)*10", 0]
},
"head": {
"rotation": [0, "q.r.yaw_change(0)*10", 0]
},
"hips": {
"rotation": [0, "q.r.yaw_change(0)*-10", 0]
},
"ftorso2": {
"rotation": [0, "q.r.yaw_change(0)*10", 0]
},
"ftorso3": {
"rotation": [0, "q.r.yaw_change(0)*10", 0]
}
}
},
"animation.tauros_paldean_aqua.ride_jump_liquid": {
"loop": true,
"bones": {
"body": {
"position": [0, "2+math.sin(q.anim_time*90*12)/24", 0]
},
"mane_bottom": {
"rotation": ["math.sin(q.anim_time*90*20)*2", 0, 0]
},
"mane_top": {
"rotation": ["-math.sin(q.anim_time*90*20)*2", 0, 0]
},
"leg_front_right": {
"rotation": ["-30+math.sin(q.anim_time*90*20-60)/2+q.r.velocity_y(0)*40", 0, 0]
},
"leg_front_right2": {
"rotation": ["40+math.sin(q.anim_time*90*20-150)+q.r.velocity_y(0)*30", 0, 0]
},
"leg_front_left": {
"rotation": ["-25+math.sin(q.anim_time*90*20)/2+q.r.velocity_y(0)*40", 0, 0]
},
"leg_front_left2": {
"rotation": ["40+math.sin(q.anim_time*90*20-90)+q.r.velocity_y(0)*30", 0, 0]
},
"leg_back_right": {
"rotation": ["5+math.sin(q.anim_time*90*20)/2+q.r.velocity_y(0)*20", 0, 0]
},
"leg_back_right2": {
"rotation": ["-15+math.sin(q.anim_time*90*20-90)+q.r.velocity_y(0)*20", 0, 0]
},
"leg_back_left": {
"rotation": ["10+math.sin(q.anim_time*90*20-60)/2+q.r.velocity_y(0)*20", 0, 0]
},
"leg_back_left2": {
"rotation": ["-15+math.sin(q.anim_time*90*20-150)+q.r.velocity_y(0)*20", 0, 0]
},
"hips": {
"rotation": ["q.r.velocity_y(0)*-20", 0, 0]
},
"tails": {
"rotation": [15, 0, "math.mod(q.anim_time*1,1)*360"]
},
"tail_left": {
"rotation": [-15, 17.5, 27.5]
},
"tail_left2": {
"rotation": [0, -5, 0]
},
"tail_left3": {
"rotation": [0, -5, 0]
},
"tail_left4": {
"rotation": [0, 12.5, 0]
},
"tail_left5": {
"rotation": [15, 12.5, 0]
},
"tail_left6": {
"rotation": [17.5, 15, 0]
},
"tail_left7": {
"rotation": [12.5, 15, 0]
},
"tail_middle": {
"rotation": [-7.5, 0, 0]
},
"tail_middle2": {
"rotation": [-7.5, 0, 0]
},
"tail_middle3": {
"rotation": [-7.5, 0, 0]
},
"tail_middle4": {
"rotation": [20, 0, 0]
},
"tail_middle5": {
"rotation": [15, -22.5, 0]
},
"tail_middle6": {
"rotation": [10, -20, 0]
},
"tail_middle7": {
"rotation": [10, -22.5, 0]
},
"tail_right": {
"rotation": [-15, -17.5, -27.5]
},
"tail_right2": {
"rotation": [0, 5, 0]
},
"tail_right3": {
"rotation": [0, 5, 0]
},
"tail_right4": {
"rotation": [0, -12.5, 0]
},
"tail_right5": {
"rotation": [-15, -12.5, 0]
},
"tail_right6": {
"rotation": [-17.5, -15, 0]
},
"tail_right7": {
"rotation": [-12.5, -15, 0]
},
"tail_right8": {
"rotation": [-25, 0, 0]
},
"horn_glow_right": {
"scale": 0
},
"horn_glow_right2": {
"scale": 0
},
"horn_glow_right3": {
"scale": 0
},
"horn_glow_left": {
"scale": 0
},
"horn_glow_left2": {
"scale": 0
},
"horn_glow_left3": {
"scale": 0
}
}
},
"animation.tauros_paldean_aqua.render": {
"loop": true,
"bones": {
@@ -893,6 +1571,20 @@
"effect": "pokemon.tauros.cry"
}
}
},
"animation.tauros_paldean_aqua.glow": {
"loop": true,
"bones": {
"head_marking_glow": {
"position": [0, 0.1, -0.1]
},
"head_markings_top": {
"position": [0, -0.1, 0]
},
"head_markings_glow_top": {
"position": [0, 0.1, 0]
}
}
}
}
}
@@ -402,27 +402,9 @@
"head_correction": {
"rotation": ["-math.sin(q.anim_time*90*4-90)*0.5-1", 0, 0]
},
"mane_top": {
"rotation": ["math.sin(q.anim_time*90*4-45)*4-4", 0, 0]
},
"mane_bottom": {
"rotation": ["-math.sin(q.anim_time*90*4-45)*4-4", 0, 0]
},
"tail_right": {
"rotation": ["-math.sin(q.anim_time*90*3-33*5+120)*10+5", "-math.sin(q.anim_time*90*1.5-33*5+120)*4", 0]
},
"tail_right2": {
"rotation": ["-math.sin(q.anim_time*90*3-33*6+120)*8", "math.sin(q.anim_time*90*1.5-33*6+120)*6", 0]
},
"tail_right3": {
"rotation": ["-math.sin(q.anim_time*90*3-33*7+120)*8", "math.sin(q.anim_time*90*1.5-33*4+120)*8", 0]
},
"tail_right4": {
"rotation": ["-math.sin(q.anim_time*90*3-33*8+120)*8", "math.sin(q.anim_time*90*1.5-33*3+120)*8", 0]
},
"tail_right5": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9+120)*10", "-math.sin(q.anim_time*90*1.5-33*2+120)*10", 0]
},
"tail": {
"rotation": ["-math.sin(q.anim_time*90*3-33*5-120)*10+5", "-math.sin(q.anim_time*90*1.5-33*5-120)*4", 0]
},
@@ -438,21 +420,6 @@
"tail5": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9-120)*10", "-math.sin(q.anim_time*90*1.5-33*2-120)*10", 0]
},
"tail_left": {
"rotation": ["-math.sin(q.anim_time*90*3-33*5)*10+5", "-math.sin(q.anim_time*90*1.5-33*5)*4", 0]
},
"tail_left2": {
"rotation": ["-math.sin(q.anim_time*90*3-33*6)*8", "math.sin(q.anim_time*90*1.5-33*6)*6", 0]
},
"tail_left3": {
"rotation": ["-math.sin(q.anim_time*90*3-33*7)*8", "math.sin(q.anim_time*90*1.5-33*4)*8", 0]
},
"tail_left4": {
"rotation": ["-math.sin(q.anim_time*90*3-33*8)*8", "math.sin(q.anim_time*90*1.5-33*3)*8", 0]
},
"tail_left5": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9)*10", "-math.sin(q.anim_time*90*1.5-33*2)*10", 0]
},
"leg_front_right": {
"rotation": ["-math.sin(q.anim_time*90*4-66)*3-3", 0, "-math.sin(q.anim_time*90*2+66)*0.5-math.sin(q.anim_time*90*2-45)*0.2"],
"position": [
@@ -505,15 +472,9 @@
"leg_back_left3": {
"rotation": ["-3.5-1*(math.sin(q.anim_time*90*4-90)*1+1+math.sin(q.anim_time*90*4-90)*2-2-math.sin(q.anim_time*90*4-90)*4-6)", 0, 0]
},
"tail_right6": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9+120)*6", "-math.sin(q.anim_time*90*1.5-33*2+120)*10", 0]
},
"tail6": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9-120)*6", "-math.sin(q.anim_time*90*1.5-33*2-120)*10", 0]
},
"tail_left6": {
"rotation": ["-math.sin(q.anim_time*90*3-33*9)*6", "-math.sin(q.anim_time*90*1.5-33*2)*10", 0]
},
"horn_glow_left": {
"scale": 0
},
@@ -534,6 +495,165 @@
}
}
},
"animation.tauros_paldean_blaze.ride_ground_walk": {
"loop": true,
"bones": {
"torso2": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"torso3": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"head": {
"rotation": [0, "q.r.yaw_change(0)*10", 0]
},
"hips": {
"rotation": [0, "q.r.yaw_change(0)*-5", 0]
},
"tail": {
"rotation": [0, "q.r.yaw_change(0)*-5", 0]
},
"tail2": {
"rotation": [0, "q.r.yaw_change(2)*-10", 0]
},
"tail3": {
"rotation": [0, "q.r.yaw_change(4)*-10", 0]
},
"tail4": {
"rotation": [0, "q.r.yaw_change(6)*-15", 0]
},
"tail5": {
"rotation": [0, "q.r.yaw_change(8)*-15", 0]
},
"tail6": {
"rotation": [0, "q.r.yaw_change(10)*-15", 0]
},
"ftorso2": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"ftorso3": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
}
}
},
"animation.tauros_paldean_blaze.ride_ground_run": {
"loop": true,
"bones": {
"torso": {
"rotation": [0, 0, "q.r.yaw_change(0)*-10"]
},
"torso2": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"torso3": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"head": {
"rotation": [0, "q.r.yaw_change(0)*15", 0]
},
"tails": {
"rotation": [0, "q.r.yaw_change(0)*-15", 0]
},
"hips": {
"rotation": [0, "q.r.yaw_change(0)*-5", 0]
},
"ftorso2": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
},
"ftorso3": {
"rotation": [0, "q.r.yaw_change(0)*7.5", 0]
}
}
},
"animation.tauros_paldean_blaze.ride_jump": {
"loop": true,
"bones": {
"body": {
"position": [0, "2+math.sin(q.anim_time*90*12)/24", 0]
},
"mane_bottom": {
"rotation": ["math.sin(q.anim_time*90*20)*2", 0, 0]
},
"leg_front_right": {
"rotation": ["-30+math.sin(q.anim_time*90*20-60)/2+q.r.velocity_y(0)*40", 0, 0]
},
"leg_front_right2": {
"rotation": ["40+math.sin(q.anim_time*90*20-150)+q.r.velocity_y(0)*30", 0, 0]
},
"leg_front_left": {
"rotation": ["-25+math.sin(q.anim_time*90*20)/2+q.r.velocity_y(0)*40", 0, 0]
},
"leg_front_left2": {
"rotation": ["40+math.sin(q.anim_time*90*20-90)+q.r.velocity_y(0)*30", 0, 0]
},
"leg_back_right": {
"rotation": ["5+math.sin(q.anim_time*90*20)/2+q.r.velocity_y(0)*20", 0, 0]
},
"leg_back_right2": {
"rotation": ["-15+math.sin(q.anim_time*90*20-90)+q.r.velocity_y(0)*20", 0, 0]
},
"leg_back_left": {
"rotation": ["10+math.sin(q.anim_time*90*20-60)/2+q.r.velocity_y(0)*20", 0, 0]
},
"leg_back_left2": {
"rotation": ["-15+math.sin(q.anim_time*90*20-150)+q.r.velocity_y(0)*20", 0, 0]
},
"hips": {
"rotation": ["q.r.velocity_y(0)*-20", 0, 0]
},
"tail": {
"rotation": ["q.r.velocity_y(0)*20+math.sin(q.anim_time*90*10)*2", 0, 0]
},
"tail2": {
"rotation": ["math.sin(q.anim_time*90*10-30)*3", 0, 0]
},
"tail3": {
"rotation": ["math.sin(q.anim_time*90*10-60)*4", 0, 0]
},
"tail4": {
"rotation": ["math.sin(q.anim_time*90*10-90)*5", 0, 0]
},
"tail5": {
"rotation": ["math.sin(q.anim_time*90*10-120)*6", 0, 0]
},
"tail6": {
"rotation": ["math.sin(q.anim_time*90*10-150)*8", 0, 0]
},
"mane_right": {
"rotation": [0, "NaN-math.sin(q.anim_time*90*20-180)*2", 0]
},
"mane_left": {
"rotation": [0, "-math.sin(q.anim_time*90*20-180)*2", 0]
},
"mane_top_fur": {
"rotation": ["-math.sin(q.anim_time*90*20)*2", 0, 0]
},
"mane_middle_right": {
"rotation": ["-math.sin(q.anim_time*90*20-30)*2", 0, 0]
},
"mane_middle_left": {
"rotation": ["-math.sin(q.anim_time*90*20-90)*2", 0, 0]
},
"horn_glow_right": {
"scale": 0
},
"horn_glow_right2": {
"scale": 0
},
"horn_glow_right3": {
"scale": 0
},
"horn_glow_left": {
"scale": 0
},
"horn_glow_left2": {
"scale": 0
},
"horn_glow_left3": {
"scale": 0
}
}
},
"animation.tauros_paldean_blaze.render": {
"loop": true,
"bones": {
@@ -911,6 +1031,20 @@
"effect": "pokemon.tauros.cry"
}
}
},
"animation.tauros_paldean_blaze.glow": {
"loop": true,
"bones": {
"head_markings_top": {
"position": [0, -0.1, 0]
},
"head_markings_glow_top": {
"position": [0, 0.1, 0]
},
"head_marking_glow": {
"position": [0, 0.1, -0.1]
}
}
}
}
}
@@ -3600,28 +3600,64 @@
"left_eye": {
"position": {
"0.0": [0, 0, 0],
"0.375": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.25": {"pre": [0, 0, 0.1], "post": [0, 0, 0]},
"1.9583": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"2.5": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
"0.375": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"1.25": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
},
"1.9583": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"2.5": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
}
}
},
"right_eye": {
"position": {
"0.0": [0, 0, 0],
"0.375": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.25": {"pre": [0, 0, 0.1], "post": [0, 0, 0]},
"1.9583": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"2.5": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
"0.375": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"1.25": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
},
"1.9583": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"2.5": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
}
}
},
"closed": {
"position": {
"0.0": [0, 0, 0],
"0.375": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"1.25": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
"1.9583": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"2.5": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
"0.375": {
"pre": [0, 0, 0],
"post": [0, 0, -0.1]
},
"1.25": {
"pre": [0, 0, -0.1],
"post": [0, 0, 0]
},
"1.9583": {
"pre": [0, 0, 0],
"post": [0, 0, -0.1]
},
"2.5": {
"pre": [0, 0, -0.1],
"post": [0, 0, 0]
}
}
},
"front_neck_fluff_lower": {
@@ -4413,28 +4449,64 @@
"left_eye": {
"position": {
"0.0": [0, 0, 0],
"0.8333": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.25": {"pre": [0, 0, 0.1], "post": [0, 0, 0]},
"2.0": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"2.2917": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
"0.8333": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"1.25": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
},
"2.0": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"2.2917": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
}
}
},
"right_eye": {
"position": {
"0.0": [0, 0, 0],
"0.8333": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.25": {"pre": [0, 0, 0.1], "post": [0, 0, 0]},
"2.0": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"2.2917": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
"0.8333": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"1.25": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
},
"2.0": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"2.2917": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
}
}
},
"closed": {
"position": {
"0.0": [0, 0, 0],
"0.8333": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"1.25": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
"2.0": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"2.2917": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
"0.8333": {
"pre": [0, 0, 0],
"post": [0, 0, -0.1]
},
"1.25": {
"pre": [0, 0, -0.1],
"post": [0, 0, 0]
},
"2.0": {
"pre": [0, 0, 0],
"post": [0, 0, -0.1]
},
"2.2917": {
"pre": [0, 0, -0.1],
"post": [0, 0, 0]
}
}
},
"front_neck_fluff_lower": {
@@ -4575,25 +4647,49 @@
"left_pupil": {
"position": {
"0.0": [0, 0, 0],
"1.25": {"pre": [0, 0, 0], "post": [0, -0.8, 0]},
"2.2917": {"pre": [0, -0.8, 0], "post": [0, 0, 0]}
"1.25": {
"pre": [0, 0, 0],
"post": [0, -0.8, 0]
},
"2.2917": {
"pre": [0, -0.8, 0],
"post": [0, 0, 0]
}
},
"scale": {
"0.0": [1, 1, 1],
"1.25": {"pre": [1, 1, 1], "post": [1, 0.5, 1]},
"2.2917": {"pre": [1, 0.5, 1], "post": [1, 1, 1]}
"1.25": {
"pre": [1, 1, 1],
"post": [1, 0.5, 1]
},
"2.2917": {
"pre": [1, 0.5, 1],
"post": [1, 1, 1]
}
}
},
"right_pupil": {
"position": {
"0.0": [0, 0, 0],
"1.25": {"pre": [0, 0, 0], "post": [0, -0.8, 0]},
"2.2917": {"pre": [0, -0.8, 0], "post": [0, 0, 0]}
"1.25": {
"pre": [0, 0, 0],
"post": [0, -0.8, 0]
},
"2.2917": {
"pre": [0, -0.8, 0],
"post": [0, 0, 0]
}
},
"scale": {
"0.0": [1, 1, 1],
"1.25": {"pre": [1, 1, 1], "post": [1, 0.5, 1]},
"2.2917": {"pre": [1, 0.5, 1], "post": [1, 1, 1]}
"1.25": {
"pre": [1, 1, 1],
"post": [1, 0.5, 1]
},
"2.2917": {
"pre": [1, 0.5, 1],
"post": [1, 1, 1]
}
}
},
"back_neck_fluff_lower": {
@@ -5407,28 +5503,64 @@
"left_eye": {
"position": {
"0.0": [0, 0, 0],
"0.5": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"0.7917": {"pre": [0, 0, 0.1], "post": [0, 0, 0]},
"1.375": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.875": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
"0.5": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"0.7917": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
},
"1.375": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"1.875": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
}
}
},
"right_eye": {
"position": {
"0.0": [0, 0, 0],
"0.5": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"0.7917": {"pre": [0, 0, 0.1], "post": [0, 0, 0]},
"1.375": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.875": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
"0.5": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"0.7917": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
},
"1.375": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"1.875": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
}
}
},
"closed": {
"position": {
"0.0": [0, 0, 0],
"0.5": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"0.7917": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
"1.375": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"1.875": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
"0.5": {
"pre": [0, 0, 0],
"post": [0, 0, -0.1]
},
"0.7917": {
"pre": [0, 0, -0.1],
"post": [0, 0, 0]
},
"1.375": {
"pre": [0, 0, 0],
"post": [0, 0, -0.1]
},
"1.875": {
"pre": [0, 0, -0.1],
"post": [0, 0, 0]
}
}
},
"front_neck_fluff_lower": {
@@ -6512,28 +6644,64 @@
"left_eye": {
"position": {
"0.0": [0, 0, 0],
"0.5": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"0.7917": {"pre": [0, 0, 0.1], "post": [0, 0, 0]},
"1.375": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.875": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
"0.5": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"0.7917": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
},
"1.375": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"1.875": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
}
}
},
"right_eye": {
"position": {
"0.0": [0, 0, 0],
"0.5": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"0.7917": {"pre": [0, 0, 0.1], "post": [0, 0, 0]},
"1.375": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.875": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
"0.5": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"0.7917": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
},
"1.375": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"1.875": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
}
}
},
"closed": {
"position": {
"0.0": [0, 0, 0],
"0.5": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"0.7917": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
"1.375": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"1.875": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
"0.5": {
"pre": [0, 0, 0],
"post": [0, 0, -0.1]
},
"0.7917": {
"pre": [0, 0, -0.1],
"post": [0, 0, 0]
},
"1.375": {
"pre": [0, 0, 0],
"post": [0, 0, -0.1]
},
"1.875": {
"pre": [0, 0, -0.1],
"post": [0, 0, 0]
}
}
},
"front_neck_fluff_lower": {
@@ -7414,22 +7582,40 @@
"left_eye": {
"position": {
"0.0": [0, 0, 0],
"0.5": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.9583": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
"0.5": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"1.9583": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
}
}
},
"right_eye": {
"position": {
"0.0": [0, 0, 0],
"0.5": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.9583": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
"0.5": {
"pre": [0, 0, 0],
"post": [0, 0, 0.1]
},
"1.9583": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
}
}
},
"closed": {
"position": {
"0.0": [0, 0, 0],
"0.5": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"1.9583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
"0.5": {
"pre": [0, 0, 0],
"post": [0, 0, -0.1]
},
"1.9583": {
"pre": [0, 0, -0.1],
"post": [0, 0, 0]
}
}
},
"front_neck_fluff_lower": {
@@ -7707,22 +7893,40 @@
"closed": {
"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": {
"pre": [0, 0, -0.1],
"post": [0, 0, -0.1]
},
"0.1667": {
"pre": [0, 0, -0.1],
"post": [0, 0, 0]
}
}
},
"left_eye": {
"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": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0.1]
},
"0.1667": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
}
}
},
"right_eye": {
"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": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0.1]
},
"0.1667": {
"pre": [0, 0, 0.1],
"post": [0, 0, 0]
}
}
}
}
@@ -7881,6 +8085,182 @@
"effect": "pokemon.slaking.cry"
}
}
},
"animation.slaking.ride_ground": {
"loop": true,
"bones": {
"torso": {
"rotation": [0, "q.r.yaw_change(0)*20", "q.r.yaw_change(0)*-8"]
},
"upper_torso": {
"rotation": [0, "q.r.yaw_change(0)*10", 0]
},
"head": {
"rotation": [0, "q.r.yaw_change(0)*30", 0]
},
"legs": {
"rotation": [0, "q.r.yaw_change(0)*5", 0]
}
}
},
"animation.slaking.ride_jump": {
"loop": true,
"bones": {
"body": {
"position": [0, "2+math.clamp((q.r.velocity_y(0)*3),0,3)+math.sin(q.anim_time*90*12)*0.1", 0]
},
"torso": {
"rotation": ["30+q.r.velocity_y(0)*-20", 0, 0]
},
"upper_torso": {
"rotation": ["10+q.r.velocity_y(0)*10", 0, 0]
},
"right_upper_arm": {
"rotation": ["-17.5+q.r.velocity_y(0)*20", "-5+q.r.velocity_y(0)*20-math.sin(q.anim_time*90*20)/8", "-17.5+q.r.velocity_y(0)*-20"]
},
"right_lower_arm": {
"rotation": [0, "-60+q.r.velocity_y(0)*20-math.sin(q.anim_time*90*20-90)/2", 0]
},
"right_hand": {
"rotation": [0, 0, -20]
},
"right_index_finger": {
"rotation": [0, 0, -30]
},
"right_index_finger_tip": {
"rotation": [0, 0, -62.5]
},
"right_middle_finger": {
"rotation": [0, 0, -25]
},
"right_middle_finger_tip": {
"rotation": [0, 0, -75]
},
"right_ring_finger": {
"rotation": [0, 0, -32.5]
},
"right_ring_finger_tip": {
"rotation": [0, 0, -80]
},
"right_pinky_finger": {
"rotation": [0, 0, -40]
},
"right_pinky_finger_tip": {
"rotation": [0, 0, -77.5]
},
"right_thumb": {
"rotation": [0, -25, -22.5]
},
"right_thumb_tip": {
"rotation": [0, 50, 0]
},
"left_upper_arm": {
"rotation": ["q.r.velocity_y(0)*20", "5+q.r.velocity_y(0)*-20+math.sin(q.anim_time*90*20)/8", "17.5+q.r.velocity_y(0)*20"]
},
"left_lower_arm": {
"rotation": [0, "47.5+q.r.velocity_y(0)*-20+math.sin(q.anim_time*90*20-90)/2", 0]
},
"left_hand": {
"rotation": [0, 0, 20]
},
"left_index_finger": {
"rotation": [0, 0, 30]
},
"left_index_finger_tip": {
"rotation": [0, 0, 62.5]
},
"left_middle_finger": {
"rotation": [0, 0, 25]
},
"left_middle_finger_tip": {
"rotation": [0, 0, 75]
},
"left_ring_finger": {
"rotation": [0, 0, 32.5]
},
"left_ring_finger_tip": {
"rotation": [0, 0, 80]
},
"left_pinky_finger": {
"rotation": [0, 0, 40]
},
"left_pinky_finger_tip": {
"rotation": [0, 0, 77.5]
},
"left_thumb": {
"rotation": [0, 25, 22.5]
},
"left_thumb_tip": {
"rotation": [0, -50, 0]
},
"head": {
"rotation": ["math.clamp((q.r.velocity_y(0)*30),-30,-10)+math.sin(q.anim_time*90*20)/8", 0, 0]
},
"left_head_tuft": {
"rotation": [0, "-17.5+math.sin(q.anim_time*90*20)*2", 0]
},
"right_head_tuft": {
"rotation": [0, "17.5-math.sin(q.anim_time*90*20-90)*2", 0]
},
"front_neck_fluff_lower": {
"rotation": ["math.sin(q.anim_time*90*20)", 0, 0]
},
"front_neck_fluff_upper": {
"rotation": ["-2.5+math.sin(q.anim_time*90*20-90)", 0, 0]
},
"back_neck_fluff_lower": {
"rotation": ["-math.sin(q.anim_time*90*20)", 0, 0]
},
"back_neck_fluff_upper": {
"rotation": ["-math.sin(q.anim_time*90*20-90)", 0, 0]
},
"left_neck_fluff_lower": {
"rotation": [0, 0, "math.sin(q.anim_time*90*20)"]
},
"left_neck_fluff_upper": {
"rotation": [0, 0, "math.sin(q.anim_time*90*20-90)"]
},
"right_neck_fluff_lower": {
"rotation": [0, 0, "-math.sin(q.anim_time*90*20)"]
},
"right_neck_fluff_upper": {
"rotation": [0, 0, "-math.sin(q.anim_time*90*20-90)"]
},
"left_upper_leg": {
"rotation": ["-45+q.r.velocity_y(0)*30+math.sin(q.anim_time*90*20-60)/4", -17.5, 0]
},
"left_lower_leg": {
"rotation": ["55+math.clamp((q.r.velocity_y(0)*30),-30,0)+math.sin(q.anim_time*90*20-150)/2", 0, 0]
},
"left_foot": {
"rotation": [2.5, 0, 0]
},
"left_small_toes": {
"rotation": ["27.5+math.clamp((q.r.velocity_y(0)*30),-27.5,0)", 0, 0]
},
"left_big_toe": {
"rotation": ["10+math.clamp((q.r.velocity_y(0)*10),-105,0)", 0, 0]
},
"right_upper_leg": {
"rotation": ["-30+q.r.velocity_y(0)*30+math.sin(q.anim_time*90*20)/4", 15, 0]
},
"right_lower_leg": {
"rotation": ["60+math.clamp((q.r.velocity_y(0)*40),-40,0)+math.sin(q.anim_time*90*20-90)/2", 0, 0]
},
"right_foot": {
"rotation": [2.5, 0, 0]
},
"right_big_toe": {
"rotation": ["10+math.clamp((q.r.velocity_y(0)*10),-105,0)", 0, 0]
},
"right_small_toes": {
"rotation": ["27.5+math.clamp((q.r.velocity_y(0)*30),-27.5,0)", 0, 0]
},
"locator_seat_1": {
"rotation": [-40, 0, 0],
"position": [0, -5, 0]
}
}
}
}
}
@@ -7,8 +7,8 @@
"texture_width": 128,
"texture_height": 128,
"visible_bounds_width": 10,
"visible_bounds_height": 3.5,
"visible_bounds_offset": [0, 1.25, 0]
"visible_bounds_height": 2.5,
"visible_bounds_offset": [0, 0.75, 0]
},
"bones": [
{
@@ -132,17 +132,17 @@
{
"name": "locator_seat_1",
"parent": "torso",
"pivot": [0, 18.25, 3.75],
"pivot": [0, 15.25, 3.75],
"locators": {
"seat_1": [0, 18.25, 3.75]
"seat_1": [0, 15.25, 3.75]
}
},
{
"name": "locator_seat_2",
"parent": "torso",
"pivot": [0, 15, 17],
"pivot": [0, 12, 17],
"locators": {
"seat_2": [0, 15, 17]
"seat_2": [0, 12, 17]
}
},
{
@@ -164,11 +164,6 @@
{
"name": "head",
"parent": "neck",
"pivot": [0, 4.75, -34.5]
},
{
"name": "head_ai",
"parent": "head",
"pivot": [0, 4.75, -34.5],
"cubes": [
{"origin": [-5.5, 0, -39], "size": [11, 10, 10], "inflate": 0.21, "uv": [0, 93]},
@@ -176,74 +171,48 @@
]
},
{
"name": "jaw",
"parent": "head_ai",
"pivot": [0, 1.85, -38.5],
"cubes": [
{"origin": [-4, -0.15, -41.5], "size": [8, 2, 3], "uv": [58, 35]}
]
},
{
"name": "locator_mouth",
"parent": "jaw",
"pivot": [0, 1.75, -39.2],
"name": "locator_head",
"parent": "head",
"pivot": [0, 10.25, -37],
"locators": {
"mouth": [0, 1.75, -39.2],
"special": [0, 1.75, -39.2]
"head": [0, 10.25, -37]
}
},
{
"name": "locator_item",
"parent": "jaw",
"pivot": [0, 1.75, -41.45],
"name": "locator_item_hat",
"parent": "head",
"pivot": [0, 10.25, -34.75],
"locators": {
"item": [0, 1.75, -41.45]
"item_hat": [0, 10.25, -34.75]
}
},
{
"name": "locator_jaw_lower",
"parent": "jaw",
"pivot": [0, 1.8, -41.5],
"name": "locator_face",
"parent": "head",
"pivot": [0, 4.7, -42.15],
"locators": {
"jaw2": [0, 1.8, -41.5]
"face": [0, 4.7, -42.15]
}
},
{
"name": "snout",
"parent": "head_ai",
"pivot": [0, 3.88, -39.15],
"cubes": [
{"origin": [-5, 1.75, -42.15], "size": [10, 3, 3], "uv": [6, 122]},
{"origin": [-1.5, 4.26, -41.15], "size": [3, 1, 1], "uv": [80, 35]}
]
},
{
"name": "locator_jaw_upper",
"parent": "snout",
"pivot": [0, 1.75, -40.65],
"name": "locator_item_face",
"parent": "head",
"pivot": [0, 6.2, -39.2],
"locators": {
"jaw1": [0, 1.75, -40.65]
"item_face": [0, 6.2, -39.2]
}
},
{
"name": "tooth_left",
"parent": "snout",
"pivot": [4, 2, -40.65],
"cubes": [
{"origin": [3.5, 0, -41.15], "size": [1, 2, 1], "uv": [80, 37]}
]
},
{
"name": "tooth_right",
"parent": "snout",
"pivot": [-4, 2, -40.65],
"cubes": [
{"origin": [-4.5, 0, -41.15], "size": [1, 2, 1], "uv": [84, 37]}
]
"name": "locator_horn",
"parent": "head",
"pivot": [0, 13.15, -34.75],
"locators": {
"horn": [0, 13.15, -34.75]
}
},
{
"name": "eyes",
"parent": "head_ai",
"parent": "head",
"pivot": [3.5, 6.5, -39.27]
},
{
@@ -385,43 +354,69 @@
]
},
{
"name": "locator_horn",
"parent": "head_ai",
"pivot": [0, 13.15, -34.75],
"name": "snout",
"parent": "head",
"pivot": [0, 3.88, -39.15],
"cubes": [
{"origin": [-5, 1.75, -42.15], "size": [10, 3, 3], "uv": [6, 122]},
{"origin": [-1.5, 4.26, -41.15], "size": [3, 1, 1], "uv": [80, 35]}
]
},
{
"name": "locator_jaw_upper",
"parent": "snout",
"pivot": [0, 1.75, -40.65],
"locators": {
"horn": [0, 13.15, -34.75]
"jaw1": [0, 1.75, -40.65]
}
},
{
"name": "locator_item_face",
"parent": "head_ai",
"pivot": [0, 6.2, -39.2],
"name": "tooth_left",
"parent": "snout",
"pivot": [4, 2, -40.65],
"cubes": [
{"origin": [3.5, 0, -41.15], "size": [1, 2, 1], "uv": [80, 37]}
]
},
{
"name": "tooth_right",
"parent": "snout",
"pivot": [-4, 2, -40.65],
"cubes": [
{"origin": [-4.5, 0, -41.15], "size": [1, 2, 1], "uv": [84, 37]}
]
},
{
"name": "jaw",
"parent": "head",
"pivot": [0, 1.85, -38.5],
"cubes": [
{"origin": [-4, -0.15, -41.5], "size": [8, 2, 3], "uv": [58, 35]}
]
},
{
"name": "locator_mouth",
"parent": "jaw",
"pivot": [0, 1.75, -39.2],
"locators": {
"item_face": [0, 6.2, -39.2]
"mouth": [0, 1.75, -39.2],
"special": [0, 1.75, -39.2]
}
},
{
"name": "locator_face",
"parent": "head_ai",
"pivot": [0, 4.7, -42.15],
"name": "locator_item",
"parent": "jaw",
"pivot": [0, 1.75, -41.45],
"locators": {
"face": [0, 4.7, -42.15]
"item": [0, 1.75, -41.45]
}
},
{
"name": "locator_item_hat",
"parent": "head_ai",
"pivot": [0, 10.25, -34.75],
"name": "locator_jaw_lower",
"parent": "jaw",
"pivot": [0, 1.8, -41.5],
"locators": {
"item_hat": [0, 10.25, -34.75]
}
},
{
"name": "locator_head",
"parent": "head_ai",
"pivot": [0, 10.25, -37],
"locators": {
"head": [0, 10.25, -37]
"jaw2": [0, 1.8, -41.5]
}
},
{
@@ -54,17 +54,17 @@
{
"name": "head",
"parent": "torso",
"pivot": [0, 9.5, -10.5]
"pivot": [0, 9.4, -10.7]
},
{
"name": "head_correction",
"parent": "head",
"pivot": [0, 9.5, -10.5]
"pivot": [0, 10, -11]
},
{
"name": "head_ai",
"parent": "head_correction",
"pivot": [0, 9.5, -10.5]
"pivot": [0, 10, -11]
},
{
"name": "head_angle",
@@ -99,6 +99,23 @@
{"origin": [-4, 4.53407, -24.34461], "size": [8, 3, 8], "inflate": -0.01, "pivot": [0, 6.53407, -20.34461], "rotation": [0, -45, 0], "uv": [92, 0]}
]
},
{
"name": "locator_jaw_lower",
"parent": "jaw",
"pivot": [0, 7, -22.25],
"rotation": [90, 0, 0],
"locators": {
"jaw_lower": [0, 7, -22.25]
}
},
{
"name": "locator_item",
"parent": "jaw",
"pivot": [0, 7.5, -25.5],
"locators": {
"item": [0, 7.5, -25.5]
}
},
{
"name": "left_ear",
"parent": "head_angle",
@@ -129,6 +146,17 @@
{"origin": [0, 14.53407, -27.00146], "size": [0, 2, 2], "uv": [0, 44]}
]
},
{
"name": "locator_horn",
"parent": "horn",
"pivot": [0, 17.5, -25.5],
"rotation": [-90, 0, 0],
"locators": {
"horn": [0, 17.5, -25.5],
"physical": [0, 17.5, -25.5],
"special": [0, 17.5, -25.5]
}
},
{
"name": "left_tooth",
"parent": "head_angle",
@@ -169,6 +197,14 @@
{"origin": [6.51, 10.03407, -23.25882], "size": [0, 1, 1], "inflate": 0.02, "pivot": [6.5, 10.53407, -20.75882], "rotation": [0, 45, 0], "uv": [2, 0]}
]
},
{
"name": "locator_eye_left",
"parent": "left_pupil",
"pivot": [5, 10.5, -22.25],
"locators": {
"eye3": [5, 10.5, -22.25]
}
},
{
"name": "left_eyelid",
"parent": "eyes",
@@ -260,6 +296,71 @@
{"origin": [-6.51, 10.03407, -23.25882], "size": [0, 1, 1], "inflate": 0.02, "pivot": [-6.5, 10.53407, -20.75882], "rotation": [0, -45, 0], "uv": [0, 0]}
]
},
{
"name": "locator_eye_right",
"parent": "right_pupil",
"pivot": [-5, 10.5, -22.25],
"locators": {
"eye2": [-5, 10.5, -22.25]
}
},
{
"name": "locator_mouth",
"parent": "head",
"pivot": [0, 7, -17],
"locators": {
"mouth": [0, 7, -17]
}
},
{
"name": "locator_jaw_upper",
"parent": "head",
"pivot": [0, 7.75, -20.25],
"rotation": [-90, 0, 0],
"locators": {
"jaw_upper": [0, 7.75, -20.25]
}
},
{
"name": "locator_head",
"parent": "head",
"pivot": [0, 15, -19.25],
"locators": {
"head": [0, 15, -19.25]
}
},
{
"name": "locator_item_hat",
"parent": "head",
"pivot": [0, 16, -17.25],
"locators": {
"item_hat": [0, 16, -17.25]
}
},
{
"name": "locator_face",
"parent": "head",
"pivot": [0, 10.5, -27.25],
"locators": {
"face": [0, 10.5, -27.25]
}
},
{
"name": "locator_item_face",
"parent": "head",
"pivot": [0, 10.25, -27.25],
"locators": {
"item_face": [0, 10.25, -27.25]
}
},
{
"name": "locator_seat_1",
"parent": "torso",
"pivot": [0, 19, -8],
"locators": {
"seat_1": [0, 19, -8]
}
},
{
"name": "left_front_leg",
"parent": "body",
@@ -285,6 +386,15 @@
{"origin": [9, 0, -11.5], "size": [0, 2, 2], "pivot": [9, 0, -9.5], "rotation": [0, -2.5, 0], "uv": [16, 36]}
]
},
{
"name": "locator_foot_primary2",
"parent": "left_front_foot",
"pivot": [7.5, 1, -7.1],
"rotation": [90, 0, 0],
"locators": {
"foot_primary2": [7.5, 1, -7.1]
}
},
{
"name": "right_front_leg",
"parent": "body",
@@ -310,6 +420,15 @@
{"origin": [-9, 0, -11.5], "size": [0, 2, 2], "pivot": [-9, 0, -9.5], "rotation": [0, 2.5, 0], "uv": [12, 34]}
]
},
{
"name": "locator_foot_primary1",
"parent": "right_front_foot",
"pivot": [-7.5, 1, -7.1],
"rotation": [90, 0, 0],
"locators": {
"foot_primary1": [-7.5, 1, -7.1]
}
},
{
"name": "left_back_leg",
"parent": "body",
@@ -335,6 +454,15 @@
{"origin": [8.5, 0, 2], "size": [0, 2, 2], "pivot": [8.5, 0, 4], "rotation": [0, -5, 0], "uv": [0, 36]}
]
},
{
"name": "locator_foot_secondary2",
"parent": "left_back_foot",
"pivot": [7.5, 1, 7.15],
"rotation": [90, 0, 0],
"locators": {
"foot_secondary2": [7.5, 1, 7.15]
}
},
{
"name": "right_back_leg",
"parent": "body",
@@ -359,6 +487,47 @@
{"origin": [-5.5, 0, 2], "size": [0, 2, 2], "pivot": [-5.5, 0, 4], "rotation": [0, -5, 0], "uv": [0, 8]},
{"origin": [-8.5, 0, 2], "size": [0, 2, 2], "pivot": [-8.5, 0, 4], "rotation": [0, 5, 0], "uv": [0, 6]}
]
},
{
"name": "locator_foot_secondary",
"parent": "right_back_foot",
"pivot": [-7.5, 1, 7.15],
"rotation": [90, 0, 0],
"locators": {
"foot_secondary": [-7.5, 1, 7.15]
}
},
{
"name": "locator_middle",
"parent": "body",
"pivot": [0, 12, 0],
"locators": {
"middle": [0, 12, 0]
}
},
{
"name": "locator_target",
"parent": "body",
"pivot": [0, 6.75, -31],
"locators": {
"target": [0, 6.75, -31]
}
},
{
"name": "locator_root",
"parent": "rhyhorn",
"pivot": [0, 0, 0],
"locators": {
"root": [0, 0, 0]
}
},
{
"name": "locator_top",
"parent": "rhyhorn",
"pivot": [0, 25.5, 0],
"locators": {
"top": [0, 25.5, 0]
}
}
]
}
@@ -27,16 +27,20 @@
"cubes": [
{"origin": [-8.5, 4, -11], "size": [17, 15, 21], "uv": [0, 36]},
{"origin": [-8.5, 4, -11], "size": [17, 15, 21], "inflate": 0.2, "uv": [0, 0]},
{"origin": [8.75, 9.5, -9.5], "size": [0, 10, 14], "pivot": [8.75, 12.75, -9.5], "rotation": [15, 10, 2.5], "uv": [28, 58]},
{"origin": [-8.75, 9.5, -9.5], "size": [0, 10, 14], "pivot": [-8.75, 12.75, -9.5], "rotation": [15, -10, -2.5], "uv": [0, 58]},
{"origin": [8.75, 1.75, -10.5], "size": [0, 11, 11], "pivot": [8.75, 8.75, -9.5], "rotation": [17.5, 12.5, 5], "uv": [24, 83]},
{"origin": [-8.75, 1.75, -10.5], "size": [0, 11, 11], "pivot": [-8.75, 8.75, -9.5], "rotation": [17.5, -12.5, -5], "uv": [80, 6]},
{"origin": [9.25, 4, -1.75], "size": [0, 9, 14], "pivot": [9.225, -2.25, 0.25], "rotation": [2.5, 12.5, 2.5], "uv": [0, 68]},
{"origin": [-9.25, 4, -1.75], "size": [0, 9, 14], "pivot": [-9.225, -2.25, 0.25], "rotation": [2.5, -12.5, -2.5], "uv": [56, 62]},
{"origin": [9.5, 11, -0.5], "size": [0, 8, 12], "pivot": [9.95389, 15.17057, 1.69638], "rotation": [0, 5, -5], "uv": [80, 16]},
{"origin": [-9.5, 11, -0.5], "size": [0, 8, 12], "pivot": [-9.95389, 15.17057, 1.69638], "rotation": [0, -5, 5], "uv": [0, 79]}
]
},
{
"name": "locator_seat_1",
"parent": "torso",
"pivot": [0, 19, -8],
"locators": {
"seat_1": [0, 19, -8]
}
},
{
"name": "spine",
"parent": "torso",
@@ -51,20 +55,52 @@
{"origin": [0, 19.75, 5.75], "size": [0, 3, 3], "uv": [15, 5]}
]
},
{
"name": "left_bodyplate",
"parent": "torso",
"pivot": [8.75, 12.75, -9.5],
"cubes": [
{"origin": [8.75, 9.5, -9.5], "size": [0, 10, 14], "pivot": [8.75, 12.75, -9.5], "rotation": [15, 10, 2.5], "uv": [28, 58]}
]
},
{
"name": "right_bodyplate",
"parent": "torso",
"pivot": [-8.75, 12.75, -9.5],
"cubes": [
{"origin": [-8.75, 9.5, -9.5], "size": [0, 10, 14], "pivot": [-8.75, 12.75, -9.5], "rotation": [15, -10, -2.5], "uv": [0, 58]}
]
},
{
"name": "left_legplate",
"parent": "torso",
"pivot": [8.75, 8.75, -7.5],
"cubes": [
{"origin": [8.75, 1.75, -10.5], "size": [0, 11, 11], "pivot": [8.75, 8.75, -9.5], "rotation": [17.5, 12.5, 5], "uv": [24, 83]}
]
},
{
"name": "right_legplate",
"parent": "torso",
"pivot": [-8.75, 8.75, -7.5],
"cubes": [
{"origin": [-8.75, 1.75, -10.5], "size": [0, 11, 11], "pivot": [-8.75, 8.75, -9.5], "rotation": [17.5, -12.5, -5], "uv": [80, 6]}
]
},
{
"name": "head",
"parent": "torso",
"pivot": [0, 9.5, -10.5]
"pivot": [0, 9.4, -10.7]
},
{
"name": "head_correction",
"parent": "head",
"pivot": [0, 9.5, -10.5]
"pivot": [0, 10, -11]
},
{
"name": "head_ai",
"parent": "head_correction",
"pivot": [0, 9.5, -10.5]
"pivot": [0, 10, -11]
},
{
"name": "head_angle",
@@ -99,6 +135,23 @@
{"origin": [-4, 4.53407, -24.34461], "size": [8, 3, 8], "inflate": -0.01, "pivot": [0, 6.53407, -20.34461], "rotation": [0, -45, 0], "uv": [92, 0]}
]
},
{
"name": "locator_jaw_lower",
"parent": "jaw_front",
"pivot": [0, 7, -22.25],
"rotation": [90, 0, 0],
"locators": {
"jaw_lower": [0, 7, -22.25]
}
},
{
"name": "locator_item",
"parent": "jaw_front",
"pivot": [0, 7.5, -25.5],
"locators": {
"item": [0, 7.5, -25.5]
}
},
{
"name": "left_ear",
"parent": "head_angle",
@@ -129,6 +182,17 @@
{"origin": [0, 15.03407, -27.00146], "size": [0, 3, 2], "pivot": [0, 15.78407, -26.00146], "rotation": [-7.5, 0, 0], "uv": [0, 0]}
]
},
{
"name": "locator_horn",
"parent": "horn",
"pivot": [0, 17.5, -25.5],
"rotation": [-90, 0, 0],
"locators": {
"horn": [0, 17.5, -25.5],
"physical": [0, 17.5, -25.5],
"special": [0, 17.5, -25.5]
}
},
{
"name": "left_tooth",
"parent": "head_angle",
@@ -169,6 +233,14 @@
{"origin": [6.51, 10.03407, -23.25882], "size": [0, 1, 1], "inflate": 0.02, "pivot": [6.5, 10.53407, -20.75882], "rotation": [0, 45, 0], "uv": [2, 0]}
]
},
{
"name": "locator_eye_left",
"parent": "left_pupil",
"pivot": [5, 10.5, -22.25],
"locators": {
"eye3": [5, 10.5, -22.25]
}
},
{
"name": "left_eyelid",
"parent": "eyes",
@@ -260,6 +332,63 @@
{"origin": [-6.51, 10.03407, -23.25882], "size": [0, 1, 1], "inflate": 0.02, "pivot": [-6.5, 10.53407, -20.75882], "rotation": [0, -45, 0], "uv": [0, 0]}
]
},
{
"name": "locator_eye_right",
"parent": "right_pupil",
"pivot": [-5, 10.5, -22.25],
"locators": {
"eye2": [-5, 10.5, -22.25]
}
},
{
"name": "locator_mouth",
"parent": "head_angle",
"pivot": [0, 7, -17],
"locators": {
"mouth": [0, 7, -17]
}
},
{
"name": "locator_jaw_upper",
"parent": "head_angle",
"pivot": [0, 7.75, -20.25],
"rotation": [-90, 0, 0],
"locators": {
"jaw_upper": [0, 7.75, -20.25]
}
},
{
"name": "locator_head",
"parent": "head_angle",
"pivot": [0, 15, -19.25],
"locators": {
"head": [0, 15, -19.25]
}
},
{
"name": "locator_item_hat",
"parent": "head_angle",
"pivot": [0, 16, -17.25],
"locators": {
"item_hat": [0, 16, -17.25]
}
},
{
"name": "locator_face",
"parent": "head_angle",
"pivot": [0, 10.5, -27.25],
"locators": {
"face": [0, 10.5, -27.25]
}
},
{
"name": "locator_item_face",
"parent": "head_angle",
"pivot": [0, 10.25, -27.25],
"locators": {
"item_face": [0, 10.25, -27.25]
}
},
{
"name": "left_front_leg",
"parent": "body",
@@ -285,6 +414,15 @@
{"origin": [9, 0, -11.5], "size": [0, 2, 2], "pivot": [9, 0, -9.5], "rotation": [0, -2.5, 0], "uv": [16, 36]}
]
},
{
"name": "locator_foot_primary2",
"parent": "left_front_foot",
"pivot": [7.5, 1, -7.1],
"rotation": [90, 0, 0],
"locators": {
"foot_primary2": [7.5, 1, -7.1]
}
},
{
"name": "right_front_leg",
"parent": "body",
@@ -310,6 +448,15 @@
{"origin": [-9, 0, -11.5], "size": [0, 2, 2], "pivot": [-9, 0, -9.5], "rotation": [0, 2.5, 0], "uv": [12, 34]}
]
},
{
"name": "locator_foot_primary1",
"parent": "right_front_foot",
"pivot": [-7.5, 1, -7.1],
"rotation": [90, 0, 0],
"locators": {
"foot_primary1": [-7.5, 1, -7.1]
}
},
{
"name": "left_back_leg",
"parent": "body",
@@ -335,6 +482,15 @@
{"origin": [8.5, 0, 2], "size": [0, 2, 2], "pivot": [8.5, 0, 4], "rotation": [0, -5, 0], "uv": [0, 36]}
]
},
{
"name": "locator_foot_secondary2",
"parent": "left_back_foot",
"pivot": [7.5, 1, 7.15],
"rotation": [90, 0, 0],
"locators": {
"foot_secondary2": [7.5, 1, 7.15]
}
},
{
"name": "right_back_leg",
"parent": "body",
@@ -359,6 +515,47 @@
{"origin": [-5.5, 0, 2], "size": [0, 2, 2], "pivot": [-5.5, 0, 4], "rotation": [0, -5, 0], "uv": [0, 8]},
{"origin": [-8.5, 0, 2], "size": [0, 2, 2], "pivot": [-8.5, 0, 4], "rotation": [0, 5, 0], "uv": [0, 6]}
]
},
{
"name": "locator_foot_secondary",
"parent": "right_back_foot",
"pivot": [-7.5, 1, 7.15],
"rotation": [90, 0, 0],
"locators": {
"foot_secondary": [-7.5, 1, 7.15]
}
},
{
"name": "locator_middle",
"parent": "body",
"pivot": [0, 12, 0],
"locators": {
"middle": [0, 12, 0]
}
},
{
"name": "locator_target",
"parent": "body",
"pivot": [0, 6.75, -31],
"locators": {
"target": [0, 6.75, -31]
}
},
{
"name": "locator_root",
"parent": "rhyhorn",
"pivot": [0, 0, 0],
"locators": {
"root": [0, 0, 0]
}
},
{
"name": "locator_top",
"parent": "rhyhorn",
"pivot": [0, 25.5, 0],
"locators": {
"top": [0, 25.5, 0]
}
}
]
}
@@ -90,6 +90,15 @@
{"origin": [24.5, 21, 1.5], "size": [2, 1, 1], "uv": [59, 37]}
]
},
{
"name": "locator_hand_secondary",
"parent": "left_lower_arm",
"pivot": [23.75, 22, 0],
"rotation": [0, -90, 0],
"locators": {
"hand_secondary": [23.75, 22, 0]
}
},
{
"name": "right_shoulder",
"parent": "upper_torso",
@@ -141,6 +150,23 @@
{"origin": [-26.5, 21, 1.5], "size": [2, 1, 1], "uv": [9, 0]}
]
},
{
"name": "locator_item",
"parent": "right_lower_arm",
"pivot": [-24.75, 22, 0],
"locators": {
"item": [-24.75, 22, 0]
}
},
{
"name": "locator_hand_primary",
"parent": "right_lower_arm",
"pivot": [-23.75, 22, 0],
"rotation": [0, 90, 0],
"locators": {
"hand_primary": [-23.75, 22, 0]
}
},
{
"name": "backspike2",
"parent": "upper_torso",
@@ -160,17 +186,17 @@
{
"name": "head",
"parent": "upper_torso",
"pivot": [0, 25.75, 0.5]
"pivot": [0, 26, 0]
},
{
"name": "head_correction",
"parent": "head",
"pivot": [0, 25.75, 0.5]
"pivot": [0, 26, 0]
},
{
"name": "head_ai",
"parent": "head_correction",
"pivot": [0, 25.75, 0.5]
"pivot": [0, 26, 0]
},
{
"name": "head_angle",
@@ -202,6 +228,15 @@
{"origin": [-3.5, 25, -12.5], "size": [7, 3, 3], "uv": [0, 70]}
]
},
{
"name": "locator_jaw_lower",
"parent": "jaw",
"pivot": [0, 28, -9.75],
"rotation": [90, 0, 0],
"locators": {
"jaw2": [0, 28, -9.75]
}
},
{
"name": "eyes",
"parent": "head_angle",
@@ -224,6 +259,14 @@
{"origin": [6, 30.75, -10], "size": [0, 1, 1], "inflate": 0.02, "uv": [0, 1]}
]
},
{
"name": "locator_eye_left",
"parent": "left_pupil",
"pivot": [6, 31.25, -9.5],
"locators": {
"eye_left": [6, 31.25, -9.5]
}
},
{
"name": "left_eyelid",
"parent": "eyes",
@@ -317,6 +360,14 @@
{"origin": [-6, 30.75, -10], "size": [0, 1, 1], "inflate": 0.02, "uv": [0, 0]}
]
},
{
"name": "locator_eye_right",
"parent": "right_pupil",
"pivot": [-6, 31.25, -9.5],
"locators": {
"eye_right": [-6, 31.25, -9.5]
}
},
{
"name": "left_ear",
"parent": "head_angle",
@@ -351,6 +402,16 @@
{"origin": [-2, 31.68934, -14.07538], "size": [4, 4, 4], "uv": [100, 100]}
]
},
{
"name": "locator_horn",
"parent": "horn_rotation",
"pivot": [0, 33.675, -20],
"locators": {
"horn": [0, 33.675, -20],
"special": [0, 33.675, -20],
"physical": [0, 33.675, -20]
}
},
{
"name": "backspike4",
"parent": "head_angle",
@@ -359,6 +420,63 @@
{"origin": [0, 26.5, 1.5], "size": [0, 5, 6], "pivot": [0, 31, 2.25], "rotation": [30, 0, 0], "uv": [0, 29]}
]
},
{
"name": "locator_jaw_upper",
"parent": "head_angle",
"pivot": [0, 28.25, -7.75],
"rotation": [-90, 0, 0],
"locators": {
"jaw1": [0, 28.25, -7.75]
}
},
{
"name": "locator_head",
"parent": "head_angle",
"pivot": [0, 36, -7.5],
"locators": {
"head": [0, 36, -7.5]
}
},
{
"name": "locator_item_hat",
"parent": "head_angle",
"pivot": [0, 36, -5],
"locators": {
"item_hat": [0, 36, -5]
}
},
{
"name": "locator_face",
"parent": "head_angle",
"pivot": [0, 31, -13.5],
"locators": {
"face": [0, 31, -13.5]
}
},
{
"name": "locator_item_face",
"parent": "head_angle",
"pivot": [0, 30.75, -13.5],
"locators": {
"item_face": [0, 30.75, -13.5]
}
},
{
"name": "locator_mouth",
"parent": "head_angle",
"pivot": [0, 27.5, -5.75],
"locators": {
"mouth": [0, 27.5, -5.75]
}
},
{
"name": "locator_seat_1",
"parent": "upper_torso",
"pivot": [0, 26.25, 9],
"locators": {
"seat_1": [0, 26.25, 9]
}
},
{
"name": "tail",
"parent": "torso",
@@ -392,6 +510,24 @@
{"origin": [-2, 5.25, 28.5], "size": [4, 4, 9], "uv": [89, 87]}
]
},
{
"name": "locator_tail_tip",
"parent": "tail4",
"pivot": [0, 7.25, 37.5],
"rotation": [0, 180, 0],
"locators": {
"tail_tip": [0, 7.25, 37.5]
}
},
{
"name": "locator_tail",
"parent": "tail3",
"pivot": [0, 7.25, 25],
"rotation": [0, 180, 0],
"locators": {
"tail": [0, 7.25, 25]
}
},
{
"name": "backspike",
"parent": "torso",
@@ -436,6 +572,15 @@
{"origin": [10, -0.25, -13], "size": [2, 2, 3], "pivot": [10, 0.75, -10], "rotation": [0, -5, 0], "uv": [29, 78]}
]
},
{
"name": "locator_foot_secondary",
"parent": "left_foot",
"pivot": [9, 1, -5.75],
"rotation": [90, 0, 0],
"locators": {
"foot_secondary": [9, 1, -5.75]
}
},
{
"name": "right_upper_leg",
"parent": "body",
@@ -471,6 +616,47 @@
{"origin": [-8, -0.25, -13], "size": [2, 2, 3], "pivot": [-8, 0.75, -10], "rotation": [0, -5, 0], "uv": [77, 0]},
{"origin": [-12, -0.25, -13], "size": [2, 2, 3], "pivot": [-10, 0.75, -10], "rotation": [0, 5, 0], "uv": [26, 57]}
]
},
{
"name": "locator_foot_primary",
"parent": "right_foot",
"pivot": [-9, 1, -5.75],
"rotation": [90, 0, 0],
"locators": {
"foot_primary": [-9, 1, -5.75]
}
},
{
"name": "locator_middle",
"parent": "body",
"pivot": [0, 17, -2],
"locators": {
"middle": [0, 17, -2]
}
},
{
"name": "locator_target",
"parent": "body",
"pivot": [0, 17, -16],
"locators": {
"target": [0, 17, -16]
}
},
{
"name": "locator_top",
"parent": "rhydon",
"pivot": [0, 38, 0],
"locators": {
"top": [0, 38, 0]
}
},
{
"name": "locator_root",
"parent": "rhydon",
"pivot": [0, 0, 0],
"locators": {
"root": [0, 0, 0]
}
}
]
}
@@ -90,6 +90,15 @@
{"origin": [24.5, 21, 1.5], "size": [2, 1, 1], "uv": [59, 37]}
]
},
{
"name": "locator_hand_secondary",
"parent": "left_lower_arm",
"pivot": [23.75, 22, 0],
"rotation": [0, -90, 0],
"locators": {
"hand_secondary": [23.75, 22, 0]
}
},
{
"name": "right_shoulder",
"parent": "upper_torso",
@@ -141,6 +150,23 @@
{"origin": [-26.5, 21, 1.5], "size": [2, 1, 1], "uv": [9, 0]}
]
},
{
"name": "locator_item",
"parent": "right_lower_arm",
"pivot": [-24.75, 22, 0],
"locators": {
"item": [-24.75, 22, 0]
}
},
{
"name": "locator_hand_primary",
"parent": "right_lower_arm",
"pivot": [-23.75, 22, 0],
"rotation": [0, 90, 0],
"locators": {
"hand_primary": [-23.75, 22, 0]
}
},
{
"name": "backspike2",
"parent": "upper_torso",
@@ -160,17 +186,17 @@
{
"name": "head",
"parent": "upper_torso",
"pivot": [0, 25.75, 0.5]
"pivot": [0, 26, 0]
},
{
"name": "head_correction",
"parent": "head",
"pivot": [0, 25.75, 0.5]
"pivot": [0, 26, 0]
},
{
"name": "head_ai",
"parent": "head_correction",
"pivot": [0, 25.75, 0.5]
"pivot": [0, 26, 0]
},
{
"name": "head_angle",
@@ -202,6 +228,15 @@
{"origin": [-3.5, 25, -12.5], "size": [7, 3, 3], "uv": [0, 70]}
]
},
{
"name": "locator_jaw_lower",
"parent": "jaw",
"pivot": [0, 28, -9.75],
"rotation": [90, 0, 0],
"locators": {
"jaw2": [0, 28, -9.75]
}
},
{
"name": "eyes",
"parent": "head_angle",
@@ -224,6 +259,14 @@
{"origin": [6, 30.75, -10], "size": [0, 1, 1], "inflate": 0.02, "uv": [0, 1]}
]
},
{
"name": "locator_eye_left",
"parent": "left_pupil",
"pivot": [6, 31.25, -9.5],
"locators": {
"eye_left": [6, 31.25, -9.5]
}
},
{
"name": "left_eyelid",
"parent": "eyes",
@@ -317,6 +360,14 @@
{"origin": [-6, 30.75, -10], "size": [0, 1, 1], "inflate": 0.02, "uv": [0, 0]}
]
},
{
"name": "locator_eye_right",
"parent": "right_pupil",
"pivot": [-6, 31.25, -9.5],
"locators": {
"eye_right": [-6, 31.25, -9.5]
}
},
{
"name": "left_ear",
"parent": "head_angle",
@@ -351,6 +402,16 @@
{"origin": [-2, 31.68934, -15.07538], "size": [4, 4, 5], "uv": [15, 113]}
]
},
{
"name": "locator_horn",
"parent": "horn_rotation",
"pivot": [0, 33.675, -21],
"locators": {
"horn": [0, 33.675, -21],
"special": [0, 33.675, -21],
"physical": [0, 33.675, -21]
}
},
{
"name": "backspike4",
"parent": "head_angle",
@@ -359,6 +420,63 @@
{"origin": [0, 26.5, 1.5], "size": [0, 5, 6], "pivot": [0, 31, 2.25], "rotation": [30, 0, 0], "uv": [0, 29]}
]
},
{
"name": "locator_jaw_upper",
"parent": "head_angle",
"pivot": [0, 28.25, -7.75],
"rotation": [-90, 0, 0],
"locators": {
"jaw1": [0, 28.25, -7.75]
}
},
{
"name": "locator_head",
"parent": "head_angle",
"pivot": [0, 36, -7.5],
"locators": {
"head": [0, 36, -7.5]
}
},
{
"name": "locator_item_hat",
"parent": "head_angle",
"pivot": [0, 36, -5],
"locators": {
"item_hat": [0, 36, -5]
}
},
{
"name": "locator_face",
"parent": "head_angle",
"pivot": [0, 31, -13.5],
"locators": {
"face": [0, 31, -13.5]
}
},
{
"name": "locator_item_face",
"parent": "head_angle",
"pivot": [0, 30.75, -13.5],
"locators": {
"item_face": [0, 30.75, -13.5]
}
},
{
"name": "locator_mouth",
"parent": "head_angle",
"pivot": [0, 27.5, -5.75],
"locators": {
"mouth": [0, 27.5, -5.75]
}
},
{
"name": "locator_seat_1",
"parent": "upper_torso",
"pivot": [0, 26.25, 9],
"locators": {
"seat_1": [0, 26.25, 9]
}
},
{
"name": "tail",
"parent": "torso",
@@ -392,6 +510,24 @@
{"origin": [-2, 5.25, 28.5], "size": [4, 4, 9], "uv": [89, 87]}
]
},
{
"name": "locator_tail_tip",
"parent": "tail4",
"pivot": [0, 7.25, 37.5],
"rotation": [0, 180, 0],
"locators": {
"tail_tip": [0, 7.25, 37.5]
}
},
{
"name": "locator_tail",
"parent": "tail3",
"pivot": [0, 7.25, 25],
"rotation": [0, 180, 0],
"locators": {
"tail": [0, 7.25, 25]
}
},
{
"name": "backspike",
"parent": "torso",
@@ -436,6 +572,15 @@
{"origin": [10, -0.25, -13], "size": [2, 2, 3], "pivot": [10, 0.75, -10], "rotation": [0, -5, 0], "uv": [29, 78]}
]
},
{
"name": "locator_foot_secondary",
"parent": "left_foot",
"pivot": [9, 1, -5.75],
"rotation": [90, 0, 0],
"locators": {
"foot_secondary": [9, 1, -5.75]
}
},
{
"name": "right_upper_leg",
"parent": "body",
@@ -471,6 +616,47 @@
{"origin": [-8, -0.25, -13], "size": [2, 2, 3], "pivot": [-8, 0.75, -10], "rotation": [0, -5, 0], "uv": [77, 0]},
{"origin": [-12, -0.25, -13], "size": [2, 2, 3], "pivot": [-10, 0.75, -10], "rotation": [0, 5, 0], "uv": [26, 57]}
]
},
{
"name": "locator_foot_primary",
"parent": "right_foot",
"pivot": [-9, 1, -5.75],
"rotation": [90, 0, 0],
"locators": {
"foot_primary": [-9, 1, -5.75]
}
},
{
"name": "locator_middle",
"parent": "body",
"pivot": [0, 17, -2],
"locators": {
"middle": [0, 17, -2]
}
},
{
"name": "locator_target",
"parent": "body",
"pivot": [0, 17, -16],
"locators": {
"target": [0, 17, -16]
}
},
{
"name": "locator_root",
"parent": "rhydon",
"pivot": [0, 0, 0],
"locators": {
"root": [0, 0, 0]
}
},
{
"name": "locator_top",
"parent": "rhydon",
"pivot": [0, 38, 0],
"locators": {
"top": [0, 38, 0]
}
}
]
}
@@ -355,6 +355,14 @@
{"origin": [1.91, 18.75, -18.91], "size": [1, 2, 3], "inflate": 0.02, "uv": [50, 18]}
]
},
{
"name": "locator_seat_1",
"parent": "torso3",
"pivot": [0, 24, -2],
"locators": {
"seat_1": [0, 24, -2]
}
},
{
"name": "ftorso2",
"parent": "hips",
@@ -546,6 +546,14 @@
{"origin": [1.91, 18.75, -18.91], "size": [1, 2, 3], "inflate": 0.02, "uv": [50, 19]}
]
},
{
"name": "locator_seat_1",
"parent": "torso3",
"pivot": [0, 24, -2],
"locators": {
"seat_1": [0, 24, -2]
}
},
{
"name": "ftorso2",
"parent": "hips",
@@ -85,7 +85,6 @@
"name": "tail_end",
"parent": "tail6",
"pivot": [0, 16.5, 34],
"rotation": [0, 0, 0],
"cubes": [
{"origin": [-0.5, 17.5, 33], "size": [1, 1, 3], "inflate": 0.01, "pivot": [0, 18.5, 36], "rotation": [27.5, 0, 0], "uv": [114, 38]},
{"origin": [-2.25, 14.5, 32], "size": [1, 1, 4], "inflate": 0.01, "pivot": [-1.75, 14.5, 36], "rotation": [-27.5, -35, 0], "uv": [108, 38]},
@@ -112,7 +111,6 @@
"name": "tail_hair_left2",
"parent": "tail_hair_left",
"pivot": [1.75, 14, 43],
"rotation": [0, 0, 0],
"cubes": [
{"origin": [1.75, 14, 43], "size": [0, 2, 3], "uv": [78, 45]}
]
@@ -137,7 +135,6 @@
"name": "tail_hair_middle2",
"parent": "tail_hair_middle",
"pivot": [0, 17, 43],
"rotation": [0, 0, 0],
"cubes": [
{"origin": [0, 17, 43], "size": [0, 2, 3], "uv": [78, 42]}
]
@@ -162,7 +159,6 @@
"name": "tail_hair_right2",
"parent": "tail_hair_right",
"pivot": [-1.75, 14, 43],
"rotation": [0, 0, 0],
"cubes": [
{"origin": [-1.75, 14, 43], "size": [0, 2, 3], "uv": [78, 39]}
]
@@ -175,6 +171,14 @@
{"origin": [-5.5, 8.75, -2.5], "size": [11, 11, 6], "uv": [50, 0]}
]
},
{
"name": "locator_seat_1",
"parent": "torso2",
"pivot": [0, 24, -2],
"locators": {
"seat_1": [0, 24, -2]
}
},
{
"name": "torso3",
"parent": "torso2",
@@ -385,6 +385,14 @@
{"origin": [1.91, 18.75, -18.91], "size": [1, 2, 3], "inflate": 0.02, "uv": [50, 18]}
]
},
{
"name": "locator_seat_1",
"parent": "torso3",
"pivot": [0, 24, -2],
"locators": {
"seat_1": [0, 24, -2]
}
},
{
"name": "ftorso2",
"parent": "hips",
@@ -39,7 +39,12 @@
{
"name": "torso",
"parent": "waist",
"pivot": [0, 34.5, 0.5],
"pivot": [0, 34.5, 0.5]
},
{
"name": "abdomen",
"parent": "torso",
"pivot": [0, 39.5, 0.5],
"cubes": [
{"origin": [-3, 34, -2], "size": [6, 11, 5], "uv": [44, 75]},
{"origin": [-2.5, 37, -2], "size": [5, 8, 0], "inflate": 0.01, "uv": [161, 0]}
@@ -49,13 +54,48 @@
"name": "torso2",
"parent": "torso",
"pivot": [0, 43.75, 0.5],
"rotation": [5, 0, 0],
"rotation": [5, 0, 0]
},
{
"name": "chest",
"parent": "torso2",
"pivot": [0, 44, 0.5],
"cubes": [
{"origin": [-4, 42.75, -3], "size": [8, 5, 7], "inflate": 0.01, "uv": [64, 63]},
{"origin": [-4, 36.75, 4], "size": [8, 6, 0], "inflate": 0.01, "uv": [36, 102]},
{"origin": [-4, 37.75, 4], "size": [8, 2, 0], "inflate": 0.01, "pivot": [0, 39.75, 4], "rotation": [20, 0, 0], "uv": [39, 110]}
]
},
{
"name": "jacket_left",
"parent": "chest",
"pivot": [0, 42.75, 0.5],
"rotation": [0, 0, -32.5],
"cubes": [
{"origin": [0, 38.75, -3], "size": [4, 4, 7], "inflate": 0.02, "uv": [94, 14]},
{"origin": [4, 35.75, -3], "size": [0, 3, 7], "uv": [0, -2]},
{"origin": [4, 36.75, -3], "size": [0, 2, 7], "pivot": [4, 38.75, 0.5], "rotation": [0, 0, -20], "uv": [0, -5], "mirror": true},
{"origin": [0, 35.75, -3], "size": [4, 3, 0], "uv": [120, 47]},
{"origin": [0, 36.75, -3], "size": [4, 2, 0], "pivot": [2, 38.75, -3], "rotation": [-20, 0, 0], "uv": [106, 117], "mirror": true},
{"origin": [0, 35.75, 4], "size": [4, 3, 0], "uv": [122, 9]},
{"origin": [0, 36.75, 4], "size": [4, 2, 0], "pivot": [2, 38.75, 4], "rotation": [20, 0, 0], "uv": [132, 0]}
]
},
{
"name": "jacket_right",
"parent": "chest",
"pivot": [0, 42.75, 0.5],
"rotation": [0, 0, 32.5],
"cubes": [
{"origin": [-4, 38.75, -3], "size": [4, 4, 7], "inflate": 0.02, "uv": [94, 34]},
{"origin": [-4, 35.75, -3], "size": [0, 3, 7], "uv": [14, -2]},
{"origin": [-4, 36.75, -3], "size": [0, 2, 7], "pivot": [-4, 38.75, 0.5], "rotation": [0, 0, 20], "uv": [0, -7]},
{"origin": [-4, 35.75, -3], "size": [4, 3, 0], "uv": [124, 112]},
{"origin": [-4, 36.75, -3], "size": [4, 2, 0], "pivot": [-2, 38.75, -3], "rotation": [-20, 0, 0], "uv": [106, 115]},
{"origin": [-4, 35.75, 4], "size": [4, 3, 0], "uv": [171, 8]},
{"origin": [-4, 36.75, 4], "size": [4, 2, 0], "pivot": [-2, 38.75, 4], "rotation": [20, 0, 0], "uv": [132, 2], "mirror": true}
]
},
{
"name": "neck",
"parent": "torso2",
@@ -93,7 +133,7 @@
"pivot": [0.35, 54, -5.35],
"rotation": [30, 37.5, 0],
"cubes": [
{"origin": [0.35, 52.5, -4.35], "size": [0, 1, 9], "uv": [106, 104]}
{"origin": [0.35, 52.5, -4.35], "size": [0, 1, 7], "uv": [108, 107]}
]
},
{
@@ -102,7 +142,7 @@
"pivot": [-0.35, 54, -5.35],
"rotation": [30, -37.5, 0],
"cubes": [
{"origin": [-0.35, 52.5, -4.35], "size": [0, 1, 9], "uv": [36, 107]}
{"origin": [-0.35, 52.5, -4.35], "size": [0, 1, 7], "uv": [38, 110]}
]
},
{
@@ -125,11 +165,11 @@
]
},
{
"name": "eyelid_angry2",
"name": "pupil_left",
"parent": "eye_left",
"pivot": [1.42, 52.7, -2.85],
"pivot": [1.52, 52.7, -2.35],
"cubes": [
{"origin": [1.42, 52.2, -3.35], "size": [0, 1, 1], "uv": [88, 15], "mirror": true}
{"origin": [1.52, 51.7, -2.85], "size": [0, 2, 1], "uv": [106, 125], "mirror": true}
]
},
{
@@ -137,7 +177,15 @@
"parent": "eye_left",
"pivot": [1.41, 52.7, -2.35],
"cubes": [
{"origin": [1.41, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [8, 121]}
{"origin": [1.42, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [8, 121]}
]
},
{
"name": "eyelid_recoil_left",
"parent": "eye_left",
"pivot": [1.41, 52.7, -2.35],
"cubes": [
{"origin": [1.42, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [97, 122]}
]
},
{
@@ -160,11 +208,11 @@
]
},
{
"name": "eyelid_angry",
"name": "pupil_right",
"parent": "eye_right",
"pivot": [-1.42, 52.7, -2.85],
"pivot": [-1.52, 52.7, -2.35],
"cubes": [
{"origin": [-1.42, 52.2, -3.35], "size": [0, 1, 1], "uv": [90, 15]}
{"origin": [-1.52, 51.7, -2.85], "size": [0, 2, 1], "uv": [106, 125]}
]
},
{
@@ -172,7 +220,15 @@
"parent": "eye_right",
"pivot": [-1.41, 52.7, -2.35],
"cubes": [
{"origin": [-1.41, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [124, 72]}
{"origin": [-1.42, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [124, 72]}
]
},
{
"name": "eyelid_recoil_right",
"parent": "eye_right",
"pivot": [-1.41, 52.7, -2.35],
"cubes": [
{"origin": [-1.42, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [97, 122], "mirror": true}
]
},
{
@@ -220,34 +276,34 @@
"pivot": [-1.5, 52.25, -2.6],
"rotation": [-50, 0, 0],
"cubes": [
{"origin": [-4.5, 41.25, -6.6], "size": [6, 11, 4], "inflate": 0.01, "uv": [92, 75]}
{"origin": [-4.5, 42.25, -6.6], "size": [6, 10, 4], "inflate": 0.01, "uv": [92, 75]}
]
},
{
"name": "hair_left2",
"parent": "hair_left",
"pivot": [-1.5, 41.25, -4.6],
"pivot": [-1.5, 42.25, -4.6],
"cubes": [
{"origin": [-4.5, 35.25, -6.1], "size": [6, 6, 3], "uv": [114, 119]},
{"origin": [-3.5, 25.25, -5.6], "size": [4, 10, 2], "uv": [18, 114]}
{"origin": [-4.5, 35.25, -6.1], "size": [6, 7, 3], "uv": [52, 95]},
{"origin": [-3.5, 26.25, -5.6], "size": [4, 9, 2], "uv": [18, 114]}
]
},
{
"name": "hair_left_end",
"parent": "hair_left2",
"pivot": [1, 35.25, -4.6],
"pivot": [1, 34.25, -4.6],
"rotation": [0, 7.5, 2.5],
"cubes": [
{"origin": [1, 27.25, -5.6], "size": [0, 8, 2], "uv": [68, 14]}
{"origin": [1, 26.25, -5.6], "size": [0, 8, 2], "uv": [68, 14]}
]
},
{
"name": "hair_left_end2",
"parent": "hair_left2",
"pivot": [-4, 35.25, -4.6],
"pivot": [-4, 34.25, -4.6],
"rotation": [0, -7.5, -2.5],
"cubes": [
{"origin": [-4, 27.25, -5.6], "size": [0, 8, 2], "uv": [88, 95]}
{"origin": [-4, 26.25, -5.6], "size": [0, 8, 2], "uv": [88, 95]}
]
},
{
@@ -265,64 +321,34 @@
"pivot": [1.5, 52.25, -2.6],
"rotation": [-50, 0, 0],
"cubes": [
{"origin": [-1.5, 41.25, -6.6], "size": [6, 11, 4], "inflate": 0.01, "uv": [92, 90]}
{"origin": [-1.5, 42.25, -6.6], "size": [6, 10, 4], "inflate": 0.01, "uv": [92, 90]}
]
},
{
"name": "hair_right2",
"parent": "hair_right",
"pivot": [1.5, 41.25, -4.6],
"pivot": [1.5, 42.25, -4.6],
"cubes": [
{"origin": [-1.5, 35.25, -6.1], "size": [6, 6, 3], "uv": [132, 119]},
{"origin": [-0.5, 25.25, -5.6], "size": [4, 10, 2], "uv": [82, 115]}
{"origin": [-1.5, 35.25, -6.1], "size": [6, 7, 3], "uv": [70, 95]},
{"origin": [-0.5, 26.25, -5.6], "size": [4, 9, 2], "uv": [82, 115]}
]
},
{
"name": "hair_right_end",
"parent": "hair_right2",
"pivot": [-1, 35.25, -4.6],
"pivot": [-1, 34.25, -4.6],
"rotation": [0, -7.5, -2.5],
"cubes": [
{"origin": [-1, 27.25, -5.6], "size": [0, 8, 2], "uv": [81, 12]}
{"origin": [-1, 26.25, -5.6], "size": [0, 8, 2], "uv": [81, 12]}
]
},
{
"name": "hair_right_end2",
"parent": "hair_right2",
"pivot": [4, 35.25, -4.6],
"pivot": [4, 34.25, -4.6],
"rotation": [0, 7.5, 2.5],
"cubes": [
{"origin": [4, 27.25, -5.6], "size": [0, 8, 2], "uv": [28, -2]}
]
},
{
"name": "jacket_left",
"parent": "torso2",
"pivot": [0, 42.75, 0.5],
"rotation": [0, 0, -32.5],
"cubes": [
{"origin": [0, 38.75, -3], "size": [4, 4, 7], "inflate": 0.02, "uv": [94, 14]},
{"origin": [4, 35.75, -3], "size": [0, 3, 7], "uv": [0, -2]},
{"origin": [4, 36.75, -3], "size": [0, 2, 7], "pivot": [4, 38.75, 0.5], "rotation": [0, 0, -20], "uv": [0, -5], "mirror": true},
{"origin": [0, 35.75, -3], "size": [4, 3, 0], "uv": [120, 47]},
{"origin": [0, 36.75, -3], "size": [4, 2, 0], "pivot": [2, 38.75, -3], "rotation": [-20, 0, 0], "uv": [106, 117], "mirror": true},
{"origin": [0, 35.75, 4], "size": [4, 3, 0], "uv": [122, 9]},
{"origin": [0, 36.75, 4], "size": [4, 2, 0], "pivot": [2, 38.75, 4], "rotation": [20, 0, 0], "uv": [132, 0]}
]
},
{
"name": "jacket_right",
"parent": "torso2",
"pivot": [0, 42.75, 0.5],
"rotation": [0, 0, 32.5],
"cubes": [
{"origin": [-4, 38.75, -3], "size": [4, 4, 7], "inflate": 0.02, "uv": [94, 34]},
{"origin": [-4, 35.75, -3], "size": [0, 3, 7], "uv": [14, -2]},
{"origin": [-4, 36.75, -3], "size": [0, 2, 7], "pivot": [-4, 38.75, 0.5], "rotation": [0, 0, 20], "uv": [0, -7]},
{"origin": [-4, 35.75, -3], "size": [4, 3, 0], "uv": [124, 112]},
{"origin": [-4, 36.75, -3], "size": [4, 2, 0], "pivot": [-2, 38.75, -3], "rotation": [-20, 0, 0], "uv": [106, 115]},
{"origin": [-4, 35.75, 4], "size": [4, 3, 0], "uv": [171, 8]},
{"origin": [-4, 36.75, 4], "size": [4, 2, 0], "pivot": [-2, 38.75, 4], "rotation": [20, 0, 0], "uv": [132, 2], "mirror": true}
{"origin": [4, 26.25, -5.6], "size": [0, 8, 2], "uv": [28, -2]}
]
},
{
@@ -336,7 +362,7 @@
{
"name": "arm_left2",
"parent": "arm_left",
"pivot": [6.5, 45.5, 0.5],
"pivot": [5.1, 45.5, 0.5],
"cubes": [
{"origin": [5, 44, -1], "size": [7, 2, 3], "uv": [112, 90]}
]
@@ -350,40 +376,18 @@
]
},
{
"name": "hand_left",
"name": "wrist_left",
"parent": "arm_left3",
"pivot": [22, 45, 0.5]
},
{
"name": "hand_left",
"parent": "wrist_left",
"pivot": [22, 45, 0.5],
"cubes": [
{"origin": [22, 44, -1.5], "size": [4, 2, 4], "uv": [116, 34]}
]
},
{
"name": "hand_fire_left1",
"parent": "hand_left",
"pivot": [22, 46, 0.5],
"rotation": [0, 0, -60],
"cubes": [
{"origin": [22, 46, -2.5], "size": [0, 10, 6], "uv": [70, 108]}
]
},
{
"name": "hand_fire_left2",
"parent": "hand_left",
"pivot": [22, 45, -1],
"rotation": [0, 65, 0],
"cubes": [
{"origin": [22, 41.5, -12], "size": [0, 7, 11], "uv": [72, 14]}
]
},
{
"name": "hand_fire_left3",
"parent": "hand_left",
"pivot": [22, 45, 2],
"rotation": [0, -65, 0],
"cubes": [
{"origin": [22, 41.5, 2], "size": [0, 7, 11], "uv": [72, 32]}
]
},
{
"name": "finger_left1",
"parent": "hand_left",
@@ -456,6 +460,38 @@
{"origin": [29.5, 43.75, 2], "size": [2, 2, 0], "uv": [104, 12]}
]
},
{
"name": "hand_fire_left",
"parent": "wrist_left",
"pivot": [22, 46, 0.5]
},
{
"name": "hand_fire_left1",
"parent": "hand_fire_left",
"pivot": [22, 46, 0.5],
"rotation": [0, 0, -60],
"cubes": [
{"origin": [22, 46, -3.5], "size": [0, 10, 8], "uv": [73, 31]}
]
},
{
"name": "hand_fire_left2",
"parent": "hand_fire_left",
"pivot": [22, 45, -1],
"rotation": [0, 65, 0],
"cubes": [
{"origin": [22, 42.5, -10], "size": [0, 6, 9], "uv": [1, 75]}
]
},
{
"name": "hand_fire_left3",
"parent": "hand_fire_left",
"pivot": [22, 45, 2],
"rotation": [0, -65, 0],
"cubes": [
{"origin": [22, 42.5, 2], "size": [0, 7, 9], "uv": [1, 66]}
]
},
{
"name": "arm_right",
"parent": "torso2",
@@ -467,7 +503,7 @@
{
"name": "arm_right2",
"parent": "arm_right",
"pivot": [-6.5, 45.5, 0.5],
"pivot": [-5, 45.5, 0.5],
"cubes": [
{"origin": [-12, 44, -1], "size": [7, 2, 3], "uv": [112, 95]}
]
@@ -481,40 +517,18 @@
]
},
{
"name": "hand_right",
"name": "wrist_right",
"parent": "arm_right3",
"pivot": [-22, 45, 0.5]
},
{
"name": "hand_right",
"parent": "wrist_right",
"pivot": [-22, 45, 0.5],
"cubes": [
{"origin": [-26, 44, -1.5], "size": [4, 2, 4], "uv": [118, 20]}
]
},
{
"name": "hand_fire_right1",
"parent": "hand_right",
"pivot": [-22, 46, 0.5],
"rotation": [0, 0, 60],
"cubes": [
{"origin": [-22, 46, -2.5], "size": [0, 10, 6], "uv": [112, 74]}
]
},
{
"name": "hand_fire_right2",
"parent": "hand_right",
"pivot": [-22, 45, -1],
"rotation": [0, -65, 0],
"cubes": [
{"origin": [-22, 41.5, -12], "size": [0, 7, 11], "uv": [0, 74]}
]
},
{
"name": "hand_fire_right3",
"parent": "hand_right",
"pivot": [-22, 45, 2],
"rotation": [0, 65, 0],
"cubes": [
{"origin": [-22, 41.5, 2], "size": [0, 7, 11], "uv": [22, 74]}
]
},
{
"name": "finger_right1",
"parent": "hand_right",
@@ -587,6 +601,38 @@
{"origin": [-31.5, 43.75, 2], "size": [2, 2, 0], "uv": [82, 113]}
]
},
{
"name": "hand_fire_right",
"parent": "wrist_right",
"pivot": [-22, 46, 0.5]
},
{
"name": "hand_fire_right1",
"parent": "hand_fire_right",
"pivot": [-22, 46, 0.5],
"rotation": [0, 0, 60],
"cubes": [
{"origin": [-22, 46, -3.5], "size": [0, 10, 8], "uv": [73, 31], "mirror": true}
]
},
{
"name": "hand_fire_right2",
"parent": "hand_fire_right",
"pivot": [-22, 45, -1],
"rotation": [0, -65, 0],
"cubes": [
{"origin": [-22, 42.5, -10], "size": [0, 6, 9], "uv": [1, 75], "mirror": true}
]
},
{
"name": "hand_fire_right3",
"parent": "hand_fire_right",
"pivot": [-22, 45, 2],
"rotation": [0, 65, 0],
"cubes": [
{"origin": [-22, 42.5, 2], "size": [0, 7, 9], "uv": [1, 66]}
]
},
{
"name": "leg_right",
"parent": "body",
@@ -600,8 +646,16 @@
"parent": "leg_right",
"pivot": [-3.25, 17, -2],
"cubes": [
{"origin": [-8, 4.5, -4.5], "size": [9, 13, 9], "inflate": 0.01, "uv": [0, 28]},
{"origin": [-3.5, 12, 3.75], "size": [0, 2, 4], "pivot": [-3.5, 13, 6], "rotation": [25, 0, 0], "uv": [124, 84]}
{"origin": [-8, 4.5, -4.5], "size": [9, 13, 9], "inflate": 0.01, "uv": [0, 28]}
]
},
{
"name": "claw_right",
"parent": "leg_right2",
"pivot": [-3.5, 12.15, 4],
"rotation": [25, 0, 0],
"cubes": [
{"origin": [-3.5, 11.25, 4], "size": [0, 2, 4], "uv": [124, 84]}
]
},
{
@@ -616,6 +670,38 @@
{"origin": [1, 2, -5], "size": [3, 0, 10], "pivot": [1, 2, 0], "rotation": [0, 0, 15], "uv": [66, 85]}
]
},
{
"name": "foot_fire_right",
"parent": "foot_right",
"pivot": [-3.5, 1, 0]
},
{
"name": "foot_fire_right1",
"parent": "foot_fire_right",
"pivot": [-8.5, 1, 0],
"rotation": [0, 0, -52.5],
"cubes": [
{"origin": [-8.5, 0, -10], "size": [0, 14, 20], "uv": [135, -6], "mirror": true}
]
},
{
"name": "foot_fire_right2",
"parent": "foot_fire_right",
"pivot": [-5.5, 1, -5],
"rotation": [52.5, 0, 0],
"cubes": [
{"origin": [-13.5, 0, -5], "size": [16, 12, 0], "uv": [135, 29], "mirror": true}
]
},
{
"name": "foot_fire_right3",
"parent": "foot_fire_right",
"pivot": [-5.5, 1, 5],
"rotation": [-52.5, 0, 0],
"cubes": [
{"origin": [-13.5, 0, 5], "size": [16, 12, 0], "uv": [135, 43], "mirror": true}
]
},
{
"name": "nail_right1",
"parent": "foot_right",
@@ -656,8 +742,16 @@
"parent": "leg_left",
"pivot": [3.25, 17, -2],
"cubes": [
{"origin": [-1, 4.5, -4.5], "size": [9, 13, 9], "inflate": 0.01, "uv": [36, 28]},
{"origin": [3.5, 12, 3.75], "size": [0, 2, 4], "pivot": [3.5, 13, 6], "rotation": [25, 0, 0], "uv": [124, 78]}
{"origin": [-1, 4.5, -4.5], "size": [9, 13, 9], "inflate": 0.01, "uv": [36, 28]}
]
},
{
"name": "claw_left",
"parent": "leg_left2",
"pivot": [3.5, 12.25, 4],
"rotation": [25, 0, 0],
"cubes": [
{"origin": [3.5, 11.25, 4], "size": [0, 2, 4], "uv": [124, 78]}
]
},
{
@@ -672,6 +766,38 @@
{"origin": [-4, 2, -5], "size": [3, 0, 10], "pivot": [-1, 2, 0], "rotation": [0, 0, -15], "uv": [26, 92]}
]
},
{
"name": "foot_fire_left",
"parent": "foot_left",
"pivot": [3.5, 1, 0]
},
{
"name": "foot_fire_left1",
"parent": "foot_fire_left",
"pivot": [8.5, 1, 0],
"rotation": [0, 0, 52.5],
"cubes": [
{"origin": [8.5, 0, -10], "size": [0, 14, 20], "uv": [135, -6]}
]
},
{
"name": "foot_fire_left2",
"parent": "foot_fire_left",
"pivot": [5.5, 1, -5],
"rotation": [52.5, 0, 0],
"cubes": [
{"origin": [-2.5, 0, -5], "size": [16, 12, 0], "uv": [135, 29]}
]
},
{
"name": "foot_fire_left3",
"parent": "foot_fire_left",
"pivot": [5.5, 1, 5],
"rotation": [-52.5, 0, 0],
"cubes": [
{"origin": [-2.5, 0, 5], "size": [16, 12, 0], "uv": [135, 43]}
]
},
{
"name": "nail_left1",
"parent": "foot_left",
@@ -708,6 +834,14 @@
{"origin": [-4, 25.25, 0.5], "size": [8, 8, 6], "inflate": 0.02, "uv": [68, 0]}
]
},
{
"name": "locator_seat_1",
"parent": "tail1",
"pivot": [0, 33.3, 4],
"locators": {
"seat_1": [0, 33.3, 4]
}
},
{
"name": "tail2",
"parent": "tail1",
@@ -39,7 +39,12 @@
{
"name": "torso",
"parent": "waist",
"pivot": [0, 34.5, 0.5],
"pivot": [0, 34.5, 0.5]
},
{
"name": "abdomen",
"parent": "torso",
"pivot": [0, 39.5, 0.5],
"cubes": [
{"origin": [-3, 34, -2], "size": [6, 11, 5], "uv": [44, 75]},
{"origin": [-2.5, 37, -2], "size": [5, 8, 0], "inflate": 0.01, "uv": [161, 0]}
@@ -49,13 +54,48 @@
"name": "torso2",
"parent": "torso",
"pivot": [0, 43.75, 0.5],
"rotation": [5, 0, 0],
"rotation": [5, 0, 0]
},
{
"name": "chest",
"parent": "torso2",
"pivot": [0, 44, 0.5],
"cubes": [
{"origin": [-4, 42.75, -3], "size": [8, 5, 7], "inflate": 0.01, "uv": [64, 63]},
{"origin": [-4, 36.75, 4], "size": [8, 6, 0], "inflate": 0.01, "uv": [36, 102]},
{"origin": [-4, 37.75, 4], "size": [8, 2, 0], "inflate": 0.01, "pivot": [0, 39.75, 4], "rotation": [20, 0, 0], "uv": [39, 110]}
]
},
{
"name": "jacket_left",
"parent": "chest",
"pivot": [0, 42.75, 0.5],
"rotation": [0, 0, -32.5],
"cubes": [
{"origin": [0, 38.75, -3], "size": [4, 4, 7], "inflate": 0.02, "uv": [94, 14]},
{"origin": [4, 35.75, -3], "size": [0, 3, 7], "uv": [0, -2]},
{"origin": [4, 36.75, -3], "size": [0, 2, 7], "pivot": [4, 38.75, 0.5], "rotation": [0, 0, -20], "uv": [0, -5], "mirror": true},
{"origin": [0, 35.75, -3], "size": [4, 3, 0], "uv": [120, 47]},
{"origin": [0, 36.75, -3], "size": [4, 2, 0], "pivot": [2, 38.75, -3], "rotation": [-20, 0, 0], "uv": [106, 117], "mirror": true},
{"origin": [0, 35.75, 4], "size": [4, 3, 0], "uv": [122, 9]},
{"origin": [0, 36.75, 4], "size": [4, 2, 0], "pivot": [2, 38.75, 4], "rotation": [20, 0, 0], "uv": [132, 0]}
]
},
{
"name": "jacket_right",
"parent": "chest",
"pivot": [0, 42.75, 0.5],
"rotation": [0, 0, 32.5],
"cubes": [
{"origin": [-4, 38.75, -3], "size": [4, 4, 7], "inflate": 0.02, "uv": [94, 34]},
{"origin": [-4, 35.75, -3], "size": [0, 3, 7], "uv": [14, -2]},
{"origin": [-4, 36.75, -3], "size": [0, 2, 7], "pivot": [-4, 38.75, 0.5], "rotation": [0, 0, 20], "uv": [0, -7]},
{"origin": [-4, 35.75, -3], "size": [4, 3, 0], "uv": [124, 112]},
{"origin": [-4, 36.75, -3], "size": [4, 2, 0], "pivot": [-2, 38.75, -3], "rotation": [-20, 0, 0], "uv": [106, 115]},
{"origin": [-4, 35.75, 4], "size": [4, 3, 0], "uv": [171, 8]},
{"origin": [-4, 36.75, 4], "size": [4, 2, 0], "pivot": [-2, 38.75, 4], "rotation": [20, 0, 0], "uv": [132, 2], "mirror": true}
]
},
{
"name": "neck",
"parent": "torso2",
@@ -125,11 +165,11 @@
]
},
{
"name": "eyelid_angry2",
"name": "pupil_left",
"parent": "eye_left",
"pivot": [1.42, 52.7, -2.85],
"pivot": [1.52, 52.7, -2.35],
"cubes": [
{"origin": [1.42, 52.2, -3.35], "size": [0, 1, 1], "uv": [88, 15], "mirror": true}
{"origin": [1.52, 51.7, -2.85], "size": [0, 2, 1], "uv": [106, 125], "mirror": true}
]
},
{
@@ -137,7 +177,15 @@
"parent": "eye_left",
"pivot": [1.41, 52.7, -2.35],
"cubes": [
{"origin": [1.41, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [8, 121]}
{"origin": [1.42, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [8, 121]}
]
},
{
"name": "eyelid_recoil_left",
"parent": "eye_left",
"pivot": [1.41, 52.7, -2.35],
"cubes": [
{"origin": [1.42, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [97, 122]}
]
},
{
@@ -160,11 +208,11 @@
]
},
{
"name": "eyelid_angry",
"name": "pupil_right",
"parent": "eye_right",
"pivot": [-1.42, 52.7, -2.85],
"pivot": [-1.52, 52.7, -2.35],
"cubes": [
{"origin": [-1.42, 52.2, -3.35], "size": [0, 1, 1], "uv": [90, 15]}
{"origin": [-1.52, 51.7, -2.85], "size": [0, 2, 1], "uv": [106, 125]}
]
},
{
@@ -172,7 +220,15 @@
"parent": "eye_right",
"pivot": [-1.41, 52.7, -2.35],
"cubes": [
{"origin": [-1.41, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [124, 72]}
{"origin": [-1.42, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [124, 72]}
]
},
{
"name": "eyelid_recoil_right",
"parent": "eye_right",
"pivot": [-1.41, 52.7, -2.35],
"cubes": [
{"origin": [-1.42, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [97, 122], "mirror": true}
]
},
{
@@ -295,36 +351,6 @@
{"origin": [4, 23.25, -5.6], "size": [0, 8, 2], "uv": [28, -2]}
]
},
{
"name": "jacket_left",
"parent": "torso2",
"pivot": [0, 42.75, 0.5],
"rotation": [0, 0, -32.5],
"cubes": [
{"origin": [0, 38.75, -3], "size": [4, 4, 7], "inflate": 0.02, "uv": [94, 14]},
{"origin": [4, 35.75, -3], "size": [0, 3, 7], "uv": [0, -2]},
{"origin": [4, 36.75, -3], "size": [0, 2, 7], "pivot": [4, 38.75, 0.5], "rotation": [0, 0, -20], "uv": [0, -5], "mirror": true},
{"origin": [0, 35.75, -3], "size": [4, 3, 0], "uv": [120, 47]},
{"origin": [0, 36.75, -3], "size": [4, 2, 0], "pivot": [2, 38.75, -3], "rotation": [-20, 0, 0], "uv": [106, 117], "mirror": true},
{"origin": [0, 35.75, 4], "size": [4, 3, 0], "uv": [122, 9]},
{"origin": [0, 36.75, 4], "size": [4, 2, 0], "pivot": [2, 38.75, 4], "rotation": [20, 0, 0], "uv": [132, 0]}
]
},
{
"name": "jacket_right",
"parent": "torso2",
"pivot": [0, 42.75, 0.5],
"rotation": [0, 0, 32.5],
"cubes": [
{"origin": [-4, 38.75, -3], "size": [4, 4, 7], "inflate": 0.02, "uv": [94, 34]},
{"origin": [-4, 35.75, -3], "size": [0, 3, 7], "uv": [14, -2]},
{"origin": [-4, 36.75, -3], "size": [0, 2, 7], "pivot": [-4, 38.75, 0.5], "rotation": [0, 0, 20], "uv": [0, -7]},
{"origin": [-4, 35.75, -3], "size": [4, 3, 0], "uv": [124, 112]},
{"origin": [-4, 36.75, -3], "size": [4, 2, 0], "pivot": [-2, 38.75, -3], "rotation": [-20, 0, 0], "uv": [106, 115]},
{"origin": [-4, 35.75, 4], "size": [4, 3, 0], "uv": [171, 8]},
{"origin": [-4, 36.75, 4], "size": [4, 2, 0], "pivot": [-2, 38.75, 4], "rotation": [20, 0, 0], "uv": [132, 2], "mirror": true}
]
},
{
"name": "arm_left",
"parent": "torso2",
@@ -336,7 +362,7 @@
{
"name": "arm_left2",
"parent": "arm_left",
"pivot": [6.5, 45.5, 0.5],
"pivot": [5.1, 45.5, 0.5],
"cubes": [
{"origin": [5, 44, -1], "size": [7, 2, 3], "uv": [112, 90]}
]
@@ -350,40 +376,18 @@
]
},
{
"name": "hand_left",
"name": "wrist_left",
"parent": "arm_left3",
"pivot": [22, 45, 0.5]
},
{
"name": "hand_left",
"parent": "wrist_left",
"pivot": [22, 45, 0.5],
"cubes": [
{"origin": [22, 44, -1.5], "size": [4, 2, 4], "uv": [116, 34]}
]
},
{
"name": "hand_fire_left1",
"parent": "hand_left",
"pivot": [22, 46, 0.5],
"rotation": [0, 0, -60],
"cubes": [
{"origin": [22, 46, -2.5], "size": [0, 10, 6], "uv": [70, 108]}
]
},
{
"name": "hand_fire_left2",
"parent": "hand_left",
"pivot": [22, 45, -1],
"rotation": [0, 65, 0],
"cubes": [
{"origin": [22, 41.5, -12], "size": [0, 7, 11], "uv": [72, 14]}
]
},
{
"name": "hand_fire_left3",
"parent": "hand_left",
"pivot": [22, 45, 2],
"rotation": [0, -65, 0],
"cubes": [
{"origin": [22, 41.5, 2], "size": [0, 7, 11], "uv": [72, 32]}
]
},
{
"name": "finger_left1",
"parent": "hand_left",
@@ -456,6 +460,38 @@
{"origin": [29.5, 43.75, 2], "size": [2, 2, 0], "uv": [104, 12]}
]
},
{
"name": "hand_fire_left",
"parent": "wrist_left",
"pivot": [22, 46, 0.5]
},
{
"name": "hand_fire_left1",
"parent": "hand_fire_left",
"pivot": [22, 46, 0.5],
"rotation": [0, 0, -60],
"cubes": [
{"origin": [22, 46, -3.5], "size": [0, 10, 8], "uv": [73, 31]}
]
},
{
"name": "hand_fire_left2",
"parent": "hand_fire_left",
"pivot": [22, 45, -1],
"rotation": [0, 65, 0],
"cubes": [
{"origin": [22, 42.5, -10], "size": [0, 6, 9], "uv": [1, 75]}
]
},
{
"name": "hand_fire_left3",
"parent": "hand_fire_left",
"pivot": [22, 45, 2],
"rotation": [0, -65, 0],
"cubes": [
{"origin": [22, 42.5, 2], "size": [0, 7, 9], "uv": [1, 66]}
]
},
{
"name": "arm_right",
"parent": "torso2",
@@ -467,7 +503,7 @@
{
"name": "arm_right2",
"parent": "arm_right",
"pivot": [-6.5, 45.5, 0.5],
"pivot": [-5, 45.5, 0.5],
"cubes": [
{"origin": [-12, 44, -1], "size": [7, 2, 3], "uv": [112, 95]}
]
@@ -481,40 +517,18 @@
]
},
{
"name": "hand_right",
"name": "wrist_right",
"parent": "arm_right3",
"pivot": [-22, 45, 0.5]
},
{
"name": "hand_right",
"parent": "wrist_right",
"pivot": [-22, 45, 0.5],
"cubes": [
{"origin": [-26, 44, -1.5], "size": [4, 2, 4], "uv": [118, 20]}
]
},
{
"name": "hand_fire_right1",
"parent": "hand_right",
"pivot": [-22, 46, 0.5],
"rotation": [0, 0, 60],
"cubes": [
{"origin": [-22, 46, -2.5], "size": [0, 10, 6], "uv": [112, 74]}
]
},
{
"name": "hand_fire_right2",
"parent": "hand_right",
"pivot": [-22, 45, -1],
"rotation": [0, -65, 0],
"cubes": [
{"origin": [-22, 41.5, -12], "size": [0, 7, 11], "uv": [0, 74]}
]
},
{
"name": "hand_fire_right3",
"parent": "hand_right",
"pivot": [-22, 45, 2],
"rotation": [0, 65, 0],
"cubes": [
{"origin": [-22, 41.5, 2], "size": [0, 7, 11], "uv": [22, 74]}
]
},
{
"name": "finger_right1",
"parent": "hand_right",
@@ -587,6 +601,38 @@
{"origin": [-31.5, 43.75, 2], "size": [2, 2, 0], "uv": [82, 113]}
]
},
{
"name": "hand_fire_right",
"parent": "wrist_right",
"pivot": [-22, 46, 0.5]
},
{
"name": "hand_fire_right1",
"parent": "hand_fire_right",
"pivot": [-22, 46, 0.5],
"rotation": [0, 0, 60],
"cubes": [
{"origin": [-22, 46, -3.5], "size": [0, 10, 8], "uv": [73, 31], "mirror": true}
]
},
{
"name": "hand_fire_right2",
"parent": "hand_fire_right",
"pivot": [-22, 45, -1],
"rotation": [0, -65, 0],
"cubes": [
{"origin": [-22, 42.5, -10], "size": [0, 6, 9], "uv": [1, 75], "mirror": true}
]
},
{
"name": "hand_fire_right3",
"parent": "hand_fire_right",
"pivot": [-22, 45, 2],
"rotation": [0, 65, 0],
"cubes": [
{"origin": [-22, 42.5, 2], "size": [0, 7, 9], "uv": [1, 66]}
]
},
{
"name": "leg_right",
"parent": "body",
@@ -600,8 +646,16 @@
"parent": "leg_right",
"pivot": [-3.25, 17, -2],
"cubes": [
{"origin": [-8, 4.5, -4.5], "size": [9, 13, 9], "inflate": 0.01, "uv": [0, 28]},
{"origin": [-3.5, 12, 3.75], "size": [0, 2, 4], "pivot": [-3.5, 13, 6], "rotation": [25, 0, 0], "uv": [124, 84]}
{"origin": [-8, 4.5, -4.5], "size": [9, 13, 9], "inflate": 0.01, "uv": [0, 28]}
]
},
{
"name": "claw_right",
"parent": "leg_right2",
"pivot": [-3.5, 12.15, 4],
"rotation": [25, 0, 0],
"cubes": [
{"origin": [-3.5, 11.25, 4], "size": [0, 2, 4], "uv": [124, 84]}
]
},
{
@@ -616,6 +670,38 @@
{"origin": [1, 2, -5], "size": [3, 0, 10], "pivot": [1, 2, 0], "rotation": [0, 0, 15], "uv": [66, 85]}
]
},
{
"name": "foot_fire_right",
"parent": "foot_right",
"pivot": [-3.5, 1, 0]
},
{
"name": "foot_fire_right1",
"parent": "foot_fire_right",
"pivot": [-8.5, 1, 0],
"rotation": [0, 0, -52.5],
"cubes": [
{"origin": [-8.5, 0, -10], "size": [0, 14, 20], "uv": [135, -6], "mirror": true}
]
},
{
"name": "foot_fire_right2",
"parent": "foot_fire_right",
"pivot": [-5.5, 1, -5],
"rotation": [52.5, 0, 0],
"cubes": [
{"origin": [-13.5, 0, -5], "size": [16, 12, 0], "uv": [135, 29], "mirror": true}
]
},
{
"name": "foot_fire_right3",
"parent": "foot_fire_right",
"pivot": [-5.5, 1, 5],
"rotation": [-52.5, 0, 0],
"cubes": [
{"origin": [-13.5, 0, 5], "size": [16, 12, 0], "uv": [135, 43], "mirror": true}
]
},
{
"name": "nail_right1",
"parent": "foot_right",
@@ -656,8 +742,16 @@
"parent": "leg_left",
"pivot": [3.25, 17, -2],
"cubes": [
{"origin": [-1, 4.5, -4.5], "size": [9, 13, 9], "inflate": 0.01, "uv": [36, 28]},
{"origin": [3.5, 12, 3.75], "size": [0, 2, 4], "pivot": [3.5, 13, 6], "rotation": [25, 0, 0], "uv": [124, 78]}
{"origin": [-1, 4.5, -4.5], "size": [9, 13, 9], "inflate": 0.01, "uv": [36, 28]}
]
},
{
"name": "claw_left",
"parent": "leg_left2",
"pivot": [3.5, 12.25, 4],
"rotation": [25, 0, 0],
"cubes": [
{"origin": [3.5, 11.25, 4], "size": [0, 2, 4], "uv": [124, 78]}
]
},
{
@@ -672,6 +766,38 @@
{"origin": [-4, 2, -5], "size": [3, 0, 10], "pivot": [-1, 2, 0], "rotation": [0, 0, -15], "uv": [26, 92]}
]
},
{
"name": "foot_fire_left",
"parent": "foot_left",
"pivot": [3.5, 1, 0]
},
{
"name": "foot_fire_left1",
"parent": "foot_fire_left",
"pivot": [8.5, 1, 0],
"rotation": [0, 0, 52.5],
"cubes": [
{"origin": [8.5, 0, -10], "size": [0, 14, 20], "uv": [135, -6]}
]
},
{
"name": "foot_fire_left2",
"parent": "foot_fire_left",
"pivot": [5.5, 1, -5],
"rotation": [52.5, 0, 0],
"cubes": [
{"origin": [-2.5, 0, -5], "size": [16, 12, 0], "uv": [135, 29]}
]
},
{
"name": "foot_fire_left3",
"parent": "foot_fire_left",
"pivot": [5.5, 1, 5],
"rotation": [-52.5, 0, 0],
"cubes": [
{"origin": [-2.5, 0, 5], "size": [16, 12, 0], "uv": [135, 43]}
]
},
{
"name": "nail_left1",
"parent": "foot_left",
@@ -708,6 +834,14 @@
{"origin": [-4, 25.25, 0.5], "size": [8, 8, 6], "inflate": 0.02, "uv": [68, 0]}
]
},
{
"name": "locator_seat_1",
"parent": "tail1",
"pivot": [0, 33.3, 4],
"locators": {
"seat_1": [0, 33.3, 4]
}
},
{
"name": "tail2",
"parent": "tail1",
@@ -6,7 +6,7 @@
"identifier": "geometry.rhyperior",
"texture_width": 256,
"texture_height": 256,
"visible_bounds_width": 8,
"visible_bounds_width": 7,
"visible_bounds_height": 4.5,
"visible_bounds_offset": [0, 1.75, 0]
},
@@ -474,6 +474,14 @@
{"origin": [-8.5, 41.5, -13], "size": [2, 3, 7], "uv": [177, 33]}
]
},
{
"name": "locator_seat_1",
"parent": "head_angle",
"pivot": [0, 48, 4],
"locators": {
"seat_1": [0, 48, 4]
}
},
{
"name": "tail",
"parent": "torso",
@@ -7,8 +7,8 @@
"texture_width": 256,
"texture_height": 256,
"visible_bounds_width": 8,
"visible_bounds_height": 4.5,
"visible_bounds_offset": [0, 1.75, 0]
"visible_bounds_height": 5.5,
"visible_bounds_offset": [0, 2.25, 0]
},
"bones": [
{
@@ -31,7 +31,7 @@
{"origin": [6.5, 13, 10.5], "size": [8, 10, 3], "inflate": 0.01, "uv": [127, 177]},
{"origin": [-14.5, 13, 10.5], "size": [8, 10, 3], "inflate": 0.01, "uv": [0, 42]},
{"origin": [-5.5, 13, 10.5], "size": [11, 10, 3], "inflate": 0.01, "uv": [50, 171]},
{"origin": [6.5, 13, -13.5], "size": [8, 10, 3], "inflate": 0.01, "pivot": [10.5, 18, -12], "rotation": [0, 0, 0], "uv": [28, 174]},
{"origin": [6.5, 13, -13.5], "size": [8, 10, 3], "inflate": 0.01, "uv": [28, 174]},
{"origin": [11.5, 13, -9.5], "size": [3, 10, 9], "inflate": 0.01, "uv": [147, 160]},
{"origin": [11.5, 13, 0.5], "size": [3, 10, 9], "inflate": 0.01, "uv": [78, 160]},
{"origin": [-14.5, 13, 0.5], "size": [3, 10, 9], "inflate": 0.01, "uv": [123, 157]},
@@ -291,7 +291,6 @@
"name": "head_angle",
"parent": "head_ai",
"pivot": [0, 34, 0],
"rotation": [0, 0, 0],
"cubes": [
{"origin": [-8, 30.25, -6], "size": [16, 16, 11], "uv": [0, 78]},
{"origin": [-8, 30.26393, 0.00246], "size": [16, 16, 5], "inflate": -0.01, "pivot": [-0.49, 46.26393, 5.00246], "rotation": [17.5, 0, 0], "uv": [121, 57]},
@@ -474,6 +473,14 @@
{"origin": [-8.5, 41.5, -13], "size": [2, 3, 7], "uv": [177, 33]}
]
},
{
"name": "locator_seat_1",
"parent": "head_angle",
"pivot": [0, 48, 4],
"locators": {
"seat_1": [0, 48, 4]
}
},
{
"name": "tail",
"parent": "torso",
@@ -19,15 +19,35 @@
"cry": "q.bedrock_stateful('dewgong', 'cry')"
},
"poses": {
"standing": {
"poseTypes": [
"STAND",
"NONE",
"FLOAT",
"PORTRAIT",
"PROFILE"
"in-air": {
"poseTypes": ["STAND", "WALK"],
"isRideStyle": ["LIQUID"],
"isBattle": false,
"condition": "q.in_air && q.is_ridden",
"animations": [
"q.look('head')",
"q.bedrock('dewgong', 'water_idle')",
"q.bedrock('dewgong', 'ride_water_swim')"
],
"isBattle": true,
"transformTicks": 2,
"transformToTicks": 2
},
"mount-swim": {
"poseTypes": ["SWIM", "WALK"],
"isRideStyle": ["LIQUID"],
"isTouchingWater": "true",
"condition": "q.is_ridden",
"animations": [
"q.look('head_ai')",
"q.bedrock('dewgong', 'water_swim')",
"q.bedrock('dewgong', 'ride_water_swim')"
],
"quirks": ["q.bedrock_quirk('dewgong', 'blink')"]
},
"standing": {
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
"isBattle": false,
"isTouchingWater": false,
"animations": [
"q.look('head_ai')",
"q.bedrock('dewgong', 'ground_idle')"
@@ -37,13 +57,56 @@
]
},
"walking": {
"poseTypes": [
"WALK",
"SWIM"
],
"poseTypes": ["WALK"],
"isTouchingWater": false,
"animations": [
"q.look('head_ai')",
"q.bedrock('dewgong', 'ground_idle')"
"q.bedrock('dewgong', 'ground_walk')"
],
"quirks": [
"q.bedrock_quirk('dewgong', 'blink')"
]
},
"swim": {
"poseTypes": ["SWIM"],
"isTouchingWater": "true",
"condition": "!q.is_ridden",
"animations": [
"q.look('head_ai')",
"q.bedrock('dewgong', 'water_swim')"
],
"quirks": ["q.bedrock_quirk('dewgong', 'blink')"]
},
"surface-swim": {
"poseTypes": ["WALK"],
"isTouchingWater": "true",
"animations": [
"q.look('head_ai')",
"q.bedrock('dewgong', 'water_swim')",
{
"condition": "q.is_ridden && q.has_entity",
"animation": "q.bedrock('dewgong', 'ride_water_swim')"
}
],
"quirks": ["q.bedrock_quirk('dewgong', 'blink')"]
},
"surface-float": {
"poseTypes": ["STAND"],
"isTouchingWater": "true",
"animations": [
"q.look('head_ai')",
"q.bedrock('dewgong', 'water_idle')"
],
"quirks": [
"q.bedrock_quirk('dewgong', 'blink')"
]
},
"float": {
"poseTypes": ["FLOAT"],
"isTouchingWater": "true",
"animations": [
"q.look('head_ai')",
"q.bedrock('dewgong', 'water_idle')"
],
"quirks": [
"q.bedrock_quirk('dewgong', 'blink')"
@@ -4,28 +4,105 @@
"profileScale": 0.62,
"profileTranslation": [-0.04, 0.73, 0.0],
"rootBone": "rhyhorn",
"firstPersonCameraOffset": {
"seat_1": [0, 0.5, 0]
},
"thirdPersonCameraOffset": {
"seat_1": [0, 0, 1],
"seat_1_reverse": [0, 0, 1]
},
"thirdPersonCameraOffsetNoViewBobbing": {
"seat_1": [0, 1, 2],
"seat_1_reverse": [0, 1, 2]
},
"animations": {
"cry": "q.bedrock_stateful('rhyhorn', 'cry')"
"cry": "q.bedrock_stateful('rhyhorn', 'cry')",
"recoil": "q.bedrock_stateful('rhyhorn', 'recoil')",
"physical": "q.bedrock_primary('rhyhorn', 'physical', q.curve('symmetrical_wide'))",
"special": "q.bedrock_primary('rhyhorn', 'special', q.curve('symmetrical_wide'))",
"status": "q.bedrock_primary('rhyhorn', 'status', q.curve('symmetrical_wide'))"
},
"poses": {
"standing": {
"poseName": "standing",
"poseTypes": ["STAND", "FLOAT", "NONE", "PORTRAIT", "PROFILE"],
"battle-standing": {
"poseTypes": ["STAND"],
"isBattle": true,
"animations": [
"q.look('head_ai')",
"q.bedrock('rhyhorn', 'ground_idle')"
"q.look('head')",
"q.bedrock('rhyhorn', 'battle_idle')"
],
"quirks": [
"q.bedrock_quirk('rhyhorn', 'blink')"
],
"namedAnimations": {
"cry": "q.bedrock_primary('rhyhorn', 'battle_cry', q.curve('symmetrical_wide'))"
}
},
"jump": {
"poseTypes": ["STAND", "WALK"],
"condition": "q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('rhyhorn', 'ride_jump')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('rhyhorn', 'ride_ground_run')"
}
],
"quirks": [
"q.bedrock_quirk('rhyhorn', 'blink')"
],
"transformTicks": 5,
"transformToTicks": 5
},
"standing": {
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
"isBattle": false,
"condition": "!q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('rhyhorn', 'ground_idle')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('rhyhorn', 'ride_ground_walk')"
}
],
"quirks": [
"q.bedrock_quirk('rhyhorn', 'blink')",
"q.bedrock_quirk('rhyhorn', 'idle_quirk')"
]
},
"walking": {
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"condition": "!q.in_air && !q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('rhyhorn', 'ground_walk')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('rhyhorn', 'ride_ground_walk')"
}
],
"quirks": ["q.bedrock_quirk('rhyhorn', 'blink')"]
},
"walking": {
"poseName": "walking",
"poseTypes": ["WALK", "SWIM"],
"running": {
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"condition": "!q.in_air && q.is_sprinting",
"animations": [
"q.look('head_ai')",
"q.quadruped_walk(0.66, 0.6, 'left_front_leg', 'right_front_leg', 'left_back_leg', 'right_back_leg')",
"q.bedrock('rhyhorn', 'ground_idle')"
"q.look('head')",
"q.bedrock('rhyhorn', 'ground_run')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('rhyhorn', 'ride_ground_run')"
}
],
"quirks": ["q.bedrock_quirk('rhyhorn', 'blink')"]
},
"sleep": {
"poseTypes": ["SLEEP"],
"namedAnimations": {
"cry": "q.bedrock_stateful('dummy', 'cry')"
},
"animations": ["q.bedrock('rhyhorn', 'sleep')"]
}
}
}
}
@@ -4,25 +4,108 @@
"profileScale": 0.51,
"profileTranslation": [0.0, 0.89, 0.0],
"rootBone": "rhydon",
"firstPersonCameraOffset": {
"seat_1": [0, 0.5, 0]
},
"thirdPersonCameraOffset": {
"seat_1": [0, 0, 1],
"seat_1_reverse": [0, 0, 1]
},
"thirdPersonCameraOffsetNoViewBobbing": {
"seat_1": [0, 1, 2],
"seat_1_reverse": [0, 1, 2]
},
"animations": {
"cry": "q.bedrock_stateful('rhydon', 'cry')"
"cry": "q.bedrock_stateful('rhydon', 'cry')",
"recoil": "q.bedrock_stateful('rhydon', 'recoil')",
"physical": "q.bedrock_primary('rhydon', 'physical', q.curve('symmetrical_wide'))",
"special": "q.bedrock_primary('rhydon', 'special', q.curve('symmetrical_wide'))",
"status": "q.bedrock_primary('rhydon', 'status', q.curve('symmetrical_wide'))"
},
"poses": {
"battle-standing": {
"poseTypes": ["STAND"],
"isBattle": true,
"animations": [
"q.look('head')",
"q.bedrock('rhydon', 'battle_idle')"
],
"quirks": [
"q.bedrock_quirk('rhydon', 'blink')",
"q.bedrock_quirk('rhydon', 'battle_quirk')"
],
"namedAnimations": {
"cry": "q.bedrock_primary('rhydon', 'battle_cry', q.curve('symmetrical_wide'))"
}
},
"jump": {
"poseTypes": ["STAND", "WALK"],
"condition": "q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('rhydon', 'ride_jump')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('rhydon', 'ride_ground_run')"
}
],
"quirks": [
"q.bedrock_quirk('rhydon', 'blink')"
],
"transformTicks": 5,
"transformToTicks": 5
},
"running": {
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"condition": "!q.in_air && q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('rhydon', 'ground_run')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('rhydon', 'ride_ground_run')"
}
],
"quirks": [
"q.bedrock_quirk('rhydon', 'blink')",
"q.bedrock_quirk('rhydon', 'run_quirk')"
]
},
"standing": {
"poseName": "standing",
"poseTypes": ["STAND", "FLOAT", "NONE", "PORTRAIT", "PROFILE"],
"animations": ["q.look('head_ai')", "q.bedrock('rhydon', 'ground_idle')"],
"quirks": ["q.bedrock_quirk('rhydon', 'blink')"]
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
"isBattle": false,
"condition": "!q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('rhydon', 'ground_idle')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('rhydon', 'ride_ground_walk')"
}
],
"quirks": [
"q.bedrock_quirk('rhydon', 'blink')"
]
},
"walking": {
"poseName": "walking",
"poseTypes": ["WALK", "SWIM"],
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"condition": "!q.in_air && !q.is_sprinting",
"animations": [
"q.look('head_ai')",
"q.biped_walk(0.66, 0.6, 'left_upper_leg', 'right_upper_leg')",
"q.bedrock('rhydon', 'ground_idle')"
"q.look('head')",
"q.bedrock('rhydon', 'ground_walk')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('rhydon', 'ride_ground_walk')"
}
],
"quirks": ["q.bedrock_quirk('rhydon', 'blink')"]
},
"sleep": {
"poseTypes": ["SLEEP"],
"namedAnimations": {
"cry": "q.bedrock_stateful('dummy', 'cry')"
},
"animations": ["q.bedrock('rhydon', 'sleep')"]
}
}
}
}
@@ -4,48 +4,85 @@
"profileScale": 0.75,
"profileTranslation": [0, 0.6, 0],
"rootBone": "tauros",
"animations": {
"cry": "q.bedrock_stateful('tauros', 'cry')",
"status": "q.bedrock_primary('tauros', 'cry', q.curve('symmetrical_wide'))"
"firstPersonCameraOffset": {
"seat_1": [0, 0.5, 0]
},
"thirdPersonCameraOffset": {
"seat_1": [0, 0, 1],
"seat_1_reverse": [0, 0, 1]
},
"thirdPersonCameraOffsetNoViewBobbing": {
"seat_1": [0, 2, 5],
"seat_1_reverse": [0, 2, 5]
},
"animations": {
"cry": "q.bedrock_stateful('tauros', 'cry')"
},
"poses": {
"jump": {
"poseTypes": ["STAND", "WALK"],
"condition": "q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('tauros', 'ride_jump')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros', 'ride_ground_run')"
}
],
"quirks": [
"q.bedrock_quirk('tauros', 'blink')"
],
"transformTicks": 5,
"transformToTicks": 5
},
"poses": {
"standing": {
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
"animations": [
"q.look('head')",
"q.bedrock('tauros', 'ground_idle')"
],
"quirks": [
"q.bedrock_quirk('tauros', 'blink')"
]
"running": {
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"isBattle": false,
"condition": "!q.in_air && q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('tauros', 'ground_run')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros', 'ride_ground_run')"
}
],
"quirks": ["q.bedrock_quirk('tauros', 'blink')"]
},
"walking": {
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"condition": "!q.in_air && !q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('tauros', 'ground_walk')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros', 'ride_ground_walk')"
}
],
"quirks": ["q.bedrock_quirk('tauros', 'blink')"]
},
"standing": {
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
"isBattle": false,
"condition": "!q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('tauros', 'ground_idle')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros', 'ride_ground_walk')"
}
],
"quirks": ["q.bedrock_quirk('tauros', 'blink')"]
},
"sleep": {
"poseTypes": ["SLEEP"],
"namedAnimations": {
"cry": "q.bedrock_stateful('dummy', 'cry')"
},
"walking": {
"poseTypes": ["WALK"],
"animations": [
"q.look('head')",
"q.bedrock('tauros', 'ground_walk')"
],
"quirks": ["q.bedrock_quirk('tauros', 'blink')"]
},
"float": {
"poseTypes": ["FLOAT"],
"animations": [
"q.look('head')",
"q.bedrock('tauros', 'ground_idle')"
],
"quirks": ["q.bedrock_quirk('tauros', 'blink')"]
},
"swim": {
"poseTypes": ["SWIM"],
"animations": [
"q.look('head')",
"q.bedrock('tauros', 'ground_walk')"
],
"quirks": ["q.bedrock_quirk('tauros', 'blink')"]
},
"sleep": {
"poseTypes": ["SLEEP"],
"animations": ["q.bedrock('tauros', 'sleep')"]
}
"animations": ["q.bedrock('tauros', 'sleep')"]
}
}
}
}
@@ -4,48 +4,133 @@
"profileScale": 0.75,
"profileTranslation": [0, 0.6, 0],
"rootBone": "tauros",
"animations": {
"cry": "q.bedrock_stateful('tauros_paldean_aqua', 'cry')",
"status": "q.bedrock_primary('tauros_paldean_aqua', 'cry', q.curve('symmetrical_wide'))"
"firstPersonCameraOffset": {
"seat_1": [0, 0.5, 0]
},
"thirdPersonCameraOffset": {
"seat_1": [0, 0, 1],
"seat_1_reverse": [0, 0, 1]
},
"thirdPersonCameraOffsetNoViewBobbing": {
"seat_1": [0, 2, 5],
"seat_1_reverse": [0, 2, 5]
},
"animations": {
"cry": "q.bedrock_stateful('tauros_paldean_aqua', 'cry')"
},
"poses": {
"boat-jump": {
"poseTypes": ["STAND", "WALK"],
"isRideStyle": ["LIQUID"],
"condition": "q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_aqua', 'ride_jump_liquid')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros_paldean_aqua', 'ride_surfacewater_swim')"
}
],
"quirks": [
"q.bedrock_quirk('tauros_paldean_aqua', 'blink')"
],
"transformTicks": 5,
"transformToTicks": 2
},
"poses": {
"standing": {
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_aqua', 'ground_idle')"
],
"quirks": [
"q.bedrock_quirk('tauros_paldean_aqua', 'blink')"
]
"land-jump": {
"poseTypes": ["STAND", "WALK"],
"condition": "q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_aqua', 'ride_jump_land')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros_paldean_aqua', 'ride_ground_run')"
}
],
"quirks": [
"q.bedrock_quirk('tauros_paldean_aqua', 'blink')"
],
"transformTicks": 5,
"transformToTicks": 5
},
"running": {
"poseTypes": ["WALK"],
"isBattle": false,
"isTouchingWater": false,
"condition": "!q.in_air && q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_aqua', 'ground_run')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros_paldean_aqua', 'ride_ground_run')"
}
],
"quirks": ["q.bedrock_quirk('tauros_paldean_aqua', 'blink')"]
},
"walking": {
"poseTypes": ["WALK"],
"isTouchingWater": false,
"condition": "!q.in_air && !q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_aqua', 'ground_walk')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros_paldean_aqua', 'ride_ground_walk')"
}
],
"quirks": ["q.bedrock_quirk('tauros_paldean_aqua', 'blink')"]
},
"standing": {
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
"isBattle": false,
"isTouchingWater": false,
"condition": "!q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_aqua', 'ground_idle')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros_paldean_aqua', 'ride_ground_walk')"
}
],
"quirks": ["q.bedrock_quirk('tauros_paldean_aqua', 'blink')"]
},
"surface-swimming": {
"isBattle": false,
"isTouchingWater": true,
"poseTypes": ["WALK", "SWIM"],
"animations": [
"q.bedrock('tauros_paldean_aqua', 'surfacewater_swim')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros_paldean_aqua', 'ride_surfacewater_swim')"
}
],
"quirks": ["q.bedrock_quirk('tauros_paldean_aqua', 'blink')"]
},
"surface-floating": {
"isBattle": false,
"isTouchingWater": true,
"poseTypes": ["STAND", "FLOAT"],
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_aqua', 'surfacewater_idle')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros_paldean_aqua', 'ride_surfacewater_swim')"
}
],
"quirks": ["q.bedrock_quirk('tauros_paldean_aqua', 'blink')"]
},
"sleep": {
"poseTypes": ["SLEEP"],
"namedAnimations": {
"cry": "q.bedrock_stateful('dummy', 'cry')"
},
"walking": {
"poseTypes": ["WALK"],
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_aqua', 'ground_walk')"
],
"quirks": ["q.bedrock_quirk('tauros_paldean_aqua', 'blink')"]
},
"float": {
"poseTypes": ["FLOAT"],
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_aqua', 'ground_idle')"
],
"quirks": ["q.bedrock_quirk('tauros_paldean_aqua', 'blink')"]
},
"swim": {
"poseTypes": ["SWIM"],
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_aqua', 'ground_walk')"
],
"quirks": ["q.bedrock_quirk('tauros_paldean_aqua', 'blink')"]
},
"sleep": {
"poseTypes": ["SLEEP"],
"animations": ["q.bedrock('tauros_paldean_aqua', 'sleep')"]
}
"animations": ["q.bedrock('tauros_paldean_aqua', 'sleep')"]
}
}
}
}
@@ -4,48 +4,85 @@
"profileScale": 0.75,
"profileTranslation": [0, 0.6, 0],
"rootBone": "tauros",
"animations": {
"cry": "q.bedrock_stateful('tauros_paldean_blaze', 'cry')",
"status": "q.bedrock_primary('tauros_paldean_blaze', 'cry', q.curve('symmetrical_wide'))"
"firstPersonCameraOffset": {
"seat_1": [0, 0.5, 0]
},
"thirdPersonCameraOffset": {
"seat_1": [0, 0, 1],
"seat_1_reverse": [0, 0, 1]
},
"thirdPersonCameraOffsetNoViewBobbing": {
"seat_1": [0, 2, 5],
"seat_1_reverse": [0, 2, 5]
},
"animations": {
"cry": "q.bedrock_stateful('tauros_paldean_blaze', 'cry')"
},
"poses": {
"jump": {
"poseTypes": ["STAND", "WALK"],
"condition": "q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_blaze', 'ride_jump')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros_paldean_blaze', 'ride_ground_run')"
}
],
"quirks": [
"q.bedrock_quirk('tauros_paldean_blaze', 'blink')"
],
"transformTicks": 5,
"transformToTicks": 5
},
"poses": {
"standing": {
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_blaze', 'ground_idle')"
],
"quirks": [
"q.bedrock_quirk('tauros_paldean_blaze', 'blink')"
]
"running": {
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"isBattle": false,
"condition": "!q.in_air && q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_blaze', 'ground_run')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros_paldean_blaze', 'ride_ground_run')"
}
],
"quirks": ["q.bedrock_quirk('tauros_paldean_blaze', 'blink')"]
},
"walking": {
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"condition": "!q.in_air && !q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_blaze', 'ground_walk')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros_paldean_blaze', 'ride_ground_walk')"
}
],
"quirks": ["q.bedrock_quirk('tauros_paldean_blaze', 'blink')"]
},
"standing": {
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
"isBattle": false,
"condition": "!q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_blaze', 'ground_idle')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('tauros_paldean_blaze', 'ride_ground_walk')"
}
],
"quirks": ["q.bedrock_quirk('tauros_paldean_blaze', 'blink')"]
},
"sleep": {
"poseTypes": ["SLEEP"],
"namedAnimations": {
"cry": "q.bedrock_stateful('dummy', 'cry')"
},
"walking": {
"poseTypes": ["WALK"],
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_blaze', 'ground_walk')"
],
"quirks": ["q.bedrock_quirk('tauros_paldean_blaze', 'blink')"]
},
"float": {
"poseTypes": ["FLOAT"],
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_blaze', 'ground_idle')"
],
"quirks": ["q.bedrock_quirk('tauros_paldean_blaze', 'blink')"]
},
"swim": {
"poseTypes": ["SWIM"],
"animations": [
"q.look('head')",
"q.bedrock('tauros_paldean_blaze', 'ground_walk')"
],
"quirks": ["q.bedrock_quirk('tauros_paldean_blaze', 'blink')"]
},
"sleep": {
"poseTypes": ["SLEEP"],
"animations": ["q.bedrock('tauros_paldean_blaze', 'sleep')"]
}
"animations": ["q.bedrock('tauros_paldean_blaze', 'sleep')"]
}
}
}
}
@@ -5,40 +5,74 @@
"profileTranslation": [ 0, 1.12, 0],
"rootBone": "blaziken",
"animations": {
"cry": "q.bedrock_stateful('blaziken', 'cry')"
"cry": "q.bedrock_stateful('blaziken', 'cry')",
"recoil": "q.bedrock_stateful('blaziken', 'recoil')",
"physical": "q.bedrock_primary('blaziken', 'physical', q.curve('symmetrical_wide'))",
"special": "q.bedrock_primary('blaziken', 'special', q.curve('symmetrical_wide'))",
"status": "q.bedrock_primary('blaziken', 'status', q.curve('symmetrical_wide'))"
},
"poses": {
"standing": {
"poseTypes": [
"STAND",
"NONE",
"FLOAT",
"PORTRAIT",
"PROFILE"
],
"battle-standing": {
"poseTypes": ["STAND"],
"isBattle": true,
"animations": [
"q.look('head')",
"q.bedrock('blaziken', 'battle_idle')"
],
"quirks": [
"q.bedrock_quirk('blaziken', 'blink')"
],
"namedAnimations": {
"cry": "q.bedrock_primary('blaziken', 'battle_cry', q.curve('symmetrical_wide'))"
}
},
"standing": {
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
"isBattle": false,
"animations": [
"q.look('head')",
"q.bedrock('blaziken', 'ground_idle')"
],
"quirks": [
"q.bedrock_quirk('blaziken', 'blink')"
]
"quirks": ["q.bedrock_quirk('blaziken', 'blink')"]
},
"walking": {
"poseTypes": [
"WALK",
"SWIM"
],
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"condition": "!q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('blaziken', 'ground_idle')",
"q.biped_walk(1, 1, 'leg_left', 'leg_right')",
"q.bimanual_swing(1, 1, 'arm_left', 'arm_right')"
"q.bedrock('blaziken', 'ground_walk')"
],
"quirks": [
"q.bedrock_quirk('blaziken', 'blink')"
]
"quirks": ["q.bedrock_quirk('blaziken', 'blink')"]
},
"running": {
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"isBattle": false,
"condition": "q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('blaziken', 'ground_run')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('blaziken', 'ground_jog')"
}
],
"quirks": ["q.bedrock_quirk('blaziken', 'blink')"]
},
"battle-sleep": {
"poseTypes": ["SLEEP"],
"isBattle": true,
"namedAnimations": {
"cry": "q.bedrock_stateful('dummy', 'cry')"
},
"animations": ["q.bedrock('blaziken', 'battle_sleep')"]
},
"sleep": {
"poseTypes": ["SLEEP"],
"isBattle": false,
"namedAnimations": {
"cry": "q.bedrock_stateful('dummy', 'cry')"
},
"animations": ["q.bedrock('blaziken', 'sleep')"]
}
}
}
@@ -48,31 +48,57 @@
"cry": "q.bedrock_primary('slaking', 'battle_cry', q.curve('symmetrical_wide'))"
}
},
"jump": {
"poseTypes": ["STAND", "WALK"],
"condition": "q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('slaking', 'ride_jump')"
],
"quirks": [
"q.bedrock_quirk('slaking', 'blink')"
],
"transformTicks": 5,
"transformToTicks": 5
},
"running": {
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"isBattle": false,
"condition": "!q.in_air && q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('slaking', 'ground_run')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('slaking', 'ride_ground')"
}
],
"quirks": ["q.bedrock_quirk('slaking', 'blink')"]
},
"standing": {
"poseTypes": ["STAND", "NONE"],
"isBattle": false,
"condition": "!q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('slaking', 'ground_idle')"
"q.bedrock('slaking', 'ground_idle')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('slaking', 'ride_ground')"
}
],
"quirks": ["q.bedrock_quirk('slaking', 'blink')"]
},
"walking": {
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"condition": "!q.is_sprinting",
"condition": "!q.in_air && !q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('slaking', 'ground_walk')"
],
"quirks": ["q.bedrock_quirk('slaking', 'blink')"]
},
"running": {
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"isBattle": false,
"condition": "q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('slaking', 'ground_run')"
"q.bedrock('slaking', 'ground_walk')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('slaking', 'ride_ground')"
}
],
"quirks": ["q.bedrock_quirk('slaking', 'blink')"]
},
@@ -84,4 +110,4 @@
"animations": ["q.bedrock('slaking', 'sleep')"]
}
}
}
}
@@ -281,16 +281,32 @@
],
"quirks": ["q.bedrock_quirk('garchomp', 'blink')"]
},
"flying": {
"mount-flying": {
"poseName": "flying",
"poseTypes": ["FLY"],
"condition": "q.is_ridden",
"animations": [
"q.look('head')",
"q.bedrock('garchomp', 'air_fly')",
"q.bedrock('garchomp', 'ride_air_fly')"
],
"quirks": [
"q.bedrock_quirk('garchomp', 'blink')"
],
"transformedParts": [
{
"condition": "q.is_ridden",
"animation": "q.bedrock('garchomp', 'ride_air_fly')"
"part": "body",
"position": [0, -10, 0]
}
]
},
"flying": {
"poseName": "flying",
"poseTypes": ["FLY"],
"condition": "!q.is_ridden",
"animations": [
"q.look('head')",
"q.bedrock('garchomp', 'air_fly')"
],
"quirks": [
"q.bedrock_quirk('garchomp', 'blink')",
@@ -4,28 +4,106 @@
"profileScale": 0.35,
"profileTranslation": [-0.07, 1.13, 0.0],
"rootBone": "rhyperior",
"firstPersonCameraOffset": {
"seat_1": [0, 0.5, 0]
},
"thirdPersonCameraOffset": {
"seat_1": [0, 0, 1],
"seat_1_reverse": [0, 0, 1]
},
"thirdPersonCameraOffsetNoViewBobbing": {
"seat_1": [0, 1, 2],
"seat_1_reverse": [0, 1, 2]
},
"animations": {
"cry": "q.bedrock_stateful('rhyperior', 'cry')"
"cry": "q.bedrock_stateful('rhyperior', 'cry')",
"recoil": "q.bedrock_stateful('rhyperior', 'recoil')",
"physical": "q.bedrock_primary('rhyperior', 'physical', q.curve('symmetrical_wide'))",
"special": "q.bedrock_primary('rhyperior', 'special', q.curve('symmetrical_wide'))",
"status": "q.bedrock_primary('rhyperior', 'status', q.curve('symmetrical_wide'))"
},
"poses": {
"standing": {
"poseName": "standing",
"poseTypes": ["STAND", "FLOAT", "NONE", "PORTRAIT", "PROFILE"],
"battle-standing": {
"poseTypes": ["STAND"],
"isBattle": true,
"animations": [
"q.look('head_ai')",
"q.bedrock('rhyperior', 'ground_idle')"
"q.look('head')",
"q.bedrock('rhyperior', 'battle_idle')"
],
"quirks": [
"q.bedrock_quirk('rhyperior', 'blink')"
],
"namedAnimations": {
"cry": "q.bedrock_primary('rhyperior', 'battle_cry', q.curve('symmetrical_wide'))"
}
},
"jump": {
"poseTypes": ["STAND", "WALK"],
"condition": "q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('rhyperior', 'ride_jump')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('rhyperior', 'ride_ground_run')"
}
],
"quirks": [
"q.bedrock_quirk('rhyperior', 'blink')"
],
"transformTicks": 5,
"transformToTicks": 5
},
"running": {
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"condition": "!q.in_air && q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('rhyperior', 'ground_run')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('rhyperior', 'ride_ground_run')"
}
],
"quirks": [
"q.bedrock_quirk('rhyperior', 'blink')"
]
},
"standing": {
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
"isBattle": false,
"condition": "!q.in_air",
"animations": [
"q.look('head')",
"q.bedrock('rhyperior', 'ground_idle')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('rhyperior', 'ride_ground_walk')"
}
],
"quirks": [
"q.bedrock_quirk('rhyperior', 'blink')"
]
},
"walking": {
"poseTypes": ["WALK", "FLOAT", "SWIM"],
"condition": "!q.in_air && !q.is_sprinting",
"animations": [
"q.look('head')",
"q.bedrock('rhyperior', 'ground_walk')",
{
"condition": "q.is_ridden",
"animation": "q.bedrock('rhyperior', 'ride_ground_walk')"
}
],
"quirks": ["q.bedrock_quirk('rhyperior', 'blink')"]
},
"walking": {
"poseName": "walking",
"poseTypes": ["WALK", "SWIM"],
"animations": [
"q.look('head_ai')",
"q.biped_walk(0.66, 0.6, 'left_upper_leg', 'right_upper_leg')",
"q.bedrock('rhyperior', 'ground_idle')"
],
"quirks": ["q.bedrock_quirk('rhyperior', 'blink')"]
"sleep": {
"poseTypes": ["SLEEP"],
"namedAnimations": {
"cry": "q.bedrock_stateful('dummy', 'cry')"
},
"animations": ["q.bedrock('rhyperior', 'sleep')"]
}
}
}
}
@@ -59,7 +59,7 @@
"isBattle": false,
"animations": [
"q.look('head')",
"q.bedrock('cyclizar', 'ride_drift')"
"q.bedrock('cyclizar', 'mount_idle')"
],
"condition": "q.is_ridden && !q.in_air",
"quirks": ["q.bedrock_quirk('cyclizar', 'blink')"]
@@ -0,0 +1,8 @@
{
"match": {
"type": "cobblemon:pokemon"
},
"luminance": {
"type": "cobblemon:pokemon"
}
}
@@ -900,6 +900,7 @@
"cobblemon.battle.lose": "%1$s be out of usable monsters!",
"cobblemon.battle.forfeit": "%1$s forfeited th' battle!",
"cobblemon.battle.flee": "Th' battle was fled.",
"cobblemon.battle.wild_flee": "Th' scallywag, %1$s abandoned ship.",
"cobblemon.battle.switch_option": "Switch monsters: ",
"cobblemon.battle.your_team": "Ye crew:",
"cobblemon.battle.must_switch": "Choose a monster to switch in",
@@ -2700,6 +2700,7 @@
"cobblemon.battle.lose": "%1$s is out of usable Pokémon!",
"cobblemon.battle.forfeit": "%1$s forfeited the battle!",
"cobblemon.battle.flee": "The battle was fled.",
"cobblemon.battle.wild_flee": "The wild %1$s fled.",
"cobblemon.battle.switch_option": "Switch Pokémon: ",
"cobblemon.battle.your_team": "Your Team:",
"cobblemon.battle.must_switch": "Choose a Pokémon to switch in",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

@@ -147,4 +147,8 @@ transitive-accessible class net/minecraft/world/inventory/BrewingStandMenu$FuelS
transitive-accessible method net/minecraft/world/entity/ai/behavior/RandomStroll getTargetSwimPos (Lnet/minecraft/world/entity/PathfinderMob;)Lnet/minecraft/world/phys/Vec3;
transitive-accessible method net/minecraft/world/food/FoodData add (IF)V
transitive-accessible method net/minecraft/world/food/FoodData add (IF)V
transitive-accessible method net/minecraft/client/model/HumanoidModel setupAttackAnimation (Lnet/minecraft/world/entity/LivingEntity;F)V
transitive-accessible method net/minecraft/client/model/HumanoidModel poseRightArm (Lnet/minecraft/world/entity/LivingEntity;)V
transitive-accessible method net/minecraft/client/model/HumanoidModel poseLeftArm (Lnet/minecraft/world/entity/LivingEntity;)V
@@ -2,7 +2,7 @@
"requirements": [
{
"variant": "properties",
"target": "tangela"
"target": "tangrowth"
}
],
"interactions": [
@@ -0,0 +1,19 @@
{
"type": "cobblemon:cooking_pot_shapeless",
"group": "aprijuice",
"category": "complex_dishes",
"ingredients": [
{
"item": "cobblemon:black_apricorn"
},
{
"item": "cobblemon:pep_up_flower"
}
],
"result": {
"id": "cobblemon:aprijuice_black"
},
"seasoningProcessors": [
"flavour"
]
}
@@ -0,0 +1,19 @@
{
"type": "cobblemon:cooking_pot_shapeless",
"group": "aprijuice",
"category": "complex_dishes",
"ingredients": [
{
"item": "cobblemon:blue_apricorn"
},
{
"item": "cobblemon:pep_up_flower"
}
],
"result": {
"id": "cobblemon:aprijuice_blue"
},
"seasoningProcessors": [
"flavour"
]
}
@@ -0,0 +1,19 @@
{
"type": "cobblemon:cooking_pot_shapeless",
"group": "aprijuice",
"category": "complex_dishes",
"ingredients": [
{
"item": "cobblemon:green_apricorn"
},
{
"item": "cobblemon:pep_up_flower"
}
],
"result": {
"id": "cobblemon:aprijuice_green"
},
"seasoningProcessors": [
"flavour"
]
}
@@ -0,0 +1,19 @@
{
"type": "cobblemon:cooking_pot_shapeless",
"group": "aprijuice",
"category": "complex_dishes",
"ingredients": [
{
"item": "cobblemon:pink_apricorn"
},
{
"item": "cobblemon:pep_up_flower"
}
],
"result": {
"id": "cobblemon:aprijuice_pink"
},
"seasoningProcessors": [
"flavour"
]
}
@@ -0,0 +1,19 @@
{
"type": "cobblemon:cooking_pot_shapeless",
"group": "aprijuice",
"category": "complex_dishes",
"ingredients": [
{
"item": "cobblemon:red_apricorn"
},
{
"item": "cobblemon:pep_up_flower"
}
],
"result": {
"id": "cobblemon:aprijuice_red"
},
"seasoningProcessors": [
"flavour"
]
}
@@ -0,0 +1,19 @@
{
"type": "cobblemon:cooking_pot_shapeless",
"group": "aprijuice",
"category": "complex_dishes",
"ingredients": [
{
"item": "cobblemon:white_apricorn"
},
{
"item": "cobblemon:pep_up_flower"
}
],
"result": {
"id": "cobblemon:aprijuice_white"
},
"seasoningProcessors": [
"flavour"
]
}
@@ -0,0 +1,19 @@
{
"type": "cobblemon:cooking_pot_shapeless",
"group": "aprijuice",
"category": "complex_dishes",
"ingredients": [
{
"item": "cobblemon:yellow_apricorn"
},
{
"item": "cobblemon:pep_up_flower"
}
],
"result": {
"id": "cobblemon:aprijuice_yellow"
},
"seasoningProcessors": [
"flavour"
]
}
@@ -6,6 +6,7 @@
"maleRatio": 0.875,
"height": 6,
"weight": 85,
"lightingData": { "lightLevel": 8, "liquidGlowMode": "LAND" },
"pokedex": [
"cobblemon.species.charmander.desc"
],
@@ -46,19 +46,199 @@
"baseFriendship": 50,
"baseScale": 0.7,
"hitbox": {
"width": 1.7,
"height": 2,
"fixed": false
"fixed": false,
"width": 1.7
},
"behaviour": {
"moving": {
"swim": {
"canBreatheUnderwater": true,
"canSwimInWater": true,
"canSwimInLava": false,
"swimSpeed": "0.2"
"riding": {
"behaviours": {
"LAND": {
"key": "cobblemon:land/horse",
"rideSounds": [],
"canJump": false,
"canSprint": false,
"stats": {
"ACCELERATION": "10-40",
"JUMP": "10-40",
"SKILL": "80-100",
"SPEED": "10-40",
"STAMINA": "10-40"
}
},
"LIQUID": {
"key": "cobblemon:liquid/dolphin",
"rideSounds": [],
"stats": {
"ACCELERATION": "30-65",
"JUMP": "30-65",
"SKILL": "30-65",
"SPEED": "10-40",
"STAMINA": "55-85"
}
}
},
"seats": [
{
"offset": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"poseOffsets": [
{
"offset": {
"x": 0.0,
"y": -0.9496859,
"z": 0.19579774
},
"poseTypes": [
"STAND"
]
},
{
"offset": {
"x": 0.0,
"y": -0.9526392,
"z": 0.40629542
},
"poseTypes": [
"WALK"
]
},
{
"offset": {
"x": 0.0,
"y": -1.0221033,
"z": 0.23787531
},
"poseTypes": [
"HOVER"
]
},
{
"offset": {
"x": 0.0,
"y": -1.0221033,
"z": 0.23787531
},
"poseTypes": [
"FLY"
]
},
{
"offset": {
"x": 0.0,
"y": -1.0221033,
"z": 0.23787531
},
"poseTypes": [
"FLOAT"
]
},
{
"offset": {
"x": 0.0,
"y": -1.0366806,
"z": 0.3999315
},
"poseTypes": [
"SWIM"
]
},
{
"offset": {
"x": 0.0,
"y": -1.0221033,
"z": 0.23787531
},
"poseTypes": [
"GLIDE"
]
}
]
},
{
"offset": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"poseOffsets": [
{
"offset": {
"x": 0.0,
"y": -0.75379527,
"z": 1.0256639
},
"poseTypes": [
"STAND"
]
},
{
"offset": {
"x": 0.0,
"y": -0.7437379,
"z": 1.2329822
},
"poseTypes": [
"WALK"
]
},
{
"offset": {
"x": 0.0,
"y": -0.7830492,
"z": 1.0563521
},
"poseTypes": [
"HOVER"
]
},
{
"offset": {
"x": 0.0,
"y": -0.7830492,
"z": 1.0563521
},
"poseTypes": [
"FLY"
]
},
{
"offset": {
"x": 0.0,
"y": -0.7830492,
"z": 1.0563521
},
"poseTypes": [
"FLOAT"
]
},
{
"offset": {
"x": 0.0,
"y": -0.8467945,
"z": 1.231192
},
"poseTypes": [
"SWIM"
]
},
{
"offset": {
"x": 0.0,
"y": -0.7830492,
"z": 1.0563521
},
"poseTypes": [
"GLIDE"
]
}
]
}
]
},
"behaviour": {
"herd": {
"maxSize": "5",
"toleratedLeaders": [
@@ -83,37 +263,15 @@
"tier": 4
}
]
}
},
"riding": {
"behaviours": {
"LIQUID": {
"key": "cobblemon:liquid/dolphin",
"stats": {
"SPEED": "50-100",
"ACCELERATION": "50-100",
"SKILL": "50-100",
"JUMP": "50-100",
"STAMINA": "50-100"
}
}
},
"seats": [
{
"offset": {
"x": 0,
"y": 0.4,
"z": 0
}
},
{
"offset": {
"x": 0,
"y": 0.4,
"z": 1
}
"moving": {
"swim": {
"canBreatheUnderwater": true,
"canSwimInLava": false,
"canSwimInWater": true,
"swimSpeed": "0.2"
}
]
}
},
"drops": {
"amount": 4,
@@ -53,7 +53,7 @@
"riding": {
"behaviours": {
"AIR": {
"key": "cobblemon:air/bird",
"key": "cobblemon:air/jet",
"rideSounds": [
{
"muffleEnabled": true,
@@ -90,6 +90,17 @@
"SPEED": "10-40",
"STAMINA": "10-40"
}
},
"LIQUID": {
"key": "cobblemon:liquid/dolphin",
"rideSounds": [],
"stats": {
"ACCELERATION": "30-65",
"JUMP": "55-85",
"SKILL": "30-65",
"SPEED": "30-65",
"STAMINA": "55-85"
}
}
},
"seats": [
@@ -46,18 +46,128 @@
"baseFriendship": 50,
"baseScale": 1.1,
"hitbox": {
"width": 1.1,
"height": 2,
"fixed": false
"fixed": false,
"width": 1.1
},
"riding": {
"behaviours": {
"LAND": {
"key": "cobblemon:land/horse",
"rideSounds": [],
"stats": {
"ACCELERATION": "30-65",
"JUMP": "10-40",
"SKILL": "10-40",
"SPEED": "10-40",
"STAMINA": "55-85"
}
},
"LIQUID": {
"key": "cobblemon:liquid/boat",
"rideSounds": [],
"stats": {
"ACCELERATION": "30-65",
"JUMP": "0-10",
"SKILL": "30-65",
"SPEED": "0-10",
"STAMINA": "0-10"
}
}
},
"seats": [
{
"offset": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"poseOffsets": [
{
"offset": {
"x": -0.0014235907,
"y": -1.7580168,
"z": 0.18322733
},
"poseTypes": [
"STAND"
]
},
{
"offset": {
"x": -0.06559907,
"y": -1.8229002,
"z": 0.23897748
},
"poseTypes": [
"WALK"
]
},
{
"offset": {
"x": -0.04793154,
"y": -1.7881656,
"z": 0.15857956
},
"poseTypes": [
"HOVER"
]
},
{
"offset": {
"x": -0.04793154,
"y": -1.7881656,
"z": 0.15857956
},
"poseTypes": [
"FLY"
]
},
{
"offset": {
"x": -0.06559907,
"y": -1.8229002,
"z": 0.23897748
},
"poseTypes": [
"FLOAT"
]
},
{
"offset": {
"x": -0.06559907,
"y": -1.8229002,
"z": 0.23897748
},
"poseTypes": [
"SWIM"
]
},
{
"offset": {
"x": -0.04793154,
"y": -1.7881656,
"z": 0.15857956
},
"poseTypes": [
"GLIDE"
]
}
]
}
]
},
"behaviour": {
"herd": {
"maxSize": "4"
},
"moving": {
"swim": {
"canSwimInLava": true
},
"walk": {
"walkSpeed": 0.15
}
},
"herd": {
"maxSize": "4"
}
},
"drops": {
@@ -276,55 +386,17 @@
"preEvolution": "rhyhorn",
"evolutions": [
{
"id": "rhydon_rhyperior",
"variant": "trade",
"result": "rhyperior",
"consumeHeldItem": true,
"id": "rhydon_rhyperior",
"learnableMoves": [],
"requirements": [
{
"variant": "held_item",
"itemCondition": "cobblemon:protector"
"itemCondition": "cobblemon:protector",
"variant": "held_item"
}
]
],
"result": "rhyperior",
"variant": "trade"
}
],
"riding": {
"stats": {
"SPEED": {
"ranges": {
"LAND": "5-20",
"LIQUID": "5-20"
}
},
"ACCELERATION": {
"ranges": {
"LAND": "50-80",
"LIQUID": "50-80"
}
},
"SKILL": {
"ranges": {
"LAND": "20-40",
"LIQUID": "20-40"
}
},
"JUMP": {
"ranges": {
"LAND": "5-10",
"LIQUID": "5-10"
}
},
"STAMINA": {
"ranges": {
"LAND": "25-65",
"LIQUID": "25-65"
}
}
},
"seats": [],
"behaviour": {
"key": "cobblemon:land/horse"
}
}
]
}
@@ -46,16 +46,107 @@
"baseFriendship": 50,
"baseScale": 1,
"hitbox": {
"width": 1.2,
"height": 1.4,
"fixed": false
"fixed": false,
"width": 1.2
},
"behaviour": {
"moving": {
"swim": {
"canSwimInLava": true
"riding": {
"behaviours": {
"LAND": {
"key": "cobblemon:land/horse",
"rideSounds": [],
"stats": {
"ACCELERATION": "0-10",
"JUMP": "0-10",
"SKILL": "30-65",
"SPEED": "10-40",
"STAMINA": "55-85"
}
}
},
"seats": [
{
"offset": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"poseOffsets": [
{
"offset": {
"x": -0.0016335993,
"y": -1.1859827,
"z": -0.50283176
},
"poseTypes": [
"STAND"
]
},
{
"offset": {
"x": 0.0048732185,
"y": -1.1896727,
"z": -0.49589556
},
"poseTypes": [
"WALK"
]
},
{
"offset": {
"x": -0.0017163849,
"y": -1.2334154,
"z": -0.40224022
},
"poseTypes": [
"HOVER"
]
},
{
"offset": {
"x": -0.0017163849,
"y": -1.2334154,
"z": -0.40224022
},
"poseTypes": [
"FLY"
]
},
{
"offset": {
"x": 0.0048732185,
"y": -1.1896727,
"z": -0.49589556
},
"poseTypes": [
"FLOAT"
]
},
{
"offset": {
"x": 0.0048732185,
"y": -1.1896727,
"z": -0.49589556
},
"poseTypes": [
"SWIM"
]
},
{
"offset": {
"x": -0.0017163849,
"y": -1.2334154,
"z": -0.40224022
},
"poseTypes": [
"GLIDE"
]
}
]
}
]
},
"behaviour": {
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -64,6 +155,14 @@
"tier": 1
}
]
},
"moving": {
"swim": {
"canSwimInLava": true
},
"walk": {
"walkSpeed": 0.2
}
}
},
"drops": {
@@ -232,42 +331,19 @@
],
"evolutions": [
{
"id": "rhyhorn_rhydon",
"variant": "level_up",
"result": "rhydon",
"consumeHeldItem": false,
"id": "rhyhorn_rhydon",
"learnableMoves": [
"hammerarm"
],
"requirements": [
{
"variant": "level",
"minLevel": 42
"minLevel": 42,
"variant": "level"
}
]
],
"result": "rhydon",
"variant": "level_up"
}
],
"riding": {
"stats": {
"SPEED": {
"ranges": "20-50"
},
"ACCELERATION": {
"ranges": "30-60"
},
"SKILL": {
"ranges": "20-40"
},
"JUMP": {
"ranges": "5-10"
},
"STAMINA": {
"ranges": "25-55"
}
},
"seats": [],
"behaviour": {
"key": "cobblemon:land/vehicle"
}
}
]
}
@@ -43,15 +43,145 @@
"catchRate": 45,
"eggCycles": 20,
"baseFriendship": 50,
"features": [
"paldean",
"bull_breed"
],
"baseScale": 1.3,
"hitbox": {
"width": 1.3,
"height": 1.4,
"fixed": false
"fixed": false,
"width": 1.3
},
"riding": {
"behaviours": {
"LAND": {
"key": "cobblemon:land/horse",
"rideSounds": [],
"stats": {
"ACCELERATION": "10-40",
"JUMP": "30-65",
"SKILL": "10-40",
"SPEED": "55-85",
"STAMINA": "55-85"
}
}
},
"seats": [
{
"offset": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"poseOffsets": [
{
"offset": {
"x": -0.004955834,
"y": -1.5021043,
"z": -0.13071083
},
"poseTypes": [
"STAND"
]
},
{
"offset": {
"x": -0.00920631,
"y": -1.4530607,
"z": -0.125
},
"poseTypes": [
"WALK"
]
},
{
"offset": {
"x": 0.0,
"y": -1.625,
"z": -0.125
},
"poseTypes": [
"HOVER"
]
},
{
"offset": {
"x": 0.0,
"y": -1.625,
"z": -0.125
},
"poseTypes": [
"FLY"
]
},
{
"offset": {
"x": -0.00920631,
"y": -1.4530607,
"z": -0.125
},
"poseTypes": [
"FLOAT"
]
},
{
"offset": {
"x": -0.00920631,
"y": -1.4530607,
"z": -0.125
},
"poseTypes": [
"SWIM"
]
},
{
"offset": {
"x": 0.0,
"y": -1.625,
"z": -0.125
},
"poseTypes": [
"GLIDE"
]
}
]
}
]
},
"behaviour": {
"herd": {
"maxSize": "9",
"toleratedLeaders": [
{
"pokemon": "bouffalant",
"tier": 1
},
{
"pokemon": "miltank",
"tier": 2
},
{
"pokemon": "tauros",
"tier": 3
},
{
"pokemon": "tauros bull_breed=combat",
"tier": 3
},
{
"pokemon": "tauros bull_breed=aqua",
"tier": 4
},
{
"pokemon": "tauros bull_breed=blaze",
"tier": 4
}
]
},
"moving": {
"swim": {
"canSwimInLava": false,
"canSwimInWater": true,
"swimSpeed": "0.25"
}
}
},
"drops": {
"amount": 5,
@@ -241,6 +371,102 @@
"special_defence": 0,
"speed": 0
},
"riding": {
"behaviours": {
"LAND": {
"key": "cobblemon:land/horse",
"rideSounds": [],
"stats": {
"ACCELERATION": "10-40",
"JUMP": "30-65",
"SKILL": "30-65",
"SPEED": "30-65",
"STAMINA": "55-85"
}
}
},
"seats": [
{
"offset": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"poseOffsets": [
{
"offset": {
"x": -0.004955834,
"y": -1.5021043,
"z": -0.13071083
},
"poseTypes": [
"STAND"
]
},
{
"offset": {
"x": -0.00920631,
"y": -1.4530607,
"z": -0.125
},
"poseTypes": [
"WALK"
]
},
{
"offset": {
"x": 0.0,
"y": -1.625,
"z": -0.125
},
"poseTypes": [
"HOVER"
]
},
{
"offset": {
"x": 0.0,
"y": -1.625,
"z": -0.125
},
"poseTypes": [
"FLY"
]
},
{
"offset": {
"x": -0.00920631,
"y": -1.4530607,
"z": -0.125
},
"poseTypes": [
"FLOAT"
]
},
{
"offset": {
"x": -0.00920631,
"y": -1.4530607,
"z": -0.125
},
"poseTypes": [
"SWIM"
]
},
{
"offset": {
"x": 0.0,
"y": -1.625,
"z": -0.125
},
"poseTypes": [
"GLIDE"
]
}
]
}
]
},
"moves": [
"1:tackle",
"1:tailwhip",
@@ -364,6 +590,17 @@
"special_defence": 0,
"speed": 0
},
"behaviour": {
"herd": {
"maxSize": "9",
"toleratedLeaders": [
{
"pokemon": "tauros bull_breed=blaze",
"tier": 1
}
]
}
},
"moves": [
"1:tackle",
"1:tailwhip",
@@ -451,18 +688,7 @@
"tutor:zenheadbutt"
],
"evolutions": [],
"battleOnly": false,
"behaviour": {
"herd": {
"maxSize": "9",
"toleratedLeaders": [
{
"pokemon": "tauros bull_breed=blaze",
"tier": 1
}
]
}
}
"battleOnly": false
},
{
"name": "Paldea-Aqua",
@@ -503,6 +729,17 @@
"special_defence": 0,
"speed": 0
},
"behaviour": {
"herd": {
"maxSize": "9",
"toleratedLeaders": [
{
"pokemon": "tauros bull_breed=aqua",
"tier": 1
}
]
}
},
"moves": [
"1:tackle",
"1:tailwhip",
@@ -588,87 +825,11 @@
"tutor:zenheadbutt"
],
"evolutions": [],
"battleOnly": false,
"behaviour": {
"herd": {
"maxSize": "9",
"toleratedLeaders": [
{
"pokemon": "tauros bull_breed=aqua",
"tier": 1
}
]
}
}
"battleOnly": false
}
],
"riding": {
"stats": {
"SPEED": {
"ranges": {
"LAND": "30-60",
"LIQUID": "5-20"
}
},
"ACCELERATION": {
"ranges": {
"LAND": "20-70",
"LIQUID": "50-80"
}
},
"SKILL": {
"ranges": {
"LAND": "40-85",
"LIQUID": "20-40"
}
},
"JUMP": {
"ranges": {
"LAND": "10-15",
"LIQUID": "5-10"
}
},
"STAMINA": {
"ranges": {
"LAND": "40-85",
"LIQUID": "25-65"
}
}
},
"seats": [],
"behaviour": {
"key": "cobblemon:land/horse"
}
},
"behaviour": {
"herd": {
"maxSize": "9",
"toleratedLeaders": [
{
"pokemon": "bouffalant",
"tier": 1
},
{
"pokemon": "miltank",
"tier": 2
},
{
"pokemon": "tauros",
"tier": 3
},
{
"pokemon": "tauros bull_breed=combat",
"tier": 3
},
{
"pokemon": "tauros bull_breed=aqua",
"tier": 4
},
{
"pokemon": "tauros bull_breed=blaze",
"tier": 4
}
]
}
}
"features": [
"paldean",
"bull_breed"
]
}
@@ -93,9 +93,9 @@
},
{
"offset": {
"x": -0.017037265,
"y": -1.2800963,
"z": -0.30365703
"x": -0.013957404,
"y": -1.4664029,
"z": -0.13922381
},
"poseTypes": [
"HOVER"
@@ -103,9 +103,9 @@
},
{
"offset": {
"x": -0.017037265,
"y": -1.2800963,
"z": -0.30365703
"x": -0.013957404,
"y": -1.4664029,
"z": -0.13922381
},
"poseTypes": [
"FLY"
@@ -113,9 +113,9 @@
},
{
"offset": {
"x": -0.017037265,
"y": -1.2800963,
"z": -0.30365703
"x": -0.013957404,
"y": -1.4664029,
"z": -0.13922381
},
"poseTypes": [
"FLOAT"
@@ -123,9 +123,9 @@
},
{
"offset": {
"x": -0.017037265,
"y": -1.2800963,
"z": -0.30365703
"x": 0.041163683,
"y": -1.4031144,
"z": -0.28313723
},
"poseTypes": [
"SWIM"
@@ -133,9 +133,9 @@
},
{
"offset": {
"x": -0.017037265,
"y": -1.2800963,
"z": -0.30365703
"x": -0.013957404,
"y": -1.4664029,
"z": -0.13922381
},
"poseTypes": [
"GLIDE"
@@ -140,9 +140,9 @@
},
{
"offset": {
"x": 0.014060979,
"y": -2.1333303,
"z": 0.62648964
"x": 0.018078402,
"y": -2.3242362,
"z": 0.62526023
},
"poseTypes": [
"FLOAT"
@@ -150,9 +150,9 @@
},
{
"offset": {
"x": 0.014060979,
"y": -2.7658293,
"z": 0.55346745
"x": 0.018078402,
"y": -2.3242362,
"z": 0.62526023
},
"poseTypes": [
"SWIM"
@@ -160,9 +160,9 @@
},
{
"offset": {
"x": 0.0,
"y": -0.98749983,
"z": 0.28125027
"x": 0.018078402,
"y": -2.3242362,
"z": 0.62526023
},
"poseTypes": [
"GLIDE"
@@ -82,9 +82,9 @@
},
{
"offset": {
"x": 0.045301527,
"y": -2.1100652,
"z": -0.0043179393
"x": 0.046585813,
"y": -2.0097132,
"z": 0.039164737
},
"poseTypes": [
"WALK"
@@ -92,9 +92,9 @@
},
{
"offset": {
"x": 0.03896393,
"y": -2.1481323,
"z": 0.18140154
"x": 0.0,
"y": -2.3038323,
"z": 0.41690227
},
"poseTypes": [
"HOVER"
@@ -102,9 +102,9 @@
},
{
"offset": {
"x": 0.03896393,
"y": -2.1481323,
"z": 0.18140154
"x": 0.0,
"y": -2.3038323,
"z": 0.41690227
},
"poseTypes": [
"FLY"
@@ -112,9 +112,9 @@
},
{
"offset": {
"x": 0.03896393,
"y": -2.1481323,
"z": 0.18140154
"x": 0.0,
"y": -2.3038323,
"z": 0.41690227
},
"poseTypes": [
"FLOAT"
@@ -122,9 +122,9 @@
},
{
"offset": {
"x": 0.045301527,
"y": -2.1100652,
"z": -0.0043179393
"x": 0.046585813,
"y": -2.0097132,
"z": 0.039164737
},
"poseTypes": [
"SWIM"
@@ -132,9 +132,9 @@
},
{
"offset": {
"x": 0.03896393,
"y": -2.1481323,
"z": 0.18140154
"x": 0.0,
"y": -2.3038323,
"z": 0.41690227
},
"poseTypes": [
"GLIDE"
@@ -43,7 +43,7 @@
"catchRate": 45,
"eggCycles": 20,
"baseFriendship": 50,
"baseScale": 0.75,
"baseScale": 0.9,
"hitbox": {
"width": 1.85,
"height": 3.2,

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