mirror of
https://gitlab.com/cable-mc/cobblemon.git
synced 2026-10-26 00:56:28 -04:00
Compare commits
10
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c56f8b098f | ||
|
|
e7197a7d3a | ||
|
|
d2febef6cf | ||
|
|
d98145617f | ||
|
|
c7b7fd3236 | ||
|
|
0a18c67e34 | ||
|
|
6341ca417f | ||
|
|
fe6841cac4 | ||
|
|
0536c98b6a | ||
|
|
fc73384ea2 |
@@ -15,9 +15,6 @@
|
||||
- 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.
|
||||
|
||||
@@ -283,15 +283,6 @@
|
||||
- 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
|
||||
@@ -457,7 +448,6 @@
|
||||
- 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`
|
||||
@@ -466,7 +456,6 @@
|
||||
- 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
|
||||
|
||||
@@ -31,7 +31,6 @@ 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()
|
||||
}
|
||||
|
||||
@@ -45,12 +44,6 @@ 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)
|
||||
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
* 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();
|
||||
}
|
||||
}
|
||||
-28
@@ -1,28 +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.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();
|
||||
}
|
||||
}
|
||||
-42
@@ -1,42 +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.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) {}
|
||||
}
|
||||
|
||||
-72
@@ -1,72 +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.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);
|
||||
}
|
||||
}
|
||||
-45
@@ -1,45 +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.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
-8
@@ -31,15 +31,14 @@ 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();
|
||||
}
|
||||
|
||||
// Return custom fov mult for riding
|
||||
cir.setReturnValue(ride.rideFovMult());
|
||||
}
|
||||
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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.mixin.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);
|
||||
}
|
||||
}
|
||||
}
|
||||
+15
-19
@@ -19,17 +19,20 @@ 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;
|
||||
@@ -37,8 +40,6 @@ 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(
|
||||
@@ -50,23 +51,19 @@ public class HumanoidModelMixin {
|
||||
float headPitch,
|
||||
CallbackInfo ci
|
||||
) {
|
||||
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);
|
||||
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);
|
||||
}
|
||||
|
||||
Entity vehicle = entity.getVehicle();
|
||||
if (vehicle instanceof PokemonEntity pokemonEntity && entity instanceof OrientationControllable) {
|
||||
var shouldRotatePlayerHead = pokemonEntity.ifRidingAvailableSupply(false, (behaviour, settings, state) ->
|
||||
behaviour.shouldRotateRiderHead(settings, state, pokemonEntity)
|
||||
);
|
||||
var shouldRotatePlayerHead = pokemonEntity.ifRidingAvailableSupply(false, (behaviour, settings, state) -> {
|
||||
return behaviour.shouldRotateRiderHead(settings, state, pokemonEntity);
|
||||
});
|
||||
|
||||
if (!shouldRotatePlayerHead) {
|
||||
netHeadYaw = 0f;
|
||||
@@ -79,8 +76,7 @@ public class HumanoidModelMixin {
|
||||
|
||||
if (!(entity instanceof AbstractClientPlayer player)) return;
|
||||
|
||||
MountedPlayerRenderer.shouldApplyRootAnimation = true;
|
||||
MountedPlayerRenderer.INSTANCE.animate((HumanoidModel<AbstractClientPlayer>)(Object)this, pokemonEntity, player, netHeadYaw, headPitch, ageInTicks, limbSwing, limbSwingAmount);
|
||||
MountedPlayerRenderer.INSTANCE.animate(pokemonEntity, player, relevantPartsByName, netHeadYaw, headPitch, ageInTicks, limbSwing, limbSwingAmount);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -174,16 +174,6 @@ 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,30 +146,32 @@ 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_EFFECT: DataComponentType<HeldItemEffectComponent> = create("held_item_effect", DataComponentType.builder<HeldItemEffectComponent>()
|
||||
.persistent(HeldItemEffectComponent.CODEC)
|
||||
.networkSynchronized(HeldItemEffectComponent.PACKET_CODEC)
|
||||
.build())
|
||||
val HELD_ITEM_REP: DataComponentType<HeldItemCapableComponent> = DataComponentType.builder<HeldItemCapableComponent>()
|
||||
.persistent(HeldItemCapableComponent.CODEC)
|
||||
.networkSynchronized(HeldItemCapableComponent.PACKET_CODEC)
|
||||
.build()
|
||||
|
||||
val BAIT: DataComponentType<RodBaitComponent> = create("bait", DataComponentType.builder<RodBaitComponent>()
|
||||
.persistent(RodBaitComponent.CODEC)
|
||||
@@ -86,7 +86,6 @@ 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
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
package com.cobblemon.mod.common
|
||||
|
||||
import com.cobblemon.mod.common.api.ai.CobblemonAttackTargetData
|
||||
import com.cobblemon.mod.common.api.ai.CobblemonAvoidTargetData
|
||||
import com.cobblemon.mod.common.api.ai.CobblemonWanderControl
|
||||
import com.cobblemon.mod.common.api.dialogue.ActiveDialogue
|
||||
import com.cobblemon.mod.common.api.moves.animations.ActionEffectContext
|
||||
@@ -57,6 +58,7 @@ object CobblemonMemories {
|
||||
/** how many are following me rn? */
|
||||
val HERD_SIZE = register<Int>("herd_size") // Don't bother saving it, we'll try to keep count roughly.
|
||||
val ATTACK_TARGET_DATA = register<CobblemonAttackTargetData>("attack_target_data") // This is used to store additional information about the attack target, such as when to give up pursuit.
|
||||
val AVOID_TARGET_DATA = register<CobblemonAvoidTargetData>("avoid_target_data") // This is used to store additional information about the avoid target, such as how fast to move.
|
||||
val WANDER_CONTROL = register<CobblemonWanderControl>("wander_control")
|
||||
val DISABLE_WALK_TO_WANTED_ITEM = register<Boolean>("disable_walk_to_wanted_item")
|
||||
val TIME_TRYING_TO_REACH_WANTED_ITEM = register<Int>("time_trying_to_wanted_item")
|
||||
|
||||
+22
-7
@@ -20,6 +20,8 @@ import com.cobblemon.mod.common.util.asExpression
|
||||
import com.cobblemon.mod.common.util.asIdentifierDefaultingNamespace
|
||||
import com.cobblemon.mod.common.util.resolve
|
||||
import net.minecraft.world.entity.Entity
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.ai.memory.MemoryModuleType
|
||||
|
||||
/**
|
||||
* This is used in the AI system to store optional additional information about the attack target,
|
||||
@@ -41,15 +43,21 @@ import net.minecraft.world.entity.Entity
|
||||
class CobblemonAttackTargetData(
|
||||
/** An expression that returns false when the target is no longer worth attacking. */
|
||||
var shouldContinue: Expression = "true".asExpression(),
|
||||
var hitsUntilDisengage: Int = -1, // -1 means no limit
|
||||
var disengageAction: (entity: Entity) -> Unit = {}
|
||||
var dealtHitsUntilDisengage: Int = -1, // -1 means no limit
|
||||
var disengageAction: (entity: LivingEntity) -> Unit = ::defaultDisengage
|
||||
) {
|
||||
companion object {
|
||||
fun defaultDisengage(entity: LivingEntity) {
|
||||
entity.brain.eraseMemory(MemoryModuleType.ATTACK_TARGET)
|
||||
entity.brain.updateActivityFromSchedule(entity.level().dayTime, entity.level().gameTime)
|
||||
}
|
||||
}
|
||||
val struct = ObjectValue<CobblemonAttackTargetData>(this).also {
|
||||
it.addFunction("hits_until_disengage") { DoubleValue(hitsUntilDisengage.toDouble()) }
|
||||
it.addFunction("set_hits_until_disengage") { params ->
|
||||
it.addFunction("dealt_hits_until_disengage") { DoubleValue(dealtHitsUntilDisengage.toDouble()) }
|
||||
it.addFunction("set_dealt_hits_until_disengage") { params ->
|
||||
val value = params.getDouble(0)
|
||||
hitsUntilDisengage = value.toInt()
|
||||
DoubleValue(hitsUntilDisengage.toDouble())
|
||||
dealtHitsUntilDisengage = value.toInt()
|
||||
DoubleValue(dealtHitsUntilDisengage.toDouble())
|
||||
}
|
||||
it.addFunction("set_disengage_action") { params ->
|
||||
val script = params.getString(0).asIdentifierDefaultingNamespace()
|
||||
@@ -64,8 +72,15 @@ class CobblemonAttackTargetData(
|
||||
}
|
||||
DoubleValue.ONE
|
||||
}
|
||||
it.addFunction("reset") {
|
||||
shouldContinue = "true".asExpression()
|
||||
dealtHitsUntilDisengage = -1
|
||||
disengageAction = ::defaultDisengage
|
||||
DoubleValue.ONE
|
||||
}
|
||||
it.addFunction("unset_disengage_action") { params ->
|
||||
disengageAction = {}
|
||||
disengageAction = ::defaultDisengage
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* 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.ai
|
||||
|
||||
import com.bedrockk.molang.runtime.value.DoubleValue
|
||||
import com.cobblemon.mod.common.api.molang.ObjectValue
|
||||
import com.cobblemon.mod.common.util.getDoubleOrNull
|
||||
|
||||
class CobblemonAvoidTargetData {
|
||||
var walkSpeed: Float? = null
|
||||
|
||||
@Transient
|
||||
val struct = ObjectValue<CobblemonAvoidTargetData>(this).also {
|
||||
it.addFunction("walk_speed") { DoubleValue(walkSpeed) }
|
||||
it.addFunction("set_walk_speed") { walkSpeed = it.getDoubleOrNull(0)?.toFloat() }
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,6 @@ import com.cobblemon.mod.common.util.getBooleanOrNull
|
||||
import com.cobblemon.mod.common.util.getDoubleOrNull
|
||||
import kotlin.math.sqrt
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.world.entity.PathfinderMob
|
||||
|
||||
/**
|
||||
* Used to maintain some settings around how the entity should wander this tick. The idea is you
|
||||
@@ -30,7 +29,8 @@ class CobblemonWanderControl(
|
||||
var allowWater: Boolean = false,
|
||||
var allowAir: Boolean = false,
|
||||
var pathCooldownTicks: Int = 20 * 5, // Used to mitigate the cost of pathfinding.
|
||||
var wanderSpeed: Float = 0.35F,
|
||||
var speedMultiplier: Float = 1F,
|
||||
var wanderChance: Float? = null
|
||||
) {
|
||||
class WanderCenter(val x: Number, val y: Number, val z: Number, val minRange: Float, val maxRange: Float)
|
||||
|
||||
@@ -46,7 +46,7 @@ class CobblemonWanderControl(
|
||||
.addFunction("allow_water") { if (allowWater) 1.0 else 0.0 }
|
||||
.addFunction("allow_air") { if (allowAir) 1.0 else 0.0 }
|
||||
.addFunction("path_cooldown_ticks") { pathCooldownTicks.toDouble() }
|
||||
.addFunction("wander_speed") { wanderSpeed }
|
||||
.addFunction("speed_multiplier") { speedMultiplier }
|
||||
.addFunction("set_center") { params ->
|
||||
if (params.params.size < 3) {
|
||||
throw IllegalArgumentException("set_center requires at least 3 parameters: x, y, z")
|
||||
@@ -69,15 +69,19 @@ class CobblemonWanderControl(
|
||||
.addFunction("set_allow_water") { params -> allowWater = params.getBooleanOrNull(0) ?: false }
|
||||
.addFunction("set_allow_air") { params -> allowAir = params.getBooleanOrNull(0) ?: false }
|
||||
.addFunction("set_path_cooldown_ticks") { params -> pathCooldownTicks = params.getDoubleOrNull(0)?.toInt() ?: (20 * 5) }
|
||||
.addFunction("set_wander_speed") { params -> wanderSpeed = params.getDoubleOrNull(0)?.toFloat() ?: 0.35F }
|
||||
.addFunction("set_speed_multiplier") { params -> speedMultiplier = params.getDoubleOrNull(0)?.toFloat() ?: 0.35F }
|
||||
.addFunction("set_wander_chance") { params ->
|
||||
wanderChance = params.getDoubleOrNull(0)?.toFloat()
|
||||
}
|
||||
.addFunction("reset") {
|
||||
center = null
|
||||
allowLand = false
|
||||
allowWater = false
|
||||
allowAir = false
|
||||
pathCooldownTicks = 20 * 5
|
||||
wanderSpeed = 0.35F
|
||||
speedMultiplier = 1F
|
||||
maxAttempts = 4
|
||||
wanderChance = null
|
||||
}
|
||||
|
||||
fun isSuitable(position: BlockPos): Boolean {
|
||||
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* 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.ai.config.task
|
||||
|
||||
import com.cobblemon.mod.common.api.ai.BehaviourConfigurationContext
|
||||
import com.cobblemon.mod.common.api.ai.ExpressionOrEntityVariable
|
||||
import com.cobblemon.mod.common.api.ai.asVariables
|
||||
import com.cobblemon.mod.common.api.molang.MoLangFunctions.asMostSpecificMoLangValue
|
||||
import com.cobblemon.mod.common.entity.EntityCallbacks
|
||||
import com.cobblemon.mod.common.entity.MoLangScriptingEntity
|
||||
import com.cobblemon.mod.common.util.asExpression
|
||||
import com.mojang.datafixers.util.Either
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.ai.behavior.Behavior
|
||||
import net.minecraft.world.entity.ai.behavior.BehaviorControl
|
||||
import net.minecraft.world.entity.ai.memory.MemoryModuleType
|
||||
import net.minecraft.world.entity.ai.memory.MemoryStatus
|
||||
import net.minecraft.world.entity.ai.sensing.SensorType
|
||||
|
||||
/**
|
||||
* Frequently checks a diff on the visibility of entities around the given entity so EntityCallbacks can be triggered.
|
||||
*
|
||||
* @author Hiroku
|
||||
* @since August 7th, 2025
|
||||
*/
|
||||
class NotifyAboutEntityVisibilityTaskConfig : SingleTaskConfig {
|
||||
val ticksBetweenChecks: ExpressionOrEntityVariable = Either.left("20".asExpression())
|
||||
|
||||
override fun getVariables(entity: LivingEntity, behaviourConfigurationContext: BehaviourConfigurationContext) = listOf(ticksBetweenChecks).asVariables()
|
||||
override fun createTask(
|
||||
entity: LivingEntity,
|
||||
behaviourConfigurationContext: BehaviourConfigurationContext
|
||||
): BehaviorControl<in LivingEntity>? {
|
||||
if (entity !is MoLangScriptingEntity) {
|
||||
return null
|
||||
}
|
||||
|
||||
val ticksBetweenChecks = ticksBetweenChecks.resolveInt(behaviourConfigurationContext.runtime)
|
||||
|
||||
behaviourConfigurationContext.addMemories(MemoryModuleType.NEAREST_LIVING_ENTITIES)
|
||||
behaviourConfigurationContext.addSensors(SensorType.NEAREST_LIVING_ENTITIES)
|
||||
|
||||
return object : Behavior<LivingEntity>(mapOf(MemoryModuleType.NEAREST_LIVING_ENTITIES to MemoryStatus.VALUE_PRESENT), Int.MAX_VALUE) {
|
||||
override fun canStillUse(level: ServerLevel, entity: LivingEntity, gameTime: Long) = true
|
||||
override fun checkExtraStartConditions(level: ServerLevel, owner: LivingEntity) = true
|
||||
|
||||
// Buffer of known entities
|
||||
val knownEntities = mutableListOf<LivingEntity>()
|
||||
override fun tick(level: ServerLevel, owner: LivingEntity, gameTime: Long) {
|
||||
if (gameTime % ticksBetweenChecks != 0L) {
|
||||
return
|
||||
}
|
||||
|
||||
val visibleEntities = owner.getBrain().getMemory(MemoryModuleType.NEAREST_LIVING_ENTITIES)
|
||||
.orElse(emptyList<LivingEntity>())
|
||||
.filter { it.isAlive }
|
||||
|
||||
val newEntities = visibleEntities.filterNot { it in knownEntities }
|
||||
val removedEntities = knownEntities.filterNot { it in visibleEntities }
|
||||
|
||||
newEntities.forEach {
|
||||
entity.callbacks.process(
|
||||
type = EntityCallbacks.SAW_ENTITY,
|
||||
functions = mapOf("other_entity" to { _ -> it.asMostSpecificMoLangValue() })
|
||||
)
|
||||
}
|
||||
|
||||
removedEntities.forEach {
|
||||
entity.callbacks.process(
|
||||
type = EntityCallbacks.LOST_ENTITY,
|
||||
functions = mapOf("other_entity" to { _ -> it.asMostSpecificMoLangValue() })
|
||||
)
|
||||
}
|
||||
|
||||
knownEntities.clear()
|
||||
knownEntities.addAll(visibleEntities)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -120,6 +120,7 @@ interface TaskConfig {
|
||||
cobblemonResource("target_entity") to TargetEntityTaskConfig::class.java,
|
||||
cobblemonResource("memory_aspect") to MemoryAspectTaskConfig::class.java,
|
||||
cobblemonResource("activity_change") to ActivityChangeTaskConfig::class.java,
|
||||
cobblemonResource("notify_about_entity_visibility") to NotifyAboutEntityVisibilityTaskConfig::class.java,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -133,7 +133,7 @@ class WanderTaskConfig : SingleTaskConfig {
|
||||
val wanderControl = it.tryGet(wanderControl).orElse(null) ?: CobblemonWanderControl()
|
||||
mainThreadRuntime.withQueryValue("entity", entity.asMostSpecificMoLangValue())
|
||||
val avoidsTargetingAir = avoidTargetingAir.resolveBoolean(mainThreadRuntime)
|
||||
val wanderChance = mainThreadRuntime.resolveFloat(wanderChanceExpression)
|
||||
val wanderChance = wanderControl.wanderChance ?: mainThreadRuntime.resolveFloat(wanderChanceExpression)
|
||||
if (wanderChance <= 0 || world.random.nextFloat() > wanderChance || !wanderControl.allowLand) {
|
||||
return@Trigger false
|
||||
}
|
||||
@@ -180,7 +180,7 @@ class WanderTaskConfig : SingleTaskConfig {
|
||||
walkTarget.set(
|
||||
CobblemonWalkTarget(
|
||||
pos = pos,
|
||||
speedModifier = speedMultiplier.resolveFloat(mainThreadRuntime),
|
||||
speedModifier = speedMultiplier.resolveFloat(mainThreadRuntime) * wanderControl.speedMultiplier,
|
||||
completionRange = 0,
|
||||
nodeTypeFilter = { nodeType -> nodeType !in listOf(PathType.WATER, PathType.WATER_BORDER) },
|
||||
destinationNodeTypeFilter = { nodeType -> !avoidsTargetingAir || nodeType !in listOf(PathType.OPEN) }
|
||||
|
||||
+2
-2
@@ -78,7 +78,7 @@ class WaterWanderTaskConfig : SingleTaskConfig {
|
||||
}
|
||||
|
||||
mainThreadRuntime.withQueryValue("entity", entity.asMostSpecificMoLangValue())
|
||||
val wanderChance = mainThreadRuntime.resolveFloat(wanderChanceExpression)
|
||||
val wanderChance = wanderControl.wanderChance ?: mainThreadRuntime.resolveFloat(wanderChanceExpression)
|
||||
if (wanderChance <= 0 || world.random.nextFloat() > wanderChance) {
|
||||
return@Trigger false
|
||||
}
|
||||
@@ -104,7 +104,7 @@ class WaterWanderTaskConfig : SingleTaskConfig {
|
||||
CobblemonWalkTarget(
|
||||
pos = pos,
|
||||
nodeTypeFilter = { it == PathType.WATER || it == PathType.WATER_BORDER },
|
||||
speedModifier = speedMultiplier.resolveFloat(mainThreadRuntime),
|
||||
speedModifier = speedMultiplier.resolveFloat(mainThreadRuntime) * wanderControl.speedMultiplier,
|
||||
completionRange = 0
|
||||
)
|
||||
)
|
||||
|
||||
@@ -219,7 +219,6 @@ open class PokemonBattle(
|
||||
}
|
||||
|
||||
fun broadcastChatMessage(component: Component) {
|
||||
if (ended) {return}
|
||||
chatLog.add(component)
|
||||
sendSpectatorUpdate(BattleMessagePacket(component))
|
||||
return actors.forEach { it.sendMessage(component) }
|
||||
|
||||
@@ -1,57 +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.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)
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,6 @@ import com.bedrockk.molang.runtime.MoLangEnvironment
|
||||
import com.bedrockk.molang.runtime.MoLangRuntime
|
||||
import com.bedrockk.molang.runtime.MoParams
|
||||
import com.bedrockk.molang.runtime.struct.ArrayStruct
|
||||
import com.bedrockk.molang.runtime.struct.MoStruct
|
||||
import com.bedrockk.molang.runtime.struct.QueryStruct
|
||||
import com.bedrockk.molang.runtime.struct.VariableStruct
|
||||
import com.bedrockk.molang.runtime.value.DoubleValue
|
||||
@@ -25,6 +24,8 @@ import com.cobblemon.mod.common.CobblemonMemories
|
||||
import com.cobblemon.mod.common.CobblemonUnlockableWallpapers
|
||||
import com.cobblemon.mod.common.Environment
|
||||
import com.cobblemon.mod.common.api.ai.CobblemonBlockPosTracker
|
||||
import com.cobblemon.mod.common.api.ai.CobblemonAttackTargetData
|
||||
import com.cobblemon.mod.common.api.ai.CobblemonAvoidTargetData
|
||||
import com.cobblemon.mod.common.api.ai.CobblemonWanderControl
|
||||
import com.cobblemon.mod.common.api.battles.interpreter.BattleMessage
|
||||
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
|
||||
@@ -348,10 +349,7 @@ object MoLangFunctions {
|
||||
val b = format.parse(dateB)
|
||||
DoubleValue(a.after(b))
|
||||
},
|
||||
"create_simple_party_provider" to java.util.function.Function { params ->
|
||||
val partyProvider = SimplePartyProvider()
|
||||
return@Function partyProvider.struct
|
||||
},
|
||||
"create_simple_party_provider" to java.util.function.Function { SimplePartyProvider().struct },
|
||||
"create_pickup_item" to java.util.function.Function { params ->
|
||||
val item = params.getOrNull<MoValue>(0)?.asString()?.let(ObtainableItemCondition::parseFromString)
|
||||
val pickupPriority = params.getIntOrNull(1) ?: 0
|
||||
@@ -364,6 +362,7 @@ object MoLangFunctions {
|
||||
{ worldHolder ->
|
||||
val world = worldHolder.value()
|
||||
val map = hashMapOf<String, java.util.function.Function<MoParams, Any>>()
|
||||
map.put("id") { StringValue(world.dimension().location().toString()) }
|
||||
map.put("is_time_of_day") { params ->
|
||||
val timeOfDay = TimeRange.timeRanges[params.getString(0).lowercase()]
|
||||
?: return@put DoubleValue.ZERO
|
||||
@@ -807,6 +806,13 @@ object MoLangFunctions {
|
||||
val source = DamageSource(entity.level().registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolder(DamageTypes.GENERIC).get())
|
||||
entity.hurt(source, amount.toFloat())
|
||||
}
|
||||
map.put("damage_source") { params ->
|
||||
val registry = entity.level().registryAccess().registryOrThrow(Registries.DAMAGE_TYPE)
|
||||
val type = params.getStringOrNull(0)?.asIdentifierDefaultingNamespace()?.let(registry::getHolder)
|
||||
?: registry.getHolder(DamageTypes.GENERIC)
|
||||
val damageSource = DamageSource(type.get(), entity)
|
||||
return@put damageSource.asMoLangValue()
|
||||
}
|
||||
map.put("distance_to_owner") {
|
||||
if (entity !is TamableAnimal) {
|
||||
return@put DoubleValue.ZERO
|
||||
@@ -930,6 +936,10 @@ object MoLangFunctions {
|
||||
map.put("is_on_fire") { _ -> DoubleValue(entity.isOnFire) }
|
||||
map.put("is_invisible") { _ -> DoubleValue(entity.isInvisible) }
|
||||
map.put("is_riding") { _ -> DoubleValue(entity.isPassenger) }
|
||||
map.put("distance_to_entity") { params ->
|
||||
val otherEntity = params.get<MoValue>(0) as? ObjectValue<Entity> ?: return@put DoubleValue.ZERO
|
||||
return@put DoubleValue(entity.distanceTo(otherEntity.obj))
|
||||
}
|
||||
map.put("distance_to_pos") { params ->
|
||||
val x = params.getDouble(0)
|
||||
val y = params.getDouble(1)
|
||||
@@ -1063,7 +1073,19 @@ object MoLangFunctions {
|
||||
}
|
||||
)
|
||||
|
||||
val livingEntityFunctions: MutableList<(LivingEntity) -> HashMap<String, java.util.function.Function<MoParams, Any>>> = mutableListOf<(LivingEntity) -> HashMap<String, java.util.function.Function<MoParams, Any>>>(
|
||||
val damageSourceFunctions: MutableList<(DamageSource) -> java.util.HashMap<String, java.util.function.Function<MoParams, Any>>> = mutableListOf(
|
||||
{ source ->
|
||||
val map = hashMapOf<String, java.util.function.Function<MoParams, Any>>()
|
||||
map.put("direct_entity") { source.directEntity?.asMostSpecificMoLangValue() ?: DoubleValue.ZERO }
|
||||
map.put("entity") { source.entity?.asMostSpecificMoLangValue() ?: DoubleValue.ZERO }
|
||||
map.put("is_food_exhaustion") { DoubleValue(source.foodExhaustion) }
|
||||
map.put("is_direct") { DoubleValue(source.isDirect) }
|
||||
map.put("type") { StringValue(source.typeHolder().unwrapKey().get().location().toString()) }
|
||||
return@mutableListOf map
|
||||
}
|
||||
)
|
||||
|
||||
val livingEntityFunctions: MutableList<(LivingEntity) -> HashMap<String, java.util.function.Function<MoParams, Any>>> = mutableListOf(
|
||||
{ entity ->
|
||||
val map = hashMapOf<String, java.util.function.Function<MoParams, Any>>()
|
||||
map.put("is_player") { _ -> DoubleValue(entity is Player) }
|
||||
@@ -1105,6 +1127,23 @@ object MoLangFunctions {
|
||||
val amount = params.getDouble(0)
|
||||
entity.heal(amount.toFloat())
|
||||
}
|
||||
map.put("reset_activity") { _ ->
|
||||
entity.brain.updateActivityFromSchedule(entity.level().dayTime, entity.level().gameTime)
|
||||
DoubleValue.ONE
|
||||
}
|
||||
map.put("activity") { _ ->
|
||||
return@put entity.brain.activeNonCoreActivity.map { StringValue(it.name) }.orElse(null) ?: DoubleValue.ZERO
|
||||
}
|
||||
map.put("set_activity") { params ->
|
||||
val activityId = params.getString(0).asIdentifierDefaultingNamespace()
|
||||
val activity = BuiltInRegistries.ACTIVITY.get(activityId)
|
||||
if (activity != null) {
|
||||
entity.brain.setActiveActivityIfPossible(activity)
|
||||
return@put DoubleValue.ONE
|
||||
} else {
|
||||
return@put DoubleValue.ZERO
|
||||
}
|
||||
}
|
||||
map.put("is_looking_at") { params ->
|
||||
val targetEntity = params.get<MoValue>(0)
|
||||
val maxDistance = params.getDoubleOrNull(1)?.toFloat() ?: 2.0F
|
||||
@@ -1131,6 +1170,26 @@ object MoLangFunctions {
|
||||
val brain = entity.brain
|
||||
brain.setMemoryWithExpiry(MemoryModuleType.LOOK_TARGET, CobblemonBlockPosTracker(Vec3(x, y, z), flags.toSet()), duration.toLong())
|
||||
}
|
||||
map.put("is_doing_activity") { params ->
|
||||
val identifiers = params.params.map { it.asString().asIdentifierDefaultingNamespace(namespace = "minecraft") }
|
||||
val activities = identifiers.mapNotNull(BuiltInRegistries.ACTIVITY::get)
|
||||
if (activities.isNotEmpty()) {
|
||||
return@put DoubleValue(activities.any(entity.brain::isActive))
|
||||
} else {
|
||||
return@put DoubleValue.ZERO
|
||||
}
|
||||
}
|
||||
map.put("get_attack_target_data_memory") {
|
||||
val value = entity.brain.getMemorySafely(CobblemonMemories.ATTACK_TARGET_DATA).orElse(null)
|
||||
?: CobblemonAttackTargetData()
|
||||
if (
|
||||
!entity.brain.checkMemory(CobblemonMemories.ATTACK_TARGET_DATA, MemoryStatus.VALUE_PRESENT)
|
||||
&& entity.brain.checkMemory(CobblemonMemories.ATTACK_TARGET_DATA, MemoryStatus.REGISTERED)
|
||||
) {
|
||||
entity.brain.setMemory(CobblemonMemories.ATTACK_TARGET_DATA, value)
|
||||
}
|
||||
return@put value.struct
|
||||
}
|
||||
map.put("get_wander_control_memory") {
|
||||
val value = entity.brain.getMemorySafely(CobblemonMemories.WANDER_CONTROL).orElse(null)
|
||||
?: CobblemonWanderControl()
|
||||
@@ -1142,6 +1201,17 @@ object MoLangFunctions {
|
||||
}
|
||||
return@put value.struct
|
||||
}
|
||||
map.put("get_avoid_target_data_memory") {
|
||||
val value = entity.brain.getMemorySafely(CobblemonMemories.AVOID_TARGET_DATA).orElse(null)
|
||||
?: CobblemonAvoidTargetData()
|
||||
if (
|
||||
!entity.brain.checkMemory(CobblemonMemories.AVOID_TARGET_DATA, MemoryStatus.VALUE_PRESENT)
|
||||
&& entity.brain.checkMemory(CobblemonMemories.AVOID_TARGET_DATA, MemoryStatus.REGISTERED)
|
||||
) {
|
||||
entity.brain.setMemory(CobblemonMemories.AVOID_TARGET_DATA, value)
|
||||
}
|
||||
return@put value.struct
|
||||
}
|
||||
map.put("get_position_memory") { params ->
|
||||
val id = params.getString(0).asIdentifierDefaultingNamespace()
|
||||
val memoryType = BuiltInRegistries.MEMORY_MODULE_TYPE.get(id)
|
||||
@@ -1168,6 +1238,30 @@ object MoLangFunctions {
|
||||
return@put DoubleValue.ZERO
|
||||
}
|
||||
}
|
||||
map.put("get_entity_memory") { params ->
|
||||
val id = params.getString(0).asIdentifierDefaultingNamespace()
|
||||
val memoryType = BuiltInRegistries.MEMORY_MODULE_TYPE.get(id)
|
||||
if (entity.brain.checkMemory(memoryType, MemoryStatus.VALUE_PRESENT)) {
|
||||
val memory = entity.brain.getMemory(memoryType).get()
|
||||
return@put when (memory) {
|
||||
is Entity -> memory.asMostSpecificMoLangValue()
|
||||
else -> DoubleValue.ZERO
|
||||
}
|
||||
} else {
|
||||
return@put DoubleValue.ZERO
|
||||
}
|
||||
}
|
||||
map.put("set_entity_memory") { params ->
|
||||
val memory = params.getString(0).asIdentifierDefaultingNamespace().let(BuiltInRegistries.MEMORY_MODULE_TYPE::get) as MemoryModuleType<LivingEntity>
|
||||
val entityValue = (params.get<MoValue>(1) as? ObjectValue<*>)?.obj as? LivingEntity ?: return@put DoubleValue.ZERO
|
||||
val expiry = params.getIntOrNull(2) ?: -1
|
||||
if (expiry != -1) {
|
||||
entity.brain.setMemoryWithExpiry(memory, entityValue, expiry.toLong())
|
||||
} else {
|
||||
entity.brain.setMemory(memory, entityValue)
|
||||
}
|
||||
return@put DoubleValue.ONE
|
||||
}
|
||||
map.put("set_uuid_memory") { params ->
|
||||
val memory = params.getString(0).asIdentifierDefaultingNamespace().let(BuiltInRegistries.MEMORY_MODULE_TYPE::get) as MemoryModuleType<UUID>
|
||||
val uuid = params.getString(1).asUUID ?: return@put DoubleValue.ZERO
|
||||
@@ -1214,6 +1308,18 @@ object MoLangFunctions {
|
||||
return@put DoubleValue.ZERO
|
||||
}
|
||||
}
|
||||
map.put("is_visible_entity") { params ->
|
||||
val otherEntity = params.get<ObjectValue<*>>(0)?.obj as? LivingEntity ?: return@put DoubleValue.ZERO
|
||||
val visibleMobs = entity.brain.getMemorySafely(MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES).orElse(null)
|
||||
?: return@put DoubleValue.ZERO
|
||||
return@put DoubleValue(visibleMobs.contains(otherEntity))
|
||||
}
|
||||
map.put("is_nearby_entity") { params ->
|
||||
val otherEntity = params.get<ObjectValue<*>>(0)?.obj as? LivingEntity ?: return@put DoubleValue.ZERO
|
||||
val nearbyMobs = entity.brain.getMemorySafely(MemoryModuleType.NEAREST_LIVING_ENTITIES).orElse(null)
|
||||
?: return@put DoubleValue.ZERO
|
||||
return@put DoubleValue(nearbyMobs.contains(otherEntity))
|
||||
}
|
||||
if (entity is PathfinderMob) {
|
||||
map.put("walk_to") { params ->
|
||||
val x = params.getDouble(0)
|
||||
@@ -1252,15 +1358,6 @@ object MoLangFunctions {
|
||||
map.put("in_battle") { DoubleValue(npc.isInBattle()) }
|
||||
map.put("battles") { ArrayStruct(npc.battleIds.mapNotNull { BattleRegistry.getBattle(it)?.struct }.mapIndexed { index, value -> "$index" to value }.toMap()) }
|
||||
map.put("stop_battles") { _ -> npc.battleIds.forEach { BattleRegistry.getBattle(it)?.stop() } }
|
||||
map.put("is_doing_activity") { params ->
|
||||
val identifiers = params.params.map { it.asString().asIdentifierDefaultingNamespace(namespace = "minecraft") }
|
||||
val activities = identifiers.mapNotNull { identifier -> BuiltInRegistries.ACTIVITY.get(identifier) }
|
||||
if (activities.isNotEmpty()) {
|
||||
return@put DoubleValue(activities.any { activity -> npc.brain.isActive(activity) })
|
||||
} else {
|
||||
return@put DoubleValue.ZERO
|
||||
}
|
||||
}
|
||||
map.put("run_script_on_client") { params ->
|
||||
val world = npc.level()
|
||||
if (world is ServerLevel) {
|
||||
@@ -2471,6 +2568,15 @@ object MoLangFunctions {
|
||||
return value
|
||||
}
|
||||
|
||||
fun DamageSource.asMoLangValue(): ObjectValue<DamageSource> {
|
||||
val value = ObjectValue(
|
||||
obj = this,
|
||||
stringify = { it.toString() }
|
||||
)
|
||||
value.addFunctions(damageSourceFunctions.flatMap { it(this).entries.map { it.key to it.value } }.toMap())
|
||||
return value
|
||||
}
|
||||
|
||||
/**
|
||||
* Different functions exist depending on the entity type, this tries to make the struct that's most specific to the type.
|
||||
*/
|
||||
|
||||
@@ -53,6 +53,7 @@ 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
|
||||
@@ -157,6 +158,8 @@ 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,8 +25,7 @@ data class Seat(
|
||||
val locator: String?,
|
||||
val offset: Vec3?,
|
||||
val poseOffsets: MutableList<SeatPoseOffset>?,
|
||||
val poseAnimations: MutableList<SeatPoseAnimations>?,
|
||||
val handsBusy: Boolean = false,
|
||||
val poseAnimations: MutableList<SeatPoseAnimations>?
|
||||
) : Encodable {
|
||||
fun getOffset(poseType: PoseType) : Vec3 {
|
||||
return poseOffsets?.firstOrNull { poseType in it.poseTypes }?.offset ?: Vec3.ZERO
|
||||
@@ -41,7 +40,6 @@ data class Seat(
|
||||
buffer.writeNullable(poseAnimations) { _, v ->
|
||||
buffer.writeCollection(v) { _, animations -> animations.encode(buffer) }
|
||||
}
|
||||
buffer.writeBoolean(handsBusy)
|
||||
}
|
||||
|
||||
companion object {
|
||||
@@ -50,8 +48,7 @@ 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.readBoolean()
|
||||
buffer.readNullable { buffer.readList { SeatPoseAnimations.decode(buffer) } }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+5
-2
@@ -10,8 +10,10 @@ 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.
|
||||
@@ -25,9 +27,10 @@ interface RidingBehaviourSettings: Encodable, Decodable {
|
||||
val key: ResourceLocation
|
||||
val stats: MutableMap<RidingStat, IntRange>
|
||||
|
||||
fun calculate(stat: RidingStat, boostedAmount: Float): Float {
|
||||
fun calculate(stat: RidingStat, boosts: Int): Float {
|
||||
val range = stats[stat] ?: return 0F
|
||||
return (range.first + boostedAmount).coerceAtMost(range.last.toFloat())
|
||||
val boostQuotient = boosts / 255F
|
||||
return range.first + (range.last - range.first) * boostQuotient
|
||||
}
|
||||
|
||||
fun hasStat(stat: RidingStat) = stats.containsKey(stat)
|
||||
|
||||
-1
@@ -49,7 +49,6 @@ 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
-32
@@ -21,8 +21,10 @@ 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
|
||||
@@ -82,15 +84,11 @@ 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 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
|
||||
} else { // Its right side up so reset it
|
||||
state.currUpsideDownForce.set(0.0)
|
||||
}
|
||||
}
|
||||
@@ -111,7 +109,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 stam
|
||||
else min(1.0f,stam + stamDrainRate * 0.2f)
|
||||
|
||||
state.stamina.set(newStam)
|
||||
}
|
||||
@@ -151,7 +149,8 @@ class BirdBehaviour : RidingBehaviour<BirdSettings, BirdState> {
|
||||
}
|
||||
|
||||
// The downward force used to encourage players to stop flying upside down.
|
||||
val extraDownwardForce = state.currUpsideDownForce.get().pow(2) * -0.3 // 6 blocks a second downward
|
||||
val extraDownwardForce = if(state.stamina.get() == 0.0f) -0.3
|
||||
else state.currUpsideDownForce.get().pow(2) * -0.3 // 6 blocks a second downward
|
||||
|
||||
val velocity = Vec3(state.rideVelocity.get().x , upForce + extraDownwardForce, forwardForce)
|
||||
return velocity
|
||||
@@ -300,10 +299,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.noInputTimeRoll.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.noInputTime.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.noInputTimeRoll.get() > rollCorrectionTimer) {
|
||||
if(state.rideVelocity.get().length() < 0.1 || state.noInputTime.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()
|
||||
@@ -325,13 +324,12 @@ class BirdBehaviour : RidingBehaviour<BirdSettings, BirdState> {
|
||||
}
|
||||
|
||||
//Calculate correcting pitch force.
|
||||
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
|
||||
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
|
||||
var steeredPitchForce = desiredPitchForce - state.currPitchCorrectionForce.get()
|
||||
|
||||
// Ensure the 'steering' correction force doesn't exceed our maxForce
|
||||
@@ -366,15 +364,9 @@ 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.noInputTimeRoll.set(state.noInputTimeRoll.get() + deltaTime)
|
||||
state.noInputTime.set(state.noInputTime.get() + deltaTime)
|
||||
} else {
|
||||
state.noInputTimeRoll.set(0.0)
|
||||
}
|
||||
|
||||
if (abs(mouseY) < 1) {
|
||||
state.noInputTimePitch.set(state.noInputTimePitch.get() + deltaTime)
|
||||
} else {
|
||||
state.noInputTimePitch.set(0.0)
|
||||
state.noInputTime.set(0.0)
|
||||
}
|
||||
|
||||
return when {
|
||||
@@ -495,7 +487,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 (currSpeed > hoverSpeed || yInput > 0.0) RidingBehaviour.scaleToRange(currSpeed, 0.0, topSpeed).coerceIn(0.2, 1.0)
|
||||
localPitch *= if (currHorzSpeed > hoverSpeed) RidingBehaviour.scaleToRange(currHorzSpeed, hoverSpeed, topSpeed)
|
||||
else 0.0
|
||||
|
||||
// Roll less when slow and not at all when at hoverSpeed or lower.
|
||||
@@ -657,7 +649,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', 60.0, 15.0)".asExpression()
|
||||
var staminaExpr: Expression = "q.get_ride_stats('STAMINA', 'AIR', 15.0, 2.0)".asExpression()
|
||||
|
||||
var glidespeedExpr: Expression = "q.get_ride_stats('JUMP', 'AIR', 2.0, 1.0)".asExpression()
|
||||
private set
|
||||
@@ -701,8 +693,7 @@ class BirdState : RidingBehaviourState() {
|
||||
var lastGlide = ridingState(-100L, Side.CLIENT)
|
||||
var currRollCorrectionForce = ridingState(0.0, Side.CLIENT)
|
||||
var currPitchCorrectionForce = ridingState(0.0, Side.CLIENT)
|
||||
var noInputTimeRoll = ridingState(0.0, Side.CLIENT)
|
||||
var noInputTimePitch = ridingState(0.0, Side.CLIENT)
|
||||
var noInputTime = ridingState(0.0, Side.CLIENT)
|
||||
var currUpsideDownForce = ridingState(0.0, Side.CLIENT)
|
||||
|
||||
override fun encode(buffer: FriendlyByteBuf) {
|
||||
@@ -721,8 +712,7 @@ class BirdState : RidingBehaviourState() {
|
||||
lastGlide.set(-100L, forced = true)
|
||||
currRollCorrectionForce.set(0.0, forced = true)
|
||||
currPitchCorrectionForce.set(0.0, forced = true)
|
||||
noInputTimeRoll.set(0.0, forced = true)
|
||||
noInputTimePitch.set(0.0, forced = true)
|
||||
noInputTime.set(0.0, forced = true)
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
@@ -736,8 +726,7 @@ 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.noInputTimeRoll.set(this.noInputTimeRoll.get(), forced = true)
|
||||
it.noInputTimePitch.set(this.noInputTimePitch.get(), forced = true)
|
||||
it.noInputTime.set(this.noInputTime.get(), forced = true)
|
||||
}
|
||||
|
||||
override fun shouldSync(previous: RidingBehaviourState): Boolean {
|
||||
|
||||
+1
-1
@@ -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, 0F)
|
||||
val speedStat = settings.calculate(RidingStat.SPEED, 0)
|
||||
return Vec3(xVector, yVector, zVector)
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -11,6 +11,8 @@ 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
|
||||
@@ -25,6 +27,7 @@ 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
|
||||
@@ -128,8 +131,8 @@ class HoverBehaviour : RidingBehaviour<HoverSettings, HoverState> {
|
||||
) {
|
||||
val stam = state.stamina.get()
|
||||
val stamDrainRate = (1.0f / vehicle.runtime.resolveDouble(settings.staminaExpr)).toFloat() / 20.0f
|
||||
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)
|
||||
|
||||
val newStam = if (state.tooHigh.get()) max(0.0f, stam - stamDrainRate) else min(1.0f,stam + stamDrainRate)
|
||||
|
||||
state.stamina.set(newStam)
|
||||
}
|
||||
@@ -430,9 +433,6 @@ 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
|
||||
|
||||
+10
-17
@@ -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.0f) {
|
||||
if (state.stamina.get() >= 0.25f) {
|
||||
//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,9 +172,8 @@ class JetBehaviour : RidingBehaviour<JetSettings, JetState> {
|
||||
driver: Player
|
||||
) {
|
||||
val topSpeed = vehicle.runtime.resolveDouble(settings.speedExpr) / 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 accel = vehicle.runtime.resolveDouble(settings.accelerationExpr) / 400.0
|
||||
val minSpeed = vehicle.runtime.resolveDouble(settings.minSpeed) / 20.0
|
||||
val speed = state.rideVelocity.get().length()
|
||||
val boostMult = vehicle.runtime.resolveDouble(settings.jumpExpr)
|
||||
|
||||
@@ -188,7 +187,7 @@ class JetBehaviour : RidingBehaviour<JetSettings, JetState> {
|
||||
Vec3(
|
||||
state.rideVelocity.get().x,
|
||||
state.rideVelocity.get().y,
|
||||
max(state.rideVelocity.get().z - (deccel), minSpeed * 0.5)
|
||||
max(state.rideVelocity.get().z - ((accel) / 2), minSpeed * 0.5)
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -216,7 +215,7 @@ class JetBehaviour : RidingBehaviour<JetSettings, JetState> {
|
||||
Vec3(
|
||||
state.rideVelocity.get().x,
|
||||
state.rideVelocity.get().y,
|
||||
max(state.rideVelocity.get().z - (deccel), minSpeed)
|
||||
max(state.rideVelocity.get().z - ((accel) / 2), minSpeed)
|
||||
)
|
||||
)
|
||||
} else if (speed > topSpeed) {
|
||||
@@ -527,11 +526,7 @@ class JetSettings : RidingBehaviourSettings {
|
||||
var gravity: Expression = "0".asExpression()
|
||||
private set
|
||||
|
||||
var deccelRate: Expression = "0.005".asExpression()
|
||||
private set
|
||||
|
||||
// Mult to top speed in order to derive minSpeed
|
||||
var minSpeedFactor: Expression = "0.25".asExpression()
|
||||
var minSpeed: Expression = "12.0".asExpression()
|
||||
private set
|
||||
|
||||
var handlingYawExpr: Expression = "q.get_ride_stats('SKILL', 'AIR', 50.0, 25.0)".asExpression()
|
||||
@@ -551,9 +546,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
|
||||
// Seconds to get to top speed
|
||||
// Acceleration in blocks per s^2
|
||||
var accelerationExpr: Expression =
|
||||
"q.get_ride_stats('ACCELERATION', 'AIR', 3.0, 8.0)".asExpression()
|
||||
"q.get_ride_stats('ACCELERATION', 'AIR', 4.0, 1.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()
|
||||
@@ -566,8 +561,7 @@ class JetSettings : RidingBehaviourSettings {
|
||||
buffer.writeRidingStats(stats)
|
||||
rideSounds.encode(buffer)
|
||||
buffer.writeExpression(gravity)
|
||||
buffer.writeExpression(deccelRate)
|
||||
buffer.writeExpression(minSpeedFactor)
|
||||
buffer.writeExpression(minSpeed)
|
||||
buffer.writeExpression(handlingYawExpr)
|
||||
buffer.writeExpression(infiniteStamina)
|
||||
buffer.writeExpression(jumpExpr)
|
||||
@@ -581,8 +575,7 @@ class JetSettings : RidingBehaviourSettings {
|
||||
stats.putAll(buffer.readRidingStats())
|
||||
rideSounds = RideSoundSettingsList.decode(buffer)
|
||||
gravity = buffer.readExpression()
|
||||
deccelRate = buffer.readExpression()
|
||||
minSpeedFactor = buffer.readExpression()
|
||||
minSpeed = buffer.readExpression()
|
||||
handlingYawExpr = buffer.readExpression()
|
||||
infiniteStamina = buffer.readExpression()
|
||||
jumpExpr = buffer.readExpression()
|
||||
|
||||
-15
@@ -18,7 +18,6 @@ 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
|
||||
@@ -31,7 +30,6 @@ 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> {
|
||||
@@ -245,21 +243,8 @@ 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,10 +42,9 @@ 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 no muffle and 0.0 is full hFgain muting
|
||||
var isPassenger: Boolean = ride.passengers.any { passenger ->
|
||||
Minecraft.getInstance().player?.id == passenger.id
|
||||
}
|
||||
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
|
||||
|
||||
init {
|
||||
this.looping = true
|
||||
|
||||
@@ -181,7 +181,7 @@ object ShowdownInterpreter {
|
||||
while (iterator.hasNext()) {
|
||||
val message = iterator.next()
|
||||
val id = message.id.replace("|", "")
|
||||
val instruction: InterpreterInstruction = updateInstructionParser[id]?.invoke(battle, instructionSet, message, iterator) ?: UnknownInstruction(message)
|
||||
val instruction = updateInstructionParser[id]?.invoke(battle, instructionSet, message, iterator) ?: UnknownInstruction(message)
|
||||
instructionSet.instructions.add(instruction)
|
||||
}
|
||||
}
|
||||
|
||||
+11
-92
@@ -15,9 +15,6 @@ 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
|
||||
@@ -25,24 +22,19 @@ 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.*
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.sounds.SoundEvents
|
||||
import com.cobblemon.mod.common.util.asArrayValue
|
||||
import com.cobblemon.mod.common.util.battleLang
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import java.util.concurrent.CompletableFuture
|
||||
import java.lang.Math.*
|
||||
import kotlin.math.roundToInt
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
|
||||
/**
|
||||
* Format: |move|POKEMON|MOVE|TARGET
|
||||
@@ -80,27 +72,17 @@ 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))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,7 +104,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)
|
||||
|
||||
@@ -146,24 +128,6 @@ 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()
|
||||
@@ -177,8 +141,7 @@ 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())
|
||||
@@ -201,52 +164,8 @@ 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
|
||||
}
|
||||
}
|
||||
+3
-92
@@ -9,63 +9,30 @@
|
||||
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
|
||||
?: defaultAnimations
|
||||
val animations = seat.poseAnimations?.firstOrNull { it.poseTypes.isEmpty() || it.poseTypes.contains(pokemonEntity.getCurrentPoseType()) }?.animations
|
||||
?: return
|
||||
val state = pokemonEntity.delegate as PokemonClientDelegate
|
||||
|
||||
relevantPartsByName.values.forEach {
|
||||
@@ -77,8 +44,6 @@ 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
|
||||
|
||||
@@ -96,59 +61,5 @@ 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,7 +9,6 @@
|
||||
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
|
||||
@@ -37,7 +36,7 @@ object ReloadShowdownCommand {
|
||||
ShowdownService.service.resetAllRegistries()
|
||||
ShowdownService.service.sendRegistryData(Abilities.abilityScripts, "ability")
|
||||
ShowdownService.service.sendRegistryData(BagItems.bagItemsScripts, "bagItem")
|
||||
ShowdownService.service.sendRegistryData(HeldItems.heldItemsScripts, "heldItem")
|
||||
// TODO: ShowdownService.service.sendRegistryData(notYetImplemented, "heldItem")
|
||||
ShowdownService.service.sendRegistryData(Moves.moveScripts, "move")
|
||||
ShowdownService.service.sendRegistryData(PokemonSpecies.allShowdownSpecies(), "species")
|
||||
context.source.sendSystemMessage(Component.literal("Reloaded showdown"))
|
||||
|
||||
@@ -29,7 +29,6 @@ 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
|
||||
@@ -88,7 +87,6 @@ object CobblemonDataProvider : DataProvider {
|
||||
this.register(CobblemonSpawnRules)
|
||||
this.register(CobblemonMechanics)
|
||||
this.register(BagItems)
|
||||
this.register(HeldItems)
|
||||
this.register(Dialogues)
|
||||
this.register(NaturalMaterials)
|
||||
this.register(Fossils)
|
||||
|
||||
@@ -38,6 +38,7 @@ class EntityCallbacks(val entity: Entity) : HashMap<ResourceLocation, MutableLis
|
||||
companion object {
|
||||
val HIT_BY_POKEBALL = cobblemonResource("hit_by_pokeball")
|
||||
val SAW_ENTITY = cobblemonResource("saw_entity")
|
||||
val LOST_ENTITY = cobblemonResource("lost_sight_of_entity")
|
||||
val HURT = cobblemonResource("hurt")
|
||||
val DIED = cobblemonResource("died")
|
||||
}
|
||||
|
||||
@@ -15,11 +15,9 @@ 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>(
|
||||
@@ -69,14 +67,8 @@ class FollowHerdLeaderTask : Behavior<PokemonEntity>(
|
||||
entity.brain.eraseMemory(CobblemonMemories.HERD_LEADER) // We can't go where this guy's going
|
||||
return
|
||||
}
|
||||
entity.brain.setMemory(
|
||||
MemoryModuleType.WALK_TARGET,
|
||||
CobblemonWalkTarget(
|
||||
pos = leader.blockPosition(),
|
||||
speedModifier = 0.3F,
|
||||
completionRange = closeEnough.toInt()
|
||||
)
|
||||
)
|
||||
entity.setFlying(true)
|
||||
entity.addDeltaMovement(Vec3(0.0, 2.0, 0.0))
|
||||
} else if (leaderMoveControl.banking) {
|
||||
if (leader.isInLiquid && !entity.isInLiquid) {
|
||||
// We should get into water asap so we can mimic the banking
|
||||
|
||||
@@ -10,7 +10,6 @@ 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
|
||||
@@ -270,28 +269,6 @@ 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
|
||||
|
||||
@@ -644,6 +644,20 @@ class NPCEntity(world: Level) : AgeableMob(CobblemonEntities.NPC, world), Npc, P
|
||||
return InteractionResult.SUCCESS
|
||||
}
|
||||
|
||||
override fun hurt(source: DamageSource, amount: Float): Boolean {
|
||||
if (super.hurt(source, amount)) {
|
||||
callbacks.process(
|
||||
type = EntityCallbacks.HURT,
|
||||
functions = mapOf(
|
||||
"source" to { source.asMoLangValue() },
|
||||
"amount" to { DoubleValue(amount.toDouble()) },
|
||||
)
|
||||
)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
override fun recalling(pokemonEntity: PokemonEntity): CompletableFuture<Unit> {
|
||||
playAnimation(RECALL_ANIMATION, pokemonExpressions(pokemonEntity.pokemon))
|
||||
return delayedFuture(seconds = 1.6F)
|
||||
|
||||
@@ -9,7 +9,9 @@
|
||||
package com.cobblemon.mod.common.entity.npc.ai
|
||||
|
||||
import com.bedrockk.molang.Expression
|
||||
import com.cobblemon.mod.common.CobblemonMemories
|
||||
import com.cobblemon.mod.common.api.molang.MoLangFunctions.asMostSpecificMoLangValue
|
||||
import com.cobblemon.mod.common.util.getMemorySafely
|
||||
import com.cobblemon.mod.common.util.mainThreadRuntime
|
||||
import com.cobblemon.mod.common.util.resolveFloat
|
||||
import com.cobblemon.mod.common.util.resolveInt
|
||||
@@ -24,9 +26,11 @@ object MeleeAttackTask {
|
||||
fun create(range: Expression, cooldownTicks: Expression): OneShot<LivingEntity> = BehaviorBuilder.create {
|
||||
it.group(
|
||||
it.present(MemoryModuleType.ATTACK_TARGET),
|
||||
it.absent(MemoryModuleType.ATTACK_COOLING_DOWN)
|
||||
it.absent(MemoryModuleType.ATTACK_COOLING_DOWN),
|
||||
).apply(it) { attackTarget, cooldown ->
|
||||
Trigger { world, entity, _ ->
|
||||
val attackTargetData = entity.brain.getMemorySafely(CobblemonMemories.ATTACK_TARGET_DATA).orElse(null)
|
||||
|
||||
mainThreadRuntime.withQueryValue("entity", entity.asMostSpecificMoLangValue())
|
||||
val range = mainThreadRuntime.resolveFloat(range)
|
||||
val cooldownTicks = mainThreadRuntime.resolveInt(cooldownTicks)
|
||||
@@ -35,6 +39,14 @@ object MeleeAttackTask {
|
||||
if (entity.distanceTo(attackTarget) <= range) {
|
||||
entity.doHurtTarget(attackTarget)
|
||||
cooldown.setWithExpiry(true, cooldownTicks.toLong())
|
||||
if (attackTargetData != null) {
|
||||
if (attackTargetData.dealtHitsUntilDisengage == 1) {
|
||||
attackTargetData.dealtHitsUntilDisengage = 0
|
||||
attackTargetData.disengageAction(entity)
|
||||
} else if (attackTargetData.dealtHitsUntilDisengage > 0){
|
||||
attackTargetData.dealtHitsUntilDisengage--
|
||||
}
|
||||
}
|
||||
true
|
||||
} else {
|
||||
false
|
||||
|
||||
@@ -36,6 +36,7 @@ import com.cobblemon.mod.common.api.molang.MoLangFunctions.addLivingEntityFuncti
|
||||
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addPokemonEntityFunctions
|
||||
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addPokemonFunctions
|
||||
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addStandardFunctions
|
||||
import com.cobblemon.mod.common.api.molang.MoLangFunctions.asMoLangValue
|
||||
import com.cobblemon.mod.common.api.molang.MoLangFunctions.setup
|
||||
import com.cobblemon.mod.common.api.molang.ObjectValue
|
||||
import com.cobblemon.mod.common.api.net.serializers.PlatformTypeDataSerializer
|
||||
@@ -96,7 +97,6 @@ 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
|
||||
@@ -124,7 +124,6 @@ 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
|
||||
@@ -176,7 +175,6 @@ 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
|
||||
@@ -1223,6 +1221,14 @@ open class PokemonEntity(
|
||||
// Only touch battle HP for non-wild Pokémon so that quick ball et. al. aren't owerpowered.
|
||||
pokemon.currentHealth = (pokemon.maxHealth * (this.health / this.maxHealth)).toInt()
|
||||
}
|
||||
|
||||
callbacks.process(
|
||||
type = EntityCallbacks.HURT,
|
||||
functions = mapOf(
|
||||
"source" to { source.asMoLangValue() },
|
||||
"amount" to { DoubleValue(amount.toDouble()) },
|
||||
)
|
||||
)
|
||||
true
|
||||
} else false
|
||||
}
|
||||
@@ -1798,7 +1804,7 @@ open class PokemonEntity(
|
||||
for (passenger in this.passengers) {
|
||||
passenger.deltaMovement = this.deltaMovement
|
||||
}
|
||||
DismountPokemonPacket().sendToServer()
|
||||
this.ejectPassengers()
|
||||
|
||||
// Reset ride velocity
|
||||
state.rideVelocity.set(state.rideVelocity.get().multiply(0.0, 1.0, 0.0))
|
||||
@@ -1865,13 +1871,6 @@ 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)
|
||||
|
||||
/**
|
||||
@@ -2044,6 +2043,10 @@ 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) {
|
||||
@@ -2051,8 +2054,8 @@ open class PokemonEntity(
|
||||
}
|
||||
}
|
||||
|
||||
/** 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
|
||||
/** 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
|
||||
|
||||
/**
|
||||
* A utility method to instance a [Pokemon] aware if the [world] is client sided or not.
|
||||
@@ -2067,22 +2070,21 @@ 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(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
|
||||
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
|
||||
}
|
||||
val stat = this.rideProp.behaviours?.get(style)?.calculate(rideStat, entityData.get(RIDE_BOOSTS)[rideStat] ?: 0F) ?: return 0.0
|
||||
val stat = this.rideProp.behaviours?.get(style)?.calculate(stat, 0) ?: return 0.0
|
||||
val statVal = (((baseMax - baseMin) / 100) * stat) + baseMin
|
||||
// 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)
|
||||
return statVal
|
||||
}
|
||||
|
||||
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, 0F)?.toDouble() ?: 0.0
|
||||
return this.rideProp.behaviours?.get(style)?.calculate(stat, 0)?.toDouble() ?: 0.0
|
||||
}
|
||||
|
||||
internal fun overrideRideStat(style: RidingStyle, stat: RidingStat, value: Double) {
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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)
|
||||
}
|
||||
}
|
||||
-42
@@ -1,42 +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 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
|
||||
}
|
||||
}
|
||||
+26
-39
@@ -12,7 +12,6 @@ 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
|
||||
@@ -27,32 +26,31 @@ 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,
|
||||
var rideBoosts: Map<RidingStat, Float>,
|
||||
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,
|
||||
vanillaSpawnPacket: ClientboundAddEntityPacket,
|
||||
) : SpawnExtraDataEntityPacket<SpawnPokemonPacket, PokemonEntity>(vanillaSpawnPacket) {
|
||||
|
||||
override val id: ResourceLocation = ID
|
||||
@@ -82,7 +80,6 @@ class SpawnPokemonPacket(
|
||||
entity.entityData.get(PokemonEntity.FREEZE_FRAME),
|
||||
entity.passengers.map { it.id }.toIntArray(),
|
||||
entity.tickCount,
|
||||
entity.entityData.get(PokemonEntity.RIDE_BOOSTS),
|
||||
vanillaSpawnPacket
|
||||
)
|
||||
|
||||
@@ -111,11 +108,6 @@ 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) {
|
||||
@@ -145,7 +137,6 @@ 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 {
|
||||
@@ -185,13 +176,9 @@ 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, rideBoosts, 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, vanillaPacket)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1821,13 +1821,8 @@ 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]?.let { it.last - it.first } ?: 0 } ?: 0
|
||||
return form.riding.behaviours?.maxOf { it.value.stats[stat]?.endInclusive ?: 0 } ?: 0
|
||||
}
|
||||
|
||||
fun getRideBoost(stat: RidingStat): Float {
|
||||
|
||||
@@ -67,12 +67,12 @@ class FormPokemonBehaviour {
|
||||
val entityInteract: EntityBehaviour
|
||||
get() = _entityInteract ?: parent.entityInteract
|
||||
|
||||
val dampensVibrations: Boolean
|
||||
get() = _dampensVibrations ?: parent.dampensVibrations
|
||||
|
||||
val blockInteract: BlockBehavior
|
||||
get() = _blockInteract ?: parent.blockInteract
|
||||
|
||||
val dampensVibrations: Boolean
|
||||
get() = _dampensVibrations ?: parent.dampensVibrations
|
||||
|
||||
val combat: CombatBehaviour
|
||||
get() = _combat ?: parent.combat
|
||||
|
||||
|
||||
@@ -35,5 +35,6 @@ class MoveBehaviour {
|
||||
it.addFunction("wander_chance") { DoubleValue(wanderChance) }
|
||||
it.addFunction("wander_speed") { DoubleValue(wanderSpeed) }
|
||||
it.addFunction("can_look") { DoubleValue(canLook) }
|
||||
it.addFunction("can_move") { DoubleValue(walk.canWalk || swim.canSwimInLava || swim.canSwimInWater || fly.canFly) }
|
||||
}
|
||||
}
|
||||
+10
-4
@@ -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,11 +32,17 @@ 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 (HeldItems.showdownItems.contains(formattedPath)) {
|
||||
if (showdownIds.contains(formattedPath)) {
|
||||
this.itemIds[formattedPath] = item
|
||||
}
|
||||
}
|
||||
@@ -45,9 +51,9 @@ abstract class BaseCobblemonHeldItemManager : HeldItemManager {
|
||||
|
||||
override fun showdownId(pokemon: BattlePokemon): String? {
|
||||
val item = pokemon.effectedPokemon.heldItemNoCopy()
|
||||
val identifier = item.get(CobblemonItemComponents.HELD_ITEM_EFFECT)?.showdownId ?: BuiltInRegistries.ITEM.getKey(item.item).path
|
||||
val identifier = item.get(CobblemonItemComponents.HELD_ITEM_REP)?.item ?: BuiltInRegistries.ITEM.getKey(item.item)
|
||||
|
||||
val formattedPath = identifier.replace("_", "")
|
||||
val formattedPath = identifier.path.replace("_", "")
|
||||
if (this.itemIds.containsKey(formattedPath)) {
|
||||
return formattedPath
|
||||
}
|
||||
|
||||
+5
-16
@@ -9,7 +9,6 @@
|
||||
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
|
||||
@@ -61,12 +60,9 @@ object CobblemonHeldItemManager : BaseCobblemonHeldItemManager() {
|
||||
|
||||
override fun showdownId(pokemon: BattlePokemon): String? {
|
||||
val itemStack = pokemon.effectedPokemon.heldItemNoCopy()
|
||||
|
||||
if (itemStack.has(HELD_ITEM_EFFECT))
|
||||
return itemStack.get(HELD_ITEM_EFFECT)!!.showdownId
|
||||
|
||||
if (remaps.containsKey(itemStack.item))
|
||||
if (remaps.containsKey(itemStack.item)) {
|
||||
return remaps[itemStack.item]
|
||||
}
|
||||
|
||||
for (remap in stackRemaps) {
|
||||
val id = remap.apply(itemStack)
|
||||
@@ -84,11 +80,9 @@ object CobblemonHeldItemManager : BaseCobblemonHeldItemManager() {
|
||||
}
|
||||
|
||||
fun showdownId(itemStack: ItemStack): String? {
|
||||
if (itemStack.has(HELD_ITEM_EFFECT))
|
||||
return itemStack.get(HELD_ITEM_EFFECT)?.showdownId
|
||||
|
||||
if (remaps.containsKey(itemStack.item))
|
||||
if (remaps.containsKey(itemStack.item)) {
|
||||
return remaps[itemStack.item]
|
||||
}
|
||||
|
||||
for (remap in stackRemaps) {
|
||||
val id = remap.apply(itemStack)
|
||||
@@ -179,18 +173,13 @@ 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 itemStack.`is`(tag)
|
||||
return pokemon.effectedPokemon.heldItem().`is`(tag)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
{
|
||||
"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]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-3
@@ -5,10 +5,9 @@
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": [0, -9, 0],
|
||||
"rotation": [25, 0, 0]
|
||||
"position": [0, -9, 0]
|
||||
},
|
||||
"_torso_disabled_because_it_cannot_be_reparented": {
|
||||
"torso": {
|
||||
"rotation": [25, 0, 0]
|
||||
},
|
||||
"arm_right": {
|
||||
|
||||
+79
-699
@@ -1,15 +1,79 @@
|
||||
{
|
||||
"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+Math.cos((query.anim_time) * 90 * 2) * 1", 0, 0],
|
||||
"position": [0, 0, "0+Math.cos((query.anim_time) * 90 * 2) * -0.3"]
|
||||
"rotation": [-5, 0, 0]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": ["-2.5+Math.cos((query.anim_time) * 90 * 2) * -1", 0, 0]
|
||||
"rotation": [-2.5, 0, 0]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [0, 0, 0]
|
||||
@@ -24,16 +88,16 @@
|
||||
"rotation": [5, 0, 0]
|
||||
},
|
||||
"chest": {
|
||||
"rotation": ["-32.5+Math.cos((query.anim_time) * 90 * 2 - 45) * 0.5", 0, 0]
|
||||
"rotation": [-32.5, 0, 0]
|
||||
},
|
||||
"neck": {
|
||||
"rotation": ["-50+Math.cos((query.anim_time) * 90 * 2) * -1", 0, 0]
|
||||
"rotation": [-50, 0, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": ["85+Math.cos((query.anim_time) * 90 * 2 + 45) * 1", 0, 0]
|
||||
"rotation": [85, 0, 0]
|
||||
},
|
||||
"flipper_left": {
|
||||
"rotation": [25.90134, -21.60983, "51.4242+Math.cos((query.anim_time) * 90 * 2) * -1"],
|
||||
"rotation": [25.90134, -21.60983, 48.92416],
|
||||
"position": [0, -1.68678, 1.0746]
|
||||
},
|
||||
"flipper_left2": {
|
||||
@@ -43,7 +107,7 @@
|
||||
"rotation": [0, 0, -37.5]
|
||||
},
|
||||
"flipper_right": {
|
||||
"rotation": [25.90134, 21.60983, "-51.4242+Math.cos((query.anim_time) * 90 * 2) * 1"],
|
||||
"rotation": [25.90134, 21.60983, -48.92416],
|
||||
"position": [0, -1.68678, 1.0746]
|
||||
},
|
||||
"flipper_right2": {
|
||||
@@ -53,507 +117,7 @@
|
||||
"rotation": [0, 0, 37.5]
|
||||
},
|
||||
"torso": {
|
||||
"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]
|
||||
"rotation": [5, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -576,6 +140,11 @@
|
||||
"1.25": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"sound_effects": {
|
||||
"0.0417": {
|
||||
"effect": "pokemon.dewgong.cry"
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.dewgong.blink": {
|
||||
@@ -641,7 +210,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.dewgong.neckdemo": {
|
||||
"animation.dewgong.new": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"neck": {
|
||||
@@ -651,195 +220,6 @@
|
||||
"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
-4782
File diff suppressed because it is too large
Load Diff
+76
-3581
File diff suppressed because it is too large
Load Diff
+117
-274
@@ -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_middle": {
|
||||
"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]
|
||||
},
|
||||
"tail_middle2": {
|
||||
"tail2": {
|
||||
"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_middle3": {
|
||||
"tail3": {
|
||||
"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_middle4": {
|
||||
"tail4": {
|
||||
"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_middle5": {
|
||||
"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": {
|
||||
@@ -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]
|
||||
},
|
||||
"tail_middle6": {
|
||||
"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": {
|
||||
@@ -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_middle": {
|
||||
"tail": {
|
||||
"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]
|
||||
},
|
||||
"tail_middle2": {
|
||||
"tail2": {
|
||||
"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]
|
||||
},
|
||||
"tail_middle3": {
|
||||
"tail3": {
|
||||
"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]
|
||||
},
|
||||
"tail_middle4": {
|
||||
"tail4": {
|
||||
"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]
|
||||
},
|
||||
"tail_middle5": {
|
||||
"tail5": {
|
||||
"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]
|
||||
},
|
||||
"tail_middle6": {
|
||||
"tail6": {
|
||||
"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_middle": {
|
||||
"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]
|
||||
},
|
||||
"tail_middle2": {
|
||||
"tail2": {
|
||||
"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_middle3": {
|
||||
"tail3": {
|
||||
"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_middle4": {
|
||||
"tail4": {
|
||||
"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_middle5": {
|
||||
"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": {
|
||||
@@ -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]
|
||||
},
|
||||
"tail_middle6": {
|
||||
"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": {
|
||||
@@ -480,255 +480,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
@@ -866,15 +617,15 @@
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"post": [0, -0.5, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4583": {
|
||||
"post": [0, -1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5417": [0, 0, 0],
|
||||
"1.7917": [0, 0, 0]
|
||||
"0.5417": [0, -0.5, 0],
|
||||
"1.7917": [0, -0.5, 0]
|
||||
}
|
||||
},
|
||||
"leg_front_right2": {
|
||||
@@ -960,10 +711,6 @@
|
||||
"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"
|
||||
@@ -992,6 +739,102 @@
|
||||
"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]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-694
@@ -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*3+45)*12+5", "NaN-math.sin(q.anim_time*90*2-33*3+180)*1+5", 0]
|
||||
"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]
|
||||
},
|
||||
"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,684 +534,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
@@ -1571,20 +893,6 @@
|
||||
"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]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+39
-173
@@ -402,9 +402,27 @@
|
||||
"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]
|
||||
},
|
||||
@@ -420,6 +438,21 @@
|
||||
"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": [
|
||||
@@ -472,9 +505,15 @@
|
||||
"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
|
||||
},
|
||||
@@ -495,165 +534,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
@@ -1031,20 +911,6 @@
|
||||
"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]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-1009
File diff suppressed because it is too large
Load Diff
+152
-17260
File diff suppressed because it is too large
Load Diff
+68
-448
@@ -3600,64 +3600,28 @@
|
||||
"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": {
|
||||
@@ -4449,64 +4413,28 @@
|
||||
"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": {
|
||||
@@ -4647,49 +4575,25 @@
|
||||
"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": {
|
||||
@@ -5503,64 +5407,28 @@
|
||||
"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": {
|
||||
@@ -6644,64 +6512,28 @@
|
||||
"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": {
|
||||
@@ -7582,40 +7414,22 @@
|
||||
"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": {
|
||||
@@ -7893,40 +7707,22 @@
|
||||
"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]}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8085,182 +7881,6 @@
|
||||
"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]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+36
-8221
File diff suppressed because it is too large
Load Diff
+84
-79
@@ -7,8 +7,8 @@
|
||||
"texture_width": 128,
|
||||
"texture_height": 128,
|
||||
"visible_bounds_width": 10,
|
||||
"visible_bounds_height": 2.5,
|
||||
"visible_bounds_offset": [0, 0.75, 0]
|
||||
"visible_bounds_height": 3.5,
|
||||
"visible_bounds_offset": [0, 1.25, 0]
|
||||
},
|
||||
"bones": [
|
||||
{
|
||||
@@ -132,17 +132,17 @@
|
||||
{
|
||||
"name": "locator_seat_1",
|
||||
"parent": "torso",
|
||||
"pivot": [0, 15.25, 3.75],
|
||||
"pivot": [0, 18.25, 3.75],
|
||||
"locators": {
|
||||
"seat_1": [0, 15.25, 3.75]
|
||||
"seat_1": [0, 18.25, 3.75]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_seat_2",
|
||||
"parent": "torso",
|
||||
"pivot": [0, 12, 17],
|
||||
"pivot": [0, 15, 17],
|
||||
"locators": {
|
||||
"seat_2": [0, 12, 17]
|
||||
"seat_2": [0, 15, 17]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -164,6 +164,11 @@
|
||||
{
|
||||
"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]},
|
||||
@@ -171,48 +176,74 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "locator_head",
|
||||
"parent": "head",
|
||||
"pivot": [0, 10.25, -37],
|
||||
"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],
|
||||
"locators": {
|
||||
"head": [0, 10.25, -37]
|
||||
"mouth": [0, 1.75, -39.2],
|
||||
"special": [0, 1.75, -39.2]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_item_hat",
|
||||
"parent": "head",
|
||||
"pivot": [0, 10.25, -34.75],
|
||||
"name": "locator_item",
|
||||
"parent": "jaw",
|
||||
"pivot": [0, 1.75, -41.45],
|
||||
"locators": {
|
||||
"item_hat": [0, 10.25, -34.75]
|
||||
"item": [0, 1.75, -41.45]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_face",
|
||||
"parent": "head",
|
||||
"pivot": [0, 4.7, -42.15],
|
||||
"name": "locator_jaw_lower",
|
||||
"parent": "jaw",
|
||||
"pivot": [0, 1.8, -41.5],
|
||||
"locators": {
|
||||
"face": [0, 4.7, -42.15]
|
||||
"jaw2": [0, 1.8, -41.5]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_item_face",
|
||||
"parent": "head",
|
||||
"pivot": [0, 6.2, -39.2],
|
||||
"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],
|
||||
"locators": {
|
||||
"item_face": [0, 6.2, -39.2]
|
||||
"jaw1": [0, 1.75, -40.65]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_horn",
|
||||
"parent": "head",
|
||||
"pivot": [0, 13.15, -34.75],
|
||||
"locators": {
|
||||
"horn": [0, 13.15, -34.75]
|
||||
}
|
||||
"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": "eyes",
|
||||
"parent": "head",
|
||||
"parent": "head_ai",
|
||||
"pivot": [3.5, 6.5, -39.27]
|
||||
},
|
||||
{
|
||||
@@ -354,69 +385,43 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"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],
|
||||
"name": "locator_horn",
|
||||
"parent": "head_ai",
|
||||
"pivot": [0, 13.15, -34.75],
|
||||
"locators": {
|
||||
"jaw1": [0, 1.75, -40.65]
|
||||
"horn": [0, 13.15, -34.75]
|
||||
}
|
||||
},
|
||||
{
|
||||
"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],
|
||||
"name": "locator_item_face",
|
||||
"parent": "head_ai",
|
||||
"pivot": [0, 6.2, -39.2],
|
||||
"locators": {
|
||||
"mouth": [0, 1.75, -39.2],
|
||||
"special": [0, 1.75, -39.2]
|
||||
"item_face": [0, 6.2, -39.2]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_item",
|
||||
"parent": "jaw",
|
||||
"pivot": [0, 1.75, -41.45],
|
||||
"name": "locator_face",
|
||||
"parent": "head_ai",
|
||||
"pivot": [0, 4.7, -42.15],
|
||||
"locators": {
|
||||
"item": [0, 1.75, -41.45]
|
||||
"face": [0, 4.7, -42.15]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_jaw_lower",
|
||||
"parent": "jaw",
|
||||
"pivot": [0, 1.8, -41.5],
|
||||
"name": "locator_item_hat",
|
||||
"parent": "head_ai",
|
||||
"pivot": [0, 10.25, -34.75],
|
||||
"locators": {
|
||||
"jaw2": [0, 1.8, -41.5]
|
||||
"item_hat": [0, 10.25, -34.75]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_head",
|
||||
"parent": "head_ai",
|
||||
"pivot": [0, 10.25, -37],
|
||||
"locators": {
|
||||
"head": [0, 10.25, -37]
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
+3
-172
@@ -54,17 +54,17 @@
|
||||
{
|
||||
"name": "head",
|
||||
"parent": "torso",
|
||||
"pivot": [0, 9.4, -10.7]
|
||||
"pivot": [0, 9.5, -10.5]
|
||||
},
|
||||
{
|
||||
"name": "head_correction",
|
||||
"parent": "head",
|
||||
"pivot": [0, 10, -11]
|
||||
"pivot": [0, 9.5, -10.5]
|
||||
},
|
||||
{
|
||||
"name": "head_ai",
|
||||
"parent": "head_correction",
|
||||
"pivot": [0, 10, -11]
|
||||
"pivot": [0, 9.5, -10.5]
|
||||
},
|
||||
{
|
||||
"name": "head_angle",
|
||||
@@ -99,23 +99,6 @@
|
||||
{"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",
|
||||
@@ -146,17 +129,6 @@
|
||||
{"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",
|
||||
@@ -197,14 +169,6 @@
|
||||
{"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",
|
||||
@@ -296,71 +260,6 @@
|
||||
{"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",
|
||||
@@ -386,15 +285,6 @@
|
||||
{"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",
|
||||
@@ -420,15 +310,6 @@
|
||||
{"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",
|
||||
@@ -454,15 +335,6 @@
|
||||
{"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",
|
||||
@@ -487,47 +359,6 @@
|
||||
{"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]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+7
-204
@@ -27,20 +27,16 @@
|
||||
"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",
|
||||
@@ -55,52 +51,20 @@
|
||||
{"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.4, -10.7]
|
||||
"pivot": [0, 9.5, -10.5]
|
||||
},
|
||||
{
|
||||
"name": "head_correction",
|
||||
"parent": "head",
|
||||
"pivot": [0, 10, -11]
|
||||
"pivot": [0, 9.5, -10.5]
|
||||
},
|
||||
{
|
||||
"name": "head_ai",
|
||||
"parent": "head_correction",
|
||||
"pivot": [0, 10, -11]
|
||||
"pivot": [0, 9.5, -10.5]
|
||||
},
|
||||
{
|
||||
"name": "head_angle",
|
||||
@@ -135,23 +99,6 @@
|
||||
{"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",
|
||||
@@ -182,17 +129,6 @@
|
||||
{"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",
|
||||
@@ -233,14 +169,6 @@
|
||||
{"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",
|
||||
@@ -332,63 +260,6 @@
|
||||
{"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",
|
||||
@@ -414,15 +285,6 @@
|
||||
{"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",
|
||||
@@ -448,15 +310,6 @@
|
||||
{"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",
|
||||
@@ -482,15 +335,6 @@
|
||||
{"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",
|
||||
@@ -515,47 +359,6 @@
|
||||
{"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]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+3
-189
@@ -90,15 +90,6 @@
|
||||
{"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",
|
||||
@@ -150,23 +141,6 @@
|
||||
{"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",
|
||||
@@ -186,17 +160,17 @@
|
||||
{
|
||||
"name": "head",
|
||||
"parent": "upper_torso",
|
||||
"pivot": [0, 26, 0]
|
||||
"pivot": [0, 25.75, 0.5]
|
||||
},
|
||||
{
|
||||
"name": "head_correction",
|
||||
"parent": "head",
|
||||
"pivot": [0, 26, 0]
|
||||
"pivot": [0, 25.75, 0.5]
|
||||
},
|
||||
{
|
||||
"name": "head_ai",
|
||||
"parent": "head_correction",
|
||||
"pivot": [0, 26, 0]
|
||||
"pivot": [0, 25.75, 0.5]
|
||||
},
|
||||
{
|
||||
"name": "head_angle",
|
||||
@@ -228,15 +202,6 @@
|
||||
{"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",
|
||||
@@ -259,14 +224,6 @@
|
||||
{"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",
|
||||
@@ -360,14 +317,6 @@
|
||||
{"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",
|
||||
@@ -402,16 +351,6 @@
|
||||
{"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",
|
||||
@@ -420,63 +359,6 @@
|
||||
{"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",
|
||||
@@ -510,24 +392,6 @@
|
||||
{"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",
|
||||
@@ -572,15 +436,6 @@
|
||||
{"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",
|
||||
@@ -616,47 +471,6 @@
|
||||
{"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]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+3
-189
@@ -90,15 +90,6 @@
|
||||
{"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",
|
||||
@@ -150,23 +141,6 @@
|
||||
{"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",
|
||||
@@ -186,17 +160,17 @@
|
||||
{
|
||||
"name": "head",
|
||||
"parent": "upper_torso",
|
||||
"pivot": [0, 26, 0]
|
||||
"pivot": [0, 25.75, 0.5]
|
||||
},
|
||||
{
|
||||
"name": "head_correction",
|
||||
"parent": "head",
|
||||
"pivot": [0, 26, 0]
|
||||
"pivot": [0, 25.75, 0.5]
|
||||
},
|
||||
{
|
||||
"name": "head_ai",
|
||||
"parent": "head_correction",
|
||||
"pivot": [0, 26, 0]
|
||||
"pivot": [0, 25.75, 0.5]
|
||||
},
|
||||
{
|
||||
"name": "head_angle",
|
||||
@@ -228,15 +202,6 @@
|
||||
{"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",
|
||||
@@ -259,14 +224,6 @@
|
||||
{"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",
|
||||
@@ -360,14 +317,6 @@
|
||||
{"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",
|
||||
@@ -402,16 +351,6 @@
|
||||
{"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",
|
||||
@@ -420,63 +359,6 @@
|
||||
{"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",
|
||||
@@ -510,24 +392,6 @@
|
||||
{"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",
|
||||
@@ -572,15 +436,6 @@
|
||||
{"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",
|
||||
@@ -616,47 +471,6 @@
|
||||
{"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]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
-8
@@ -355,14 +355,6 @@
|
||||
{"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",
|
||||
|
||||
-8
@@ -546,14 +546,6 @@
|
||||
{"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",
|
||||
|
||||
+4
-8
@@ -85,6 +85,7 @@
|
||||
"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]},
|
||||
@@ -111,6 +112,7 @@
|
||||
"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]}
|
||||
]
|
||||
@@ -135,6 +137,7 @@
|
||||
"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]}
|
||||
]
|
||||
@@ -159,6 +162,7 @@
|
||||
"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]}
|
||||
]
|
||||
@@ -171,14 +175,6 @@
|
||||
{"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",
|
||||
|
||||
-8
@@ -385,14 +385,6 @@
|
||||
{"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",
|
||||
|
||||
+120
-254
@@ -39,12 +39,7 @@
|
||||
{
|
||||
"name": "torso",
|
||||
"parent": "waist",
|
||||
"pivot": [0, 34.5, 0.5]
|
||||
},
|
||||
{
|
||||
"name": "abdomen",
|
||||
"parent": "torso",
|
||||
"pivot": [0, 39.5, 0.5],
|
||||
"pivot": [0, 34.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]}
|
||||
@@ -54,48 +49,13 @@
|
||||
"name": "torso2",
|
||||
"parent": "torso",
|
||||
"pivot": [0, 43.75, 0.5],
|
||||
"rotation": [5, 0, 0]
|
||||
},
|
||||
{
|
||||
"name": "chest",
|
||||
"parent": "torso2",
|
||||
"pivot": [0, 44, 0.5],
|
||||
"rotation": [5, 0, 0],
|
||||
"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",
|
||||
@@ -133,7 +93,7 @@
|
||||
"pivot": [0.35, 54, -5.35],
|
||||
"rotation": [30, 37.5, 0],
|
||||
"cubes": [
|
||||
{"origin": [0.35, 52.5, -4.35], "size": [0, 1, 7], "uv": [108, 107]}
|
||||
{"origin": [0.35, 52.5, -4.35], "size": [0, 1, 9], "uv": [106, 104]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -142,7 +102,7 @@
|
||||
"pivot": [-0.35, 54, -5.35],
|
||||
"rotation": [30, -37.5, 0],
|
||||
"cubes": [
|
||||
{"origin": [-0.35, 52.5, -4.35], "size": [0, 1, 7], "uv": [38, 110]}
|
||||
{"origin": [-0.35, 52.5, -4.35], "size": [0, 1, 9], "uv": [36, 107]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -165,11 +125,11 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "pupil_left",
|
||||
"name": "eyelid_angry2",
|
||||
"parent": "eye_left",
|
||||
"pivot": [1.52, 52.7, -2.35],
|
||||
"pivot": [1.42, 52.7, -2.85],
|
||||
"cubes": [
|
||||
{"origin": [1.52, 51.7, -2.85], "size": [0, 2, 1], "uv": [106, 125], "mirror": true}
|
||||
{"origin": [1.42, 52.2, -3.35], "size": [0, 1, 1], "uv": [88, 15], "mirror": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -177,15 +137,7 @@
|
||||
"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": [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]}
|
||||
{"origin": [1.41, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [8, 121]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -208,11 +160,11 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "pupil_right",
|
||||
"name": "eyelid_angry",
|
||||
"parent": "eye_right",
|
||||
"pivot": [-1.52, 52.7, -2.35],
|
||||
"pivot": [-1.42, 52.7, -2.85],
|
||||
"cubes": [
|
||||
{"origin": [-1.52, 51.7, -2.85], "size": [0, 2, 1], "uv": [106, 125]}
|
||||
{"origin": [-1.42, 52.2, -3.35], "size": [0, 1, 1], "uv": [90, 15]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -220,15 +172,7 @@
|
||||
"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": [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}
|
||||
{"origin": [-1.41, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [124, 72]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -276,34 +220,34 @@
|
||||
"pivot": [-1.5, 52.25, -2.6],
|
||||
"rotation": [-50, 0, 0],
|
||||
"cubes": [
|
||||
{"origin": [-4.5, 42.25, -6.6], "size": [6, 10, 4], "inflate": 0.01, "uv": [92, 75]}
|
||||
{"origin": [-4.5, 41.25, -6.6], "size": [6, 11, 4], "inflate": 0.01, "uv": [92, 75]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "hair_left2",
|
||||
"parent": "hair_left",
|
||||
"pivot": [-1.5, 42.25, -4.6],
|
||||
"pivot": [-1.5, 41.25, -4.6],
|
||||
"cubes": [
|
||||
{"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]}
|
||||
{"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]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "hair_left_end",
|
||||
"parent": "hair_left2",
|
||||
"pivot": [1, 34.25, -4.6],
|
||||
"pivot": [1, 35.25, -4.6],
|
||||
"rotation": [0, 7.5, 2.5],
|
||||
"cubes": [
|
||||
{"origin": [1, 26.25, -5.6], "size": [0, 8, 2], "uv": [68, 14]}
|
||||
{"origin": [1, 27.25, -5.6], "size": [0, 8, 2], "uv": [68, 14]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "hair_left_end2",
|
||||
"parent": "hair_left2",
|
||||
"pivot": [-4, 34.25, -4.6],
|
||||
"pivot": [-4, 35.25, -4.6],
|
||||
"rotation": [0, -7.5, -2.5],
|
||||
"cubes": [
|
||||
{"origin": [-4, 26.25, -5.6], "size": [0, 8, 2], "uv": [88, 95]}
|
||||
{"origin": [-4, 27.25, -5.6], "size": [0, 8, 2], "uv": [88, 95]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -321,34 +265,64 @@
|
||||
"pivot": [1.5, 52.25, -2.6],
|
||||
"rotation": [-50, 0, 0],
|
||||
"cubes": [
|
||||
{"origin": [-1.5, 42.25, -6.6], "size": [6, 10, 4], "inflate": 0.01, "uv": [92, 90]}
|
||||
{"origin": [-1.5, 41.25, -6.6], "size": [6, 11, 4], "inflate": 0.01, "uv": [92, 90]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "hair_right2",
|
||||
"parent": "hair_right",
|
||||
"pivot": [1.5, 42.25, -4.6],
|
||||
"pivot": [1.5, 41.25, -4.6],
|
||||
"cubes": [
|
||||
{"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]}
|
||||
{"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]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "hair_right_end",
|
||||
"parent": "hair_right2",
|
||||
"pivot": [-1, 34.25, -4.6],
|
||||
"pivot": [-1, 35.25, -4.6],
|
||||
"rotation": [0, -7.5, -2.5],
|
||||
"cubes": [
|
||||
{"origin": [-1, 26.25, -5.6], "size": [0, 8, 2], "uv": [81, 12]}
|
||||
{"origin": [-1, 27.25, -5.6], "size": [0, 8, 2], "uv": [81, 12]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "hair_right_end2",
|
||||
"parent": "hair_right2",
|
||||
"pivot": [4, 34.25, -4.6],
|
||||
"pivot": [4, 35.25, -4.6],
|
||||
"rotation": [0, 7.5, 2.5],
|
||||
"cubes": [
|
||||
{"origin": [4, 26.25, -5.6], "size": [0, 8, 2], "uv": [28, -2]}
|
||||
{"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}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -362,7 +336,7 @@
|
||||
{
|
||||
"name": "arm_left2",
|
||||
"parent": "arm_left",
|
||||
"pivot": [5.1, 45.5, 0.5],
|
||||
"pivot": [6.5, 45.5, 0.5],
|
||||
"cubes": [
|
||||
{"origin": [5, 44, -1], "size": [7, 2, 3], "uv": [112, 90]}
|
||||
]
|
||||
@@ -375,19 +349,41 @@
|
||||
{"origin": [12, 44, -1], "size": [10, 2, 3], "inflate": 0.02, "uv": [94, 45]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "wrist_left",
|
||||
"parent": "arm_left3",
|
||||
"pivot": [22, 45, 0.5]
|
||||
},
|
||||
{
|
||||
"name": "hand_left",
|
||||
"parent": "wrist_left",
|
||||
"parent": "arm_left3",
|
||||
"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",
|
||||
@@ -460,38 +456,6 @@
|
||||
{"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",
|
||||
@@ -503,7 +467,7 @@
|
||||
{
|
||||
"name": "arm_right2",
|
||||
"parent": "arm_right",
|
||||
"pivot": [-5, 45.5, 0.5],
|
||||
"pivot": [-6.5, 45.5, 0.5],
|
||||
"cubes": [
|
||||
{"origin": [-12, 44, -1], "size": [7, 2, 3], "uv": [112, 95]}
|
||||
]
|
||||
@@ -516,19 +480,41 @@
|
||||
{"origin": [-22, 44, -1], "size": [10, 2, 3], "inflate": 0.02, "uv": [94, 63]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "wrist_right",
|
||||
"parent": "arm_right3",
|
||||
"pivot": [-22, 45, 0.5]
|
||||
},
|
||||
{
|
||||
"name": "hand_right",
|
||||
"parent": "wrist_right",
|
||||
"parent": "arm_right3",
|
||||
"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",
|
||||
@@ -601,38 +587,6 @@
|
||||
{"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",
|
||||
@@ -646,16 +600,8 @@
|
||||
"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]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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]}
|
||||
{"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]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -670,38 +616,6 @@
|
||||
{"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",
|
||||
@@ -742,16 +656,8 @@
|
||||
"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]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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]}
|
||||
{"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]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -766,38 +672,6 @@
|
||||
{"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",
|
||||
@@ -834,14 +708,6 @@
|
||||
{"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",
|
||||
|
||||
+102
-236
@@ -39,12 +39,7 @@
|
||||
{
|
||||
"name": "torso",
|
||||
"parent": "waist",
|
||||
"pivot": [0, 34.5, 0.5]
|
||||
},
|
||||
{
|
||||
"name": "abdomen",
|
||||
"parent": "torso",
|
||||
"pivot": [0, 39.5, 0.5],
|
||||
"pivot": [0, 34.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]}
|
||||
@@ -54,48 +49,13 @@
|
||||
"name": "torso2",
|
||||
"parent": "torso",
|
||||
"pivot": [0, 43.75, 0.5],
|
||||
"rotation": [5, 0, 0]
|
||||
},
|
||||
{
|
||||
"name": "chest",
|
||||
"parent": "torso2",
|
||||
"pivot": [0, 44, 0.5],
|
||||
"rotation": [5, 0, 0],
|
||||
"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",
|
||||
@@ -165,11 +125,11 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "pupil_left",
|
||||
"name": "eyelid_angry2",
|
||||
"parent": "eye_left",
|
||||
"pivot": [1.52, 52.7, -2.35],
|
||||
"pivot": [1.42, 52.7, -2.85],
|
||||
"cubes": [
|
||||
{"origin": [1.52, 51.7, -2.85], "size": [0, 2, 1], "uv": [106, 125], "mirror": true}
|
||||
{"origin": [1.42, 52.2, -3.35], "size": [0, 1, 1], "uv": [88, 15], "mirror": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -177,15 +137,7 @@
|
||||
"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": [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]}
|
||||
{"origin": [1.41, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [8, 121]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -208,11 +160,11 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "pupil_right",
|
||||
"name": "eyelid_angry",
|
||||
"parent": "eye_right",
|
||||
"pivot": [-1.52, 52.7, -2.35],
|
||||
"pivot": [-1.42, 52.7, -2.85],
|
||||
"cubes": [
|
||||
{"origin": [-1.52, 51.7, -2.85], "size": [0, 2, 1], "uv": [106, 125]}
|
||||
{"origin": [-1.42, 52.2, -3.35], "size": [0, 1, 1], "uv": [90, 15]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -220,15 +172,7 @@
|
||||
"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": [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}
|
||||
{"origin": [-1.41, 51.7, -3.85], "size": [0, 2, 4], "inflate": 0.01, "uv": [124, 72]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -351,6 +295,36 @@
|
||||
{"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",
|
||||
@@ -362,7 +336,7 @@
|
||||
{
|
||||
"name": "arm_left2",
|
||||
"parent": "arm_left",
|
||||
"pivot": [5.1, 45.5, 0.5],
|
||||
"pivot": [6.5, 45.5, 0.5],
|
||||
"cubes": [
|
||||
{"origin": [5, 44, -1], "size": [7, 2, 3], "uv": [112, 90]}
|
||||
]
|
||||
@@ -375,19 +349,41 @@
|
||||
{"origin": [12, 44, -1], "size": [10, 2, 3], "inflate": 0.02, "uv": [94, 45]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "wrist_left",
|
||||
"parent": "arm_left3",
|
||||
"pivot": [22, 45, 0.5]
|
||||
},
|
||||
{
|
||||
"name": "hand_left",
|
||||
"parent": "wrist_left",
|
||||
"parent": "arm_left3",
|
||||
"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",
|
||||
@@ -460,38 +456,6 @@
|
||||
{"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",
|
||||
@@ -503,7 +467,7 @@
|
||||
{
|
||||
"name": "arm_right2",
|
||||
"parent": "arm_right",
|
||||
"pivot": [-5, 45.5, 0.5],
|
||||
"pivot": [-6.5, 45.5, 0.5],
|
||||
"cubes": [
|
||||
{"origin": [-12, 44, -1], "size": [7, 2, 3], "uv": [112, 95]}
|
||||
]
|
||||
@@ -516,19 +480,41 @@
|
||||
{"origin": [-22, 44, -1], "size": [10, 2, 3], "inflate": 0.02, "uv": [94, 63]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "wrist_right",
|
||||
"parent": "arm_right3",
|
||||
"pivot": [-22, 45, 0.5]
|
||||
},
|
||||
{
|
||||
"name": "hand_right",
|
||||
"parent": "wrist_right",
|
||||
"parent": "arm_right3",
|
||||
"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",
|
||||
@@ -601,38 +587,6 @@
|
||||
{"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",
|
||||
@@ -646,16 +600,8 @@
|
||||
"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]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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]}
|
||||
{"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]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -670,38 +616,6 @@
|
||||
{"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",
|
||||
@@ -742,16 +656,8 @@
|
||||
"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]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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]}
|
||||
{"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]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -766,38 +672,6 @@
|
||||
{"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",
|
||||
@@ -834,14 +708,6 @@
|
||||
{"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",
|
||||
|
||||
+1
-9
@@ -6,7 +6,7 @@
|
||||
"identifier": "geometry.rhyperior",
|
||||
"texture_width": 256,
|
||||
"texture_height": 256,
|
||||
"visible_bounds_width": 7,
|
||||
"visible_bounds_width": 8,
|
||||
"visible_bounds_height": 4.5,
|
||||
"visible_bounds_offset": [0, 1.75, 0]
|
||||
},
|
||||
@@ -474,14 +474,6 @@
|
||||
{"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",
|
||||
|
||||
+4
-11
@@ -7,8 +7,8 @@
|
||||
"texture_width": 256,
|
||||
"texture_height": 256,
|
||||
"visible_bounds_width": 8,
|
||||
"visible_bounds_height": 5.5,
|
||||
"visible_bounds_offset": [0, 2.25, 0]
|
||||
"visible_bounds_height": 4.5,
|
||||
"visible_bounds_offset": [0, 1.75, 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, "uv": [28, 174]},
|
||||
{"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": [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,6 +291,7 @@
|
||||
"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]},
|
||||
@@ -473,14 +474,6 @@
|
||||
{"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",
|
||||
|
||||
+12
-75
@@ -19,35 +19,15 @@
|
||||
"cry": "q.bedrock_stateful('dewgong', 'cry')"
|
||||
},
|
||||
"poses": {
|
||||
"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')"
|
||||
],
|
||||
"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,
|
||||
"poseTypes": [
|
||||
"STAND",
|
||||
"NONE",
|
||||
"FLOAT",
|
||||
"PORTRAIT",
|
||||
"PROFILE"
|
||||
],
|
||||
"isBattle": true,
|
||||
"animations": [
|
||||
"q.look('head_ai')",
|
||||
"q.bedrock('dewgong', 'ground_idle')"
|
||||
@@ -57,56 +37,13 @@
|
||||
]
|
||||
},
|
||||
"walking": {
|
||||
"poseTypes": ["WALK"],
|
||||
"isTouchingWater": false,
|
||||
"animations": [
|
||||
"q.look('head_ai')",
|
||||
"q.bedrock('dewgong', 'ground_walk')"
|
||||
"poseTypes": [
|
||||
"WALK",
|
||||
"SWIM"
|
||||
],
|
||||
"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')"
|
||||
"q.bedrock('dewgong', 'ground_idle')"
|
||||
],
|
||||
"quirks": [
|
||||
"q.bedrock_quirk('dewgong', 'blink')"
|
||||
|
||||
+12
-89
@@ -4,105 +4,28 @@
|
||||
"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')",
|
||||
"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'))"
|
||||
"cry": "q.bedrock_stateful('rhyhorn', 'cry')"
|
||||
},
|
||||
"poses": {
|
||||
"battle-standing": {
|
||||
"poseTypes": ["STAND"],
|
||||
"isBattle": true,
|
||||
"animations": [
|
||||
"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",
|
||||
"poseName": "standing",
|
||||
"poseTypes": ["STAND", "FLOAT", "NONE", "PORTRAIT", "PROFILE"],
|
||||
"animations": [
|
||||
"q.look('head')",
|
||||
"q.bedrock('rhyhorn', 'ground_idle')",
|
||||
{
|
||||
"condition": "q.is_ridden",
|
||||
"animation": "q.bedrock('rhyhorn', 'ride_ground_walk')"
|
||||
}
|
||||
"q.look('head_ai')",
|
||||
"q.bedrock('rhyhorn', 'ground_idle')"
|
||||
],
|
||||
"quirks": [
|
||||
"q.bedrock_quirk('rhyhorn', 'blink')",
|
||||
"q.bedrock_quirk('rhyhorn', 'idle_quirk')"
|
||||
]
|
||||
"quirks": ["q.bedrock_quirk('rhyhorn', 'blink')"]
|
||||
},
|
||||
"walking": {
|
||||
"poseTypes": ["WALK", "FLOAT", "SWIM"],
|
||||
"condition": "!q.in_air && !q.is_sprinting",
|
||||
"poseName": "walking",
|
||||
"poseTypes": ["WALK", "SWIM"],
|
||||
"animations": [
|
||||
"q.look('head')",
|
||||
"q.bedrock('rhyhorn', 'ground_walk')",
|
||||
{
|
||||
"condition": "q.is_ridden",
|
||||
"animation": "q.bedrock('rhyhorn', 'ride_ground_walk')"
|
||||
}
|
||||
"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')"
|
||||
],
|
||||
"quirks": ["q.bedrock_quirk('rhyhorn', 'blink')"]
|
||||
},
|
||||
"running": {
|
||||
"poseTypes": ["WALK", "FLOAT", "SWIM"],
|
||||
"condition": "!q.in_air && q.is_sprinting",
|
||||
"animations": [
|
||||
"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')"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+14
-97
@@ -4,108 +4,25 @@
|
||||
"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')",
|
||||
"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'))"
|
||||
"cry": "q.bedrock_stateful('rhydon', 'cry')"
|
||||
},
|
||||
"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": {
|
||||
"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": {
|
||||
"poseTypes": ["WALK", "FLOAT", "SWIM"],
|
||||
"condition": "!q.in_air && !q.is_sprinting",
|
||||
"animations": [
|
||||
"q.look('head')",
|
||||
"q.bedrock('rhydon', 'ground_walk')",
|
||||
{
|
||||
"condition": "q.is_ridden",
|
||||
"animation": "q.bedrock('rhydon', 'ride_ground_walk')"
|
||||
}
|
||||
],
|
||||
"poseName": "standing",
|
||||
"poseTypes": ["STAND", "FLOAT", "NONE", "PORTRAIT", "PROFILE"],
|
||||
"animations": ["q.look('head_ai')", "q.bedrock('rhydon', 'ground_idle')"],
|
||||
"quirks": ["q.bedrock_quirk('rhydon', 'blink')"]
|
||||
},
|
||||
"sleep": {
|
||||
"poseTypes": ["SLEEP"],
|
||||
"namedAnimations": {
|
||||
"cry": "q.bedrock_stateful('dummy', 'cry')"
|
||||
},
|
||||
"animations": ["q.bedrock('rhydon', 'sleep')"]
|
||||
"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('rhydon', 'ground_idle')"
|
||||
],
|
||||
"quirks": ["q.bedrock_quirk('rhydon', 'blink')"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+42
-79
@@ -4,85 +4,48 @@
|
||||
"profileScale": 0.75,
|
||||
"profileTranslation": [0, 0.6, 0],
|
||||
"rootBone": "tauros",
|
||||
"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
|
||||
"animations": {
|
||||
"cry": "q.bedrock_stateful('tauros', 'cry')",
|
||||
"status": "q.bedrock_primary('tauros', 'cry', q.curve('symmetrical_wide'))"
|
||||
},
|
||||
"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')"
|
||||
"poses": {
|
||||
"standing": {
|
||||
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
|
||||
"animations": [
|
||||
"q.look('head')",
|
||||
"q.bedrock('tauros', 'ground_idle')"
|
||||
],
|
||||
"quirks": [
|
||||
"q.bedrock_quirk('tauros', 'blink')"
|
||||
]
|
||||
},
|
||||
"animations": ["q.bedrock('tauros', 'sleep')"]
|
||||
"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')"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+42
-127
@@ -4,133 +4,48 @@
|
||||
"profileScale": 0.75,
|
||||
"profileTranslation": [0, 0.6, 0],
|
||||
"rootBone": "tauros",
|
||||
"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
|
||||
"animations": {
|
||||
"cry": "q.bedrock_stateful('tauros_paldean_aqua', 'cry')",
|
||||
"status": "q.bedrock_primary('tauros_paldean_aqua', 'cry', q.curve('symmetrical_wide'))"
|
||||
},
|
||||
"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')"
|
||||
"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')"
|
||||
]
|
||||
},
|
||||
"animations": ["q.bedrock('tauros_paldean_aqua', 'sleep')"]
|
||||
"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')"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+42
-79
@@ -4,85 +4,48 @@
|
||||
"profileScale": 0.75,
|
||||
"profileTranslation": [0, 0.6, 0],
|
||||
"rootBone": "tauros",
|
||||
"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
|
||||
"animations": {
|
||||
"cry": "q.bedrock_stateful('tauros_paldean_blaze', 'cry')",
|
||||
"status": "q.bedrock_primary('tauros_paldean_blaze', 'cry', q.curve('symmetrical_wide'))"
|
||||
},
|
||||
"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')"
|
||||
"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')"
|
||||
]
|
||||
},
|
||||
"animations": ["q.bedrock('tauros_paldean_blaze', 'sleep')"]
|
||||
"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')"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+22
-56
@@ -5,74 +5,40 @@
|
||||
"profileTranslation": [ 0, 1.12, 0],
|
||||
"rootBone": "blaziken",
|
||||
"animations": {
|
||||
"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'))"
|
||||
"cry": "q.bedrock_stateful('blaziken', 'cry')"
|
||||
},
|
||||
"poses": {
|
||||
"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,
|
||||
"poseTypes": [
|
||||
"STAND",
|
||||
"NONE",
|
||||
"FLOAT",
|
||||
"PORTRAIT",
|
||||
"PROFILE"
|
||||
],
|
||||
"isBattle": true,
|
||||
"animations": [
|
||||
"q.look('head')",
|
||||
"q.bedrock('blaziken', 'ground_idle')"
|
||||
],
|
||||
"quirks": ["q.bedrock_quirk('blaziken', 'blink')"]
|
||||
"quirks": [
|
||||
"q.bedrock_quirk('blaziken', 'blink')"
|
||||
]
|
||||
},
|
||||
"walking": {
|
||||
"poseTypes": ["WALK", "FLOAT", "SWIM"],
|
||||
"condition": "!q.is_sprinting",
|
||||
"poseTypes": [
|
||||
"WALK",
|
||||
"SWIM"
|
||||
],
|
||||
"animations": [
|
||||
"q.look('head')",
|
||||
"q.bedrock('blaziken', 'ground_walk')"
|
||||
"q.bedrock('blaziken', 'ground_idle')",
|
||||
"q.biped_walk(1, 1, 'leg_left', 'leg_right')",
|
||||
"q.bimanual_swing(1, 1, 'arm_left', 'arm_right')"
|
||||
],
|
||||
"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')"]
|
||||
"quirks": [
|
||||
"q.bedrock_quirk('blaziken', 'blink')"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
+14
-40
@@ -48,57 +48,31 @@
|
||||
"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')",
|
||||
{
|
||||
"condition": "q.is_ridden",
|
||||
"animation": "q.bedrock('slaking', 'ride_ground')"
|
||||
}
|
||||
"q.bedrock('slaking', 'ground_idle')"
|
||||
],
|
||||
"quirks": ["q.bedrock_quirk('slaking', 'blink')"]
|
||||
},
|
||||
"walking": {
|
||||
"poseTypes": ["WALK", "FLOAT", "SWIM"],
|
||||
"condition": "!q.in_air && !q.is_sprinting",
|
||||
"condition": "!q.is_sprinting",
|
||||
"animations": [
|
||||
"q.look('head')",
|
||||
"q.bedrock('slaking', 'ground_walk')",
|
||||
{
|
||||
"condition": "q.is_ridden",
|
||||
"animation": "q.bedrock('slaking', 'ride_ground')"
|
||||
}
|
||||
"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')"
|
||||
],
|
||||
"quirks": ["q.bedrock_quirk('slaking', 'blink')"]
|
||||
},
|
||||
@@ -110,4 +84,4 @@
|
||||
"animations": ["q.bedrock('slaking', 'sleep')"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
-21
@@ -281,32 +281,16 @@
|
||||
],
|
||||
"quirks": ["q.bedrock_quirk('garchomp', 'blink')"]
|
||||
},
|
||||
"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": [
|
||||
{
|
||||
"part": "body",
|
||||
"position": [0, -10, 0]
|
||||
}
|
||||
]
|
||||
},
|
||||
"flying": {
|
||||
"poseName": "flying",
|
||||
"poseTypes": ["FLY"],
|
||||
"condition": "!q.is_ridden",
|
||||
"animations": [
|
||||
"q.look('head')",
|
||||
"q.bedrock('garchomp', 'air_fly')"
|
||||
"q.bedrock('garchomp', 'air_fly')",
|
||||
{
|
||||
"condition": "q.is_ridden",
|
||||
"animation": "q.bedrock('garchomp', 'ride_air_fly')"
|
||||
}
|
||||
],
|
||||
"quirks": [
|
||||
"q.bedrock_quirk('garchomp', 'blink')",
|
||||
|
||||
+15
-93
@@ -4,106 +4,28 @@
|
||||
"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')",
|
||||
"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'))"
|
||||
"cry": "q.bedrock_stateful('rhyperior', 'cry')"
|
||||
},
|
||||
"poses": {
|
||||
"battle-standing": {
|
||||
"poseTypes": ["STAND"],
|
||||
"isBattle": true,
|
||||
"animations": [
|
||||
"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",
|
||||
"poseName": "standing",
|
||||
"poseTypes": ["STAND", "FLOAT", "NONE", "PORTRAIT", "PROFILE"],
|
||||
"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')"
|
||||
}
|
||||
"q.look('head_ai')",
|
||||
"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')"]
|
||||
"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')"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -59,7 +59,7 @@
|
||||
"isBattle": false,
|
||||
"animations": [
|
||||
"q.look('head')",
|
||||
"q.bedrock('cyclizar', 'mount_idle')"
|
||||
"q.bedrock('cyclizar', 'ride_drift')"
|
||||
],
|
||||
"condition": "q.is_ridden && !q.in_air",
|
||||
"quirks": ["q.bedrock_quirk('cyclizar', 'blink')"]
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"match": {
|
||||
"type": "cobblemon:pokemon"
|
||||
},
|
||||
"luminance": {
|
||||
"type": "cobblemon:pokemon"
|
||||
}
|
||||
}
|
||||
@@ -900,7 +900,6 @@
|
||||
"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,7 +2700,6 @@
|
||||
"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",
|
||||
@@ -3755,6 +3754,15 @@
|
||||
"cobblemon.behaviour.pokemon_bee.name": "Pollinates Flowers",
|
||||
"cobblemon.behaviour.pokemon_bee.desc": "Pollinates flowers and adds honey to hives and Saccharine tree leaves.",
|
||||
|
||||
"cobblemon.behaviour.pokemon_neutral_response.name": "Pokémon Response - Neutral",
|
||||
"cobblemon.behaviour.pokemon_neutral_response.desc": "Neutral-style Pokémon responses to triggers. Attacks once and moves away when aggravated. Attacks persistently when attacked while moving away.",
|
||||
|
||||
"cobblemon.behaviour.pokemon_friendly_response.name": "Pokémon Response - Friendly",
|
||||
"cobblemon.behaviour.pokemon_friendly_response.desc": "Friendly-style Pokémon responses to triggers. Flees when attacked. Observes players.",
|
||||
|
||||
"cobblemon.behaviour.callback_hooks.name": "Callback Hooks",
|
||||
"cobblemon.behaviour.callback_hooks.desc": "Runs MoLang scripts when certain events happen, such as when the entity is attacked or when it sees a new entity. Needed for some behaviours to function.",
|
||||
|
||||
"cobblemon.behaviour.pokemon_picks_up_items.name": "Picks Up Items",
|
||||
"cobblemon.behaviour.pokemon_picks_up_items.desc": "The Pokémon will pick up items that it cares about.",
|
||||
|
||||
|
||||
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
@@ -147,8 +147,4 @@ 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/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
|
||||
transitive-accessible method net/minecraft/world/food/FoodData add (IF)V
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "cobblemon.behaviour.callback_hooks.name",
|
||||
"description": "cobblemon.behaviour.callback_hooks.desc",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "cobblemon:add_tasks_to_activity",
|
||||
"activity": "minecraft:core",
|
||||
"tasksByPriority": {
|
||||
"0": [
|
||||
"cobblemon:notify_about_entity_visibility"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -19,6 +19,19 @@
|
||||
"look_at_target"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "add_tasks_to_activity",
|
||||
"activity": "minecraft:idle",
|
||||
"condition": "q.entity.is_pokemon",
|
||||
"tasksByPriority": {
|
||||
"0": [
|
||||
{
|
||||
"type": "cobblemon:run_script",
|
||||
"script": "cobblemon:pokemon_wander_control"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
"configurations": [
|
||||
{
|
||||
"type": "cobblemon:add_tasks_to_activity",
|
||||
"activity": "minecraft:idle",
|
||||
"activities": ["minecraft:idle", "minecraft:avoid", "minecraft:panic"],
|
||||
"tasksByPriority": {
|
||||
"0": [
|
||||
{
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
{
|
||||
"visible": false,
|
||||
"configurations": [
|
||||
{
|
||||
"type": "cobblemon:apply_behaviours",
|
||||
"behaviours": [
|
||||
"cobblemon:callback_hooks"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "add_tasks_to_activity",
|
||||
"activity": "minecraft:idle",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user