mirror of
https://gitlab.com/cable-mc/cobblemon.git
synced 2026-10-21 22:56:23 -04:00
Compare commits
204
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
58cdf2e756 | ||
|
|
d4b6e36aab | ||
|
|
0fb721702d | ||
|
|
0e5053b787 | ||
|
|
f3867e0b1d | ||
|
|
a4fcd1ae7b | ||
|
|
ed9aff2448 | ||
|
|
8497a2a083 | ||
|
|
b389a95b5e | ||
|
|
c310027ce1 | ||
|
|
5ddb01df36 | ||
|
|
5a6f49aad5 | ||
|
|
793efcfa3d | ||
|
|
d671c5a8b8 | ||
|
|
69b31dd9b9 | ||
|
|
fc94bbac4c | ||
|
|
f7d315fa33 | ||
|
|
7c30fd81f3 | ||
|
|
7f1704d573 | ||
|
|
0c2ec3ca81 | ||
|
|
33d3e156cc | ||
|
|
415642a8ba | ||
|
|
dd12081cd1 | ||
|
|
b7de84acfd | ||
|
|
8efda8c47b | ||
|
|
6baf96f83b | ||
|
|
009a9c3f15 | ||
|
|
fc0a6c0c8b | ||
|
|
041e080cd4 | ||
|
|
65bbadcfa8 | ||
|
|
a70d5e200a | ||
|
|
4d0ee751a3 | ||
|
|
d87438e53d | ||
|
|
3efef07afa | ||
|
|
9ff227fbef | ||
|
|
55ef5fd537 | ||
|
|
b3cdfb579c | ||
|
|
29588f1fde | ||
|
|
24c10d1a4f | ||
|
|
ac0d9d4d74 | ||
|
|
d33974b19e | ||
|
|
1dcdfe309e | ||
|
|
6ce1990145 | ||
|
|
1203721889 | ||
|
|
333672f993 | ||
|
|
f0f9a9596f | ||
|
|
80b8aa2b8c | ||
|
|
b919e447d8 | ||
|
|
3075b7fd73 | ||
|
|
412e3fcb8a | ||
|
|
32253fd462 | ||
|
|
4de018a209 | ||
|
|
2204a4b700 | ||
|
|
22a27cbbd7 | ||
|
|
e202e7bf2f | ||
|
|
03104b3a3d | ||
|
|
280e1ae820 | ||
|
|
ee5653bfba | ||
|
|
a9c3c14367 | ||
|
|
9cdc979067 | ||
|
|
4b45fdde3f | ||
|
|
5bf7cc6aef | ||
|
|
7cf1f5a4e5 | ||
|
|
0fe2b0f60c | ||
|
|
667376226b | ||
|
|
5506e076f6 | ||
|
|
f8799efd9d | ||
|
|
bb642fbf29 | ||
|
|
e19aa02283 | ||
|
|
e65010e289 | ||
|
|
4b4a715868 | ||
|
|
26ec5717f1 | ||
|
|
446d4771d8 | ||
|
|
9d817b3f77 | ||
|
|
21213c4fce | ||
|
|
cebf105dd5 | ||
|
|
123d3291c6 | ||
|
|
935a39c578 | ||
|
|
d53e67b55c | ||
|
|
ec0766ddcd | ||
|
|
917577f7a8 | ||
|
|
01de2f71af | ||
|
|
0779251581 | ||
|
|
14d4c6c2e4 | ||
|
|
de82d36da3 | ||
|
|
ae2704e218 | ||
|
|
a235c1286c | ||
|
|
ce584bd403 | ||
|
|
1c25861e04 | ||
|
|
006cc21ebb | ||
|
|
5ab9072f94 | ||
|
|
f7023b9737 | ||
|
|
987a7d0ccc | ||
|
|
d49c0a0ec6 | ||
|
|
d4a910bf26 | ||
|
|
25b75231ad | ||
|
|
0db1f372e3 | ||
|
|
1ddffc1c0d | ||
|
|
5fe04aad83 | ||
|
|
03b74d4b72 | ||
|
|
a5f150af9a | ||
|
|
b3b5e47cc9 | ||
|
|
1d0aa06dc4 | ||
|
|
1e5c0f5137 | ||
|
|
7bafd53f58 | ||
|
|
bdbdf238f5 | ||
|
|
6cd71050df | ||
|
|
2047f4f461 | ||
|
|
0aaed4bb84 | ||
|
|
3779b4c0b3 | ||
|
|
74aaa16a0d | ||
|
|
332ef2fddd | ||
|
|
f29c5c5f6d | ||
|
|
c46375aafb | ||
|
|
a5e16ccf65 | ||
|
|
4cc83560e8 | ||
|
|
a7f4ef8449 | ||
|
|
edaafa2263 | ||
|
|
0162bdae5f | ||
|
|
da82eb8d61 | ||
|
|
34fc434883 | ||
|
|
74949a02de | ||
|
|
1617c1b087 | ||
|
|
4b1c180538 | ||
|
|
cba6f51706 | ||
|
|
9b9fbedaf7 | ||
|
|
8c3acd9a0e | ||
|
|
4ab52cac0e | ||
|
|
68805a5dd1 | ||
|
|
5a0b4e8f99 | ||
|
|
3e9d3a307f | ||
|
|
7c4d3ecb71 | ||
|
|
e91fd5596a | ||
|
|
f9d218adf8 | ||
|
|
05d70b28e7 | ||
|
|
6755462eb0 | ||
|
|
7ef3facac8 | ||
|
|
2dc93f3336 | ||
|
|
b7c16324bd | ||
|
|
e8864418d4 | ||
|
|
7ccd0bbe11 | ||
|
|
e1cc9c7aba | ||
|
|
79e821a438 | ||
|
|
d289880cc8 | ||
|
|
19dd57feed | ||
|
|
6609c7d038 | ||
|
|
88afe05c16 | ||
|
|
e739b57a08 | ||
|
|
99aa25e1bf | ||
|
|
76faa50035 | ||
|
|
8ce989cb6b | ||
|
|
02030950aa | ||
|
|
82b418d54d | ||
|
|
6148b58fdc | ||
|
|
2044762b72 | ||
|
|
77117e83c7 | ||
|
|
55f4e6e738 | ||
|
|
1e4936aeac | ||
|
|
15ea72e777 | ||
|
|
3c3d4e4552 | ||
|
|
796e416578 | ||
|
|
7608dfde94 | ||
|
|
b2b871617a | ||
|
|
bc4c8d13b7 | ||
|
|
0f9c51f7dd | ||
|
|
2c2623e0f9 | ||
|
|
8ec85e7d2f | ||
|
|
d5a08314eb | ||
|
|
062c32be2a | ||
|
|
09590b49cd | ||
|
|
420cbd2c99 | ||
|
|
0380013f37 | ||
|
|
6c1fcc103a | ||
|
|
59b01c3988 | ||
|
|
678fa2d0ce | ||
|
|
94abd79923 | ||
|
|
0a1931aaae | ||
|
|
85d76dcc29 | ||
|
|
bd0a9ef654 | ||
|
|
7a702e276c | ||
|
|
3f9a2825cb | ||
|
|
d1462bc27b | ||
|
|
211b14dbd0 | ||
|
|
47e83003c3 | ||
|
|
59134c4212 | ||
|
|
44b434562c | ||
|
|
7af9b0854a | ||
|
|
344b0750f9 | ||
|
|
10d9d97c11 | ||
|
|
94bcfba076 | ||
|
|
69a75ffcd4 | ||
|
|
cc1317dd06 | ||
|
|
a3c5a6c377 | ||
|
|
abb5346305 | ||
|
|
9466f66721 | ||
|
|
716ea55bc7 | ||
|
|
15f0ad1821 | ||
|
|
a16975c750 | ||
|
|
c0e6d87c40 | ||
|
|
91078b917e | ||
|
|
b7e27fa52a | ||
|
|
dc87ffd2a8 | ||
|
|
cbeda361d4 | ||
|
|
079a2fb50d |
@@ -16,6 +16,7 @@ check_assets_cache:
|
||||
stage: preprocessing
|
||||
script:
|
||||
- echo "Checking if cached hash matches current hash"
|
||||
- yum install -y findutils
|
||||
|
||||
# Calculate the current hash
|
||||
- find common/src/main/resources/assets common/src/main/resources/data -type f -exec sha256sum {} + | sort -k 2 | sha256sum > current_hash.txt
|
||||
@@ -148,6 +149,7 @@ build:
|
||||
dependencies:
|
||||
- replace_resources
|
||||
script:
|
||||
- yum install -y findutils
|
||||
- export GRADLE_OPTS="-Xmx4G -Xms4G"
|
||||
- chmod +x ./gradlew
|
||||
- ./gradlew build
|
||||
@@ -163,6 +165,7 @@ publish:
|
||||
rules:
|
||||
- if: '$CI_PROJECT_PATH == "cable-mc/cobblemon" && $CI_COMMIT_BRANCH == "main"'
|
||||
script:
|
||||
- yum install -y findutils
|
||||
- export GRADLE_OPTS="-Xmx4G -Xms4G"
|
||||
- chmod +x ./gradlew
|
||||
- ./gradlew publish
|
||||
@@ -176,6 +179,7 @@ deploy_artifacts:
|
||||
dependencies:
|
||||
- build
|
||||
script:
|
||||
- yum install -y findutils
|
||||
- echo "Collecting artifacts..."
|
||||
- find neoforge/build/libs/ -type f -name "*.jar" | grep -vE "dev-shadow|sources|javadoc" | xargs -I {} mv {} ./
|
||||
- find fabric/build/libs/ -type f -name "*.jar" | grep -vE "dev-shadow|sources|javadoc" | xargs -I {} mv {} ./
|
||||
|
||||
+76
-26
@@ -21,7 +21,7 @@
|
||||
- Added Move Dex to Pokédex
|
||||
- Added the Habitat Block, a spawner block for servers and adventure maps that controls spawning in an area.
|
||||
- Added Disk Rack for storing disks and being an audio sequencer for Noteblocks
|
||||
- Added intrinsic scaling to all mons (+-5%). Some rendering cases, such as shoulder mounting, revert to 1.0 scaling to preserve animation accuracy.
|
||||
- Added intrinsic scaling to all Pokémon (+-5%). Some rendering cases, such as shoulder mounting, revert to 1.0 scaling to preserve animation accuracy.
|
||||
- Added scaling to "baby" Pokémon (smaller (-20%) at level 1 → normally sized at level 10)
|
||||
- Added conditional seats for riding. Seats can be gated by molang such as "is_alpha".
|
||||
- Added Alpha Pokémon
|
||||
@@ -42,9 +42,8 @@
|
||||
- All ruin structures gilded chest loot tables have been updated to include a guaranteed TM not learned naturally by any Pokémon through their level-up moveset. Each ruin gets its own specific TM, so you can now go hunting ruins to complete your move dex!
|
||||
- All fossil structures have been transferred over to biome features, allowing for better placement in generation.
|
||||
- The prehistoric_underwater_fissure & prehistoric_submerged_impact fossil structures now use the biome tag `#cobblemon:is_temperate_ocean`.
|
||||
- A new Biome tag called `#cobblemon:is_stony_beach` has been added.
|
||||
- Gimmighoul towers now generate at ground level rather than sinking one block into the ground.
|
||||
- 1 New shipwreck cove structure called the "magma_shipwreck_cove" has been added.
|
||||
- A new shipwreck cove structure called the "magma_shipwreck_cove" has been added.
|
||||
- Shipwreck coves now generate slightly more frequently.
|
||||
- Added equipment loot tables for shipwreck cove enemies.
|
||||
- Maps from abandoned fishing boats leading to shipwreck coves now will skip explored chunks, allowing the player to find more shipwreck coves easier.
|
||||
@@ -57,15 +56,18 @@
|
||||
- Pokémon cries now play when clicking Pokémon in the summary screen.
|
||||
- Pressing the Summary key while either the starter selection or summary screen are open now closes those screens
|
||||
- Ice type Pokémon are now immune to Packed Snow
|
||||
- Held item visibility can now be controlled by the held_item_visible command argument.
|
||||
|
||||
### New rideable Pokémon
|
||||
- Drampa
|
||||
- Archeops
|
||||
- Skarmory
|
||||
- Crobat
|
||||
- Goodra
|
||||
- Hisuian Goodra
|
||||
- Skarmory
|
||||
- Milotic
|
||||
- Archeops
|
||||
- Goodra
|
||||
- Goodra (Hisuian Form)
|
||||
- Drampa
|
||||
- Duraludon
|
||||
- Archaludon
|
||||
|
||||
### Pokémon Added
|
||||
#### Generation 3
|
||||
@@ -162,7 +164,10 @@
|
||||
- Cofagrigus
|
||||
- Tyranitar
|
||||
- Turtonator
|
||||
- Golett
|
||||
- Corsola
|
||||
- Arbok (New Patterns: Angry, Cartoon, Clown, Comedic, Crow, Grin, Ink, Modern, Rain, Scribble, Silence, Sloth, Suspicious, Will)
|
||||
- ... and Substitute
|
||||
|
||||
#### Model changes to the regional bias resource pack:
|
||||
|
||||
@@ -171,6 +176,26 @@
|
||||
- Changed models for every existing regional bias
|
||||
|
||||
### Animation updates for the following Pokémon
|
||||
|
||||
- Kakuna
|
||||
- Grimer
|
||||
- Nidoran♀ (+ New shoulder mount)
|
||||
- Nidorina
|
||||
- Nidoran♂ (+ New shoulder mount)
|
||||
- Sandshrew
|
||||
- Diglett
|
||||
- Dugtrio
|
||||
- Graveler
|
||||
- Happiny
|
||||
- Chansey
|
||||
- Blissey
|
||||
- Poliwhirl
|
||||
- Poliwrath
|
||||
- Zubat
|
||||
- Vulpix
|
||||
- Drowzee
|
||||
- Hypno
|
||||
- Noctowl
|
||||
- Skarmory
|
||||
- Skitty
|
||||
- Flygon
|
||||
@@ -202,8 +227,19 @@
|
||||
- Yamask
|
||||
- Cofagrigus
|
||||
- Luvdisc
|
||||
- Staryu
|
||||
- Starmie
|
||||
- Togetic
|
||||
- Rellor
|
||||
- Rabsca
|
||||
- Yungoos
|
||||
- Gumshoos
|
||||
- Cottonee
|
||||
- Whimsicott
|
||||
- Corsola
|
||||
|
||||
#### Added sounds to the following moves
|
||||
|
||||
- Absorb
|
||||
- Aurora Beam
|
||||
- Double Team
|
||||
@@ -229,13 +265,8 @@
|
||||
### Changes
|
||||
- Stat increase and decrease particles have been changed, with the addition of alpha boost particles.
|
||||
- Dragonite's mailbag cosmetic can now also be obtained with a chest in the cosmetic slot
|
||||
|
||||
### Fixes
|
||||
- Adjusted Croagunk's walkspeed
|
||||
- Fixed Blitzle's base scale being `1` rather than the intended `0.8`
|
||||
- Fixed Magnezone's emissive layer for the shiny having the wrong name, thus displaying wrongly
|
||||
- Fixed Litleo not blinking
|
||||
- Fixed Garchomp T-posing when sleeping while out of battle.
|
||||
- Adjusted Aerodactyl's walkspeed
|
||||
- Sharp Beak can now be crafted
|
||||
- Metal Alloy can now be crafted
|
||||
- Ability Capsules can now be brewed
|
||||
@@ -288,25 +319,19 @@
|
||||
- Hearty Grains can be milled like Farmer's Delight Rice Panicles if both Farmer's Delight and Create are installed
|
||||
- Big Roots and Revival Herbs can be milled to their respective powders
|
||||
- Pep-Up Flowers, Medicinal Leeks, and all 70 berries can be milled in Create's Millstone for additional dye drops
|
||||
- Auspicious Armor and Upgrades can be Haunted using Create's crafting systems
|
||||
- Auspicious Armour and Upgrades can be Haunted using Create's crafting systems
|
||||
- Applin Apples can be used to make Honeyed Apples in Create
|
||||
- Golden Apples can now be crafted using the Applin Apples
|
||||
- Prismarine Crystals and Amethyst Shards can now be used to craft Pokedexes
|
||||
- Updated Pokedex Screens item tag to support tagged variants of Redstone and Glowstone Dust
|
||||
- Sounds for interacting with various Cobblemon blocks now play from the center of the block, rather than the corner
|
||||
- Updated Pokédex Screens item tag to support tagged variants of Redstone and Glowstone Dust
|
||||
- Sounds for interacting with various Cobblemon blocks now play from the centre of the block, rather than the corner
|
||||
- The `/pc` command no longer plays PC activation sounds
|
||||
- Lowered the volume of Blitzle and Zebstrika's cry
|
||||
- Fixed Raichu (male) and Alolan Raichu (both genders) not displaying the correct Partner Cap when Pewter Crunchies are in the cosmetic slot.
|
||||
- Regional Foods will now prioritize being eaten instead of used for healing Pokémon, shift clicking will use it as healing
|
||||
- Resolved Z-Fighting on Pokédex Models
|
||||
- Restored Ninjask's ability to do barrel rolls
|
||||
- Fixed a crash caused by adding enchanted items to the Resurrection Machine
|
||||
|
||||
### Fixes
|
||||
- Fixed Croagunk's walkspeed
|
||||
- Fixed Blitzle's base scale being `1` rather than the intended `0.8`
|
||||
- Fixed Magnezone's emissive layer for the shiny having the wrong name, thus displaying wrongly
|
||||
- Fixed Litleo not blinking
|
||||
- Fixed Omanyte and Omastar incorrectly using water animations on land.
|
||||
- Fixed Pokédex layout for genderless variations
|
||||
- Fixed odd stacking behaviour with the poke_bait item.
|
||||
- Fixed a compatibility issue with World Game Rules which caused some log spam in specific cases.
|
||||
@@ -348,9 +373,30 @@
|
||||
- Fixed Exploit where you could take out the bait or drop your Pokérod with bait to avoid consuming bait, now the bobber will just disappear if you do so
|
||||
- Fixed Apricorn and Saccharine boats incorrectly using chest boat models
|
||||
- Fixed wild and trainer battle AI refusing to select moves with the `adjacentAlly` target type, even when it's their only option
|
||||
- Fixed Guilded chests being more accessible than intended
|
||||
- Fixed gilded chests being more accessible than intended
|
||||
- Fixed fished up Pokémon not being added as "seen" to the Pokedex
|
||||
- Fixed surprised Gimmighoul encounters not being added as "seen" to the Pokedex
|
||||
- Fixed a crash involving berry trees that have been world edited.
|
||||
- Fixed visual desync in multiplayer for players mounting Pokémon outside other players' loaded chunks
|
||||
- Fixed Pokémon entities leveled by rare candy not getting stronger as Minecraft entities unless recalled.
|
||||
- Fixed a freeze during game load that occurred when multiple mods tried to load Cobblemon API classes at the same time.
|
||||
- Fixed random tick crashes from berry trees
|
||||
- Lowered the volume of Blitzle and Zebstrika's cry
|
||||
- Regional Foods will now prioritise being eaten instead of used for healing Pokémon, shift clicking will use it as healing
|
||||
- Resolved Z-Fighting on Pokédex Models
|
||||
- Restored Ninjask's ability to do barrel rolls
|
||||
- Fixed Raichu (male) and Alolan Raichu (both genders) not displaying the correct Partner Cap when Pewter Crunchies are in the cosmetic slot.
|
||||
- Fixed a crash caused by adding enchanted items to the Resurrection Machine
|
||||
- Fixed a crash that could occur when starting a PvN battle with only fainted Pokémon.
|
||||
- Fixed the Remember Riding Camera config not being respected when dismounting and resolved the incompatibility with the Auto Third Person mod
|
||||
- Fixed Full Heal block not dropping Full Heals
|
||||
- Fixed status cure items not returning an empty bottle when used
|
||||
- Fixed Panpour consuming its held item when evolving with a Water Stone
|
||||
- Fixed Smoked Tail Curry returning a Wooden Bowl when consumed despite it not being included in the recipe
|
||||
- Fixed `/giveallpokemon` not respecting the min and max parameters
|
||||
- Fixed the choose starter toast not disappearing when capturing a Pokémon instead of opening the starter selection screen
|
||||
- Fixed an issue where certain Sinister Tea seasonings were only applying as instant effects and would not apply over time
|
||||
- Long config option labels now scroll instead of overflowing
|
||||
|
||||
### Developer
|
||||
- Added `PokeSnackSpawnerFactory` which allows influence registration on PokeSnack encounters
|
||||
@@ -361,7 +407,9 @@
|
||||
- Separated all the functions of MoLangFunctions.kt into their own files.
|
||||
- Spawn buckets and their base weights are now provided by the spawner, with different base weights for world, fishing, snack, and habitat spawn buckets.
|
||||
- Removed "SpawnBucket" class in favour of just storing maps of bucket names to weights.
|
||||
- Fixed nicknames not being applied to Pokémon spawned from `spawn_pool_world` files
|
||||
- Fixed nicknames not being applied to Pokémon spawned from `spawn_pool_world` files.
|
||||
- Added support for `profilePokedexScale`, `profilePokedexTranslation`, `profileSummaryScale`, and `profileSummaryTranslation` in poser files for finer control over profile displays.
|
||||
- Fixed riding camera offsets defined on Pokémon forms not being applied
|
||||
|
||||
### Molang & Datapacks
|
||||
- Added `moveset_builders` datapack folder for different styles of movesets.
|
||||
@@ -372,6 +420,7 @@
|
||||
- Added `q.item.is_enchanted()`
|
||||
- Added `q.item.has_enchantment(minecraft:sharpness, 3)`
|
||||
- Added `has_chosen_starter` & `get_starter_uuid` as available Molang functions
|
||||
- Added `has_tm_move_unlocked`, `unlock_tm_move`, & `lock_tm_move` as available Molang functions for Players
|
||||
- Added `marks`, `has_mark`, & `remove_marks` as available Molang functions for Pokémon
|
||||
- Added Data Component support for species drops, eg `"components": {"minecraft:custom_model_data": 123}`
|
||||
- Added the new `sortOrder` field to mark entries, (defaults to 0 if not specified) which controls the order in which marks are rendered on the HUD, with higher numbers being rendered on top of lower numbers
|
||||
@@ -462,6 +511,7 @@
|
||||
- German
|
||||
- Spanish
|
||||
- Ecuadorian Spanish
|
||||
- Portuguese
|
||||
- Brazilian Portuguese
|
||||
- Simplified Chinese
|
||||
- Traditional Chinese
|
||||
|
||||
@@ -20,6 +20,8 @@ import net.minecraft.world.level.levelgen.structure.pools.alias.PoolAliasLookup;
|
||||
import net.minecraft.world.level.levelgen.structure.templatesystem.LiquidSettings;
|
||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessor;
|
||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorList;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
@@ -31,6 +33,9 @@ import java.util.Optional;
|
||||
@Mixin(JigsawPlacement.class)
|
||||
public class JigsawPlacementMixin {
|
||||
|
||||
@Unique
|
||||
private static final Logger cobblemon$LOGGER = LoggerFactory.getLogger("Cobblemon/HeightRangeVeto");
|
||||
|
||||
@Inject(
|
||||
method = "addPieces(Lnet/minecraft/world/level/levelgen/structure/Structure$GenerationContext;Lnet/minecraft/core/Holder;Ljava/util/Optional;ILnet/minecraft/core/BlockPos;ZLjava/util/Optional;ILnet/minecraft/world/level/levelgen/structure/pools/alias/PoolAliasLookup;Lnet/minecraft/world/level/levelgen/structure/pools/DimensionPadding;Lnet/minecraft/world/level/levelgen/structure/templatesystem/LiquidSettings;)Ljava/util/Optional;",
|
||||
at = @At("RETURN"),
|
||||
@@ -54,18 +59,30 @@ public class JigsawPlacementMixin {
|
||||
if (result.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
BlockPos spawnPos = result.get().position();
|
||||
boolean canPlace = cobblemon$canAnyStartElementPlace(context, startPool, spawnPos);
|
||||
String poolId = startPool.unwrapKey().map(key -> key.location().toString()).orElse("unknown");
|
||||
boolean canPlace = cobblemon$canStructurePlace(context, startPool, spawnPos);
|
||||
|
||||
cobblemon$LOGGER.info(
|
||||
"[HeightRangeVeto] addPieces evaluated requestedPos={} spawnPos={} startPool={} -> canPlace={}",
|
||||
pos, spawnPos, poolId, canPlace
|
||||
);
|
||||
|
||||
if (canPlace) {
|
||||
return;
|
||||
}
|
||||
|
||||
cobblemon$LOGGER.info(
|
||||
"[HeightRangeVeto] Vetoing structure start at {} (startPool={})",
|
||||
spawnPos, poolId
|
||||
);
|
||||
|
||||
cir.setReturnValue(Optional.empty());
|
||||
}
|
||||
|
||||
@Unique
|
||||
private static boolean cobblemon$canAnyStartElementPlace(
|
||||
private static boolean cobblemon$canStructurePlace(
|
||||
Structure.GenerationContext generationContext,
|
||||
Holder<StructureTemplatePool> startPool,
|
||||
BlockPos startPos
|
||||
@@ -74,7 +91,7 @@ public class JigsawPlacementMixin {
|
||||
Optional<HeightRangeStructureProcessor> heightRangeProcessor = cobblemon$getHeightRangeProcessor(element);
|
||||
|
||||
if (heightRangeProcessor.isEmpty()) {
|
||||
return true;
|
||||
continue;
|
||||
}
|
||||
|
||||
HeightRangeStructureProcessor processor = heightRangeProcessor.get();
|
||||
@@ -85,12 +102,17 @@ public class JigsawPlacementMixin {
|
||||
startPos
|
||||
);
|
||||
|
||||
if (valid) {
|
||||
return true;
|
||||
cobblemon$LOGGER.info(
|
||||
"[HeightRangeVeto] template={} pos={} valid={}",
|
||||
element, startPos, valid
|
||||
);
|
||||
|
||||
if (!valid) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Unique
|
||||
|
||||
@@ -108,6 +108,7 @@ import com.cobblemon.mod.common.pokemon.helditem.CobblemonHeldItemManager
|
||||
import com.cobblemon.mod.common.pokemon.properties.AspectPropertyType
|
||||
import com.cobblemon.mod.common.pokemon.properties.BattleCloneProperty
|
||||
import com.cobblemon.mod.common.pokemon.properties.FreezeFrameProperty
|
||||
import com.cobblemon.mod.common.pokemon.properties.HeldItemVisibleProperty
|
||||
import com.cobblemon.mod.common.pokemon.properties.HiddenAbilityPropertyType
|
||||
import com.cobblemon.mod.common.pokemon.properties.LabelProperty
|
||||
import com.cobblemon.mod.common.pokemon.properties.NoAIProperty
|
||||
@@ -350,6 +351,7 @@ object Cobblemon {
|
||||
CustomPokemonProperty.register(UnaspectPropertyType)
|
||||
CustomPokemonProperty.register(FreezeFrameProperty)
|
||||
CustomPokemonProperty.register(NoAIProperty)
|
||||
CustomPokemonProperty.register(HeldItemVisibleProperty)
|
||||
|
||||
CobblemonEvents.POKEMON_PROPERTY_INITIALISED.emit(Unit)
|
||||
|
||||
|
||||
@@ -405,7 +405,7 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
|
||||
@JvmField
|
||||
val BIG_MALASADA = regionalFoodItem("big_malasada", 64, 7, 0.3f, false)
|
||||
@JvmField
|
||||
val SMOKED_TAIL_CURRY = regionalFoodItem("smoked_tail_curry", 64, 10, 0.6f, false, ItemStack(Items.BOWL, 1))
|
||||
val SMOKED_TAIL_CURRY = regionalFoodItem("smoked_tail_curry", 64, 10, 0.6f, false)
|
||||
@JvmField
|
||||
val JUBILIFE_MUFFIN = regionalFoodItem("jubilife_muffin", 64, 7, 0.3f, false)
|
||||
@JvmField
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.cobblemon.mod.common.client.net.gui.PokedexUIPacketHandler
|
||||
import com.cobblemon.mod.common.client.net.gui.SetActiveTMPacketHandler
|
||||
import com.cobblemon.mod.common.client.net.gui.SetTMMachineContainerDataPacketHandler
|
||||
import com.cobblemon.mod.common.client.net.gui.SummaryUIPacketHandler
|
||||
import com.cobblemon.mod.common.client.net.gui.SynchronizeActiveTMHandler
|
||||
import com.cobblemon.mod.common.client.net.habitat.OpenHabitatBlockEditorHandler
|
||||
import com.cobblemon.mod.common.client.net.npc.CloseNPCEditorHandler
|
||||
import com.cobblemon.mod.common.client.net.npc.OpenNPCEditorHandler
|
||||
@@ -147,6 +148,7 @@ import com.cobblemon.mod.common.net.messages.client.ui.PokedexUIPacket
|
||||
import com.cobblemon.mod.common.net.messages.client.ui.SetActiveTMPacket
|
||||
import com.cobblemon.mod.common.net.messages.client.ui.SetTMMachineContainerDataPacket
|
||||
import com.cobblemon.mod.common.net.messages.client.ui.SummaryUIPacket
|
||||
import com.cobblemon.mod.common.net.messages.client.ui.SynchronizeActiveTMPacket
|
||||
import com.cobblemon.mod.common.net.messages.server.BattleChallengePacket
|
||||
import com.cobblemon.mod.common.net.messages.server.BattleChallengeResponsePacket
|
||||
import com.cobblemon.mod.common.net.messages.server.BenchMovePacket
|
||||
@@ -375,6 +377,7 @@ object CobblemonNetwork {
|
||||
list.add(PacketRegisterInfo(PlayerInteractOptionsPacket.ID, PlayerInteractOptionsPacket::decode, PlayerInteractOptionsHandler))
|
||||
list.add(PacketRegisterInfo(PokedexUIPacket.ID, PokedexUIPacket::decode, PokedexUIPacketHandler))
|
||||
list.add(PacketRegisterInfo(ExpGainedDataPacket.ID, ExpGainedDataPacket::decode, ExpGainedDataPacketHandler))
|
||||
list.add(PacketRegisterInfo(SynchronizeActiveTMPacket.ID, SynchronizeActiveTMPacket::decode, SynchronizeActiveTMHandler))
|
||||
|
||||
// Starter packets
|
||||
list.add(PacketRegisterInfo(OpenStarterUIPacket.ID, OpenStarterUIPacket::decode, StarterUIPacketHandler))
|
||||
|
||||
+10
-1
@@ -8,6 +8,7 @@
|
||||
|
||||
package com.cobblemon.mod.common.api.cooking.effects
|
||||
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.world.effect.MobEffect
|
||||
import net.minecraft.world.effect.MobEffectCategory
|
||||
import net.minecraft.world.entity.Entity
|
||||
@@ -18,5 +19,13 @@ class CleanseAllEffect : MobEffect(MobEffectCategory.BENEFICIAL, 0xFFFFFF) {
|
||||
override fun applyInstantenousEffect(source: Entity?, indirect: Entity?, target: LivingEntity, amplifier: Int, proximity: Double) {
|
||||
target.removeAllEffects()
|
||||
}
|
||||
override fun shouldApplyEffectTickThisTick(duration: Int, amplifier: Int) = false
|
||||
|
||||
override fun applyEffectTick(livingEntity: LivingEntity, amplifier: Int): Boolean {
|
||||
if (livingEntity is ServerPlayer){
|
||||
livingEntity.removeAllEffects()
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun shouldApplyEffectTickThisTick(duration: Int, amplifier: Int) = true
|
||||
}
|
||||
+15
-1
@@ -8,6 +8,7 @@
|
||||
|
||||
package com.cobblemon.mod.common.api.cooking.effects
|
||||
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.world.effect.MobEffect
|
||||
import net.minecraft.world.effect.MobEffectCategory
|
||||
import net.minecraft.world.entity.Entity
|
||||
@@ -23,5 +24,18 @@ class CleanseNegativeEffect : MobEffect(MobEffectCategory.BENEFICIAL, 0xFFFFFF)
|
||||
}
|
||||
}
|
||||
}
|
||||
override fun shouldApplyEffectTickThisTick(duration: Int, amplifier: Int) = false
|
||||
|
||||
override fun applyEffectTick(livingEntity: LivingEntity, amplifier: Int): Boolean {
|
||||
if (livingEntity is ServerPlayer){
|
||||
val snapshot = livingEntity.activeEffects.toList()
|
||||
for (ei in snapshot) {
|
||||
if (ei.effect.value().category == MobEffectCategory.HARMFUL) {
|
||||
livingEntity.removeEffect(ei.effect)
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun shouldApplyEffectTickThisTick(duration: Int, amplifier: Int) = true
|
||||
}
|
||||
@@ -69,7 +69,7 @@ class HabitatPool {
|
||||
pool.spawns = spawns
|
||||
return pool
|
||||
} else {
|
||||
return HabitatPools.habitatPoolsById[poolId] ?: HabitatPool.default()
|
||||
return HabitatPools.habitatPoolsById[poolId] ?: default()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -94,6 +94,14 @@ class HabitatPool {
|
||||
return spawns.mapNotNull { it.createSpawnDetail(habitatBlockEntity) }
|
||||
}
|
||||
|
||||
fun getPhaseCount(): Int {
|
||||
return spawns
|
||||
.flatMap { it.phases?.ranges?.flatten() ?: emptySet() }
|
||||
.toSet()
|
||||
.count()
|
||||
.coerceAtLeast(1)
|
||||
}
|
||||
|
||||
fun encode(buffer: RegistryFriendlyByteBuf) {
|
||||
buffer.writeResourceLocation(id)
|
||||
buffer.writeUtf(name)
|
||||
|
||||
@@ -17,7 +17,6 @@ import net.minecraft.network.RegistryFriendlyByteBuf
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
|
||||
class HabitatSettingsDTO() {
|
||||
var numberOfPhases = 1
|
||||
var phaseOrder = HabitatPhaseOrder.SIMPLE
|
||||
lateinit var levelRange: IntRange
|
||||
var modifiers: String = ""
|
||||
@@ -28,7 +27,6 @@ class HabitatSettingsDTO() {
|
||||
var naturalSettings: NaturalHabitatSettingsDTO? = null
|
||||
|
||||
constructor(habitatBlockEntity: HabitatBlockEntity) : this() {
|
||||
this.numberOfPhases = habitatBlockEntity.numberOfPhases
|
||||
this.phaseOrder = habitatBlockEntity.phaseOrder
|
||||
this.levelRange = habitatBlockEntity.levelRange
|
||||
this.modifiers = habitatBlockEntity.modifiers.asString()
|
||||
@@ -44,7 +42,6 @@ class HabitatSettingsDTO() {
|
||||
}
|
||||
|
||||
fun encode(buffer: RegistryFriendlyByteBuf) {
|
||||
buffer.writeInt(numberOfPhases)
|
||||
buffer.writeEnum(phaseOrder)
|
||||
buffer.writeInt(levelRange.first)
|
||||
buffer.writeInt(levelRange.last)
|
||||
@@ -60,7 +57,6 @@ class HabitatSettingsDTO() {
|
||||
}
|
||||
|
||||
fun decode(buffer: RegistryFriendlyByteBuf) {
|
||||
this.numberOfPhases = buffer.readInt()
|
||||
this.phaseOrder = buffer.readEnum(HabitatPhaseOrder::class.java)
|
||||
val levelRangeStart = buffer.readInt()
|
||||
val levelRangeEnd = buffer.readInt()
|
||||
|
||||
+20
@@ -17,6 +17,8 @@ import com.bedrockk.molang.runtime.value.MoValue
|
||||
import com.bedrockk.molang.runtime.value.StringValue
|
||||
import com.cobblemon.mod.common.Cobblemon
|
||||
import com.cobblemon.mod.common.CobblemonBlockEntities
|
||||
import com.cobblemon.mod.common.api.moves.Moves
|
||||
import com.cobblemon.mod.common.api.tms.TechnicalMachines
|
||||
import com.cobblemon.mod.common.api.dialogue.PlayerDialogueFaceProvider
|
||||
import com.cobblemon.mod.common.api.molang.MoLangFunctions.asMoLangValue
|
||||
import com.cobblemon.mod.common.api.molang.ObjectValue
|
||||
@@ -44,6 +46,7 @@ import com.cobblemon.mod.common.util.party
|
||||
import com.cobblemon.mod.common.util.pc
|
||||
import com.cobblemon.mod.common.util.pokedex
|
||||
import com.cobblemon.mod.common.util.server
|
||||
import com.cobblemon.mod.common.util.tmList
|
||||
import net.minecraft.core.registries.BuiltInRegistries
|
||||
import net.minecraft.core.registries.Registries
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
@@ -312,6 +315,23 @@ object PlayerMoLangFunctions : AbstractMoLangFunctionHolder<Player>() {
|
||||
}
|
||||
return@put DoubleValue.ZERO
|
||||
}
|
||||
map["has_tm_move_unlocked"] = put@{ params ->
|
||||
val move = Moves.getByName(params.getString(0)) ?: return@put DoubleValue.ZERO
|
||||
val tm = TechnicalMachines.moveToTM[move] ?: return@put DoubleValue.ZERO
|
||||
DoubleValue(if (player.tmList().learnedTMs.contains(tm.id)) 1.0 else 0.0)
|
||||
}
|
||||
map["unlock_tm_move"] = put@{ params ->
|
||||
val move = Moves.getByName(params.getString(0)) ?: return@put DoubleValue.ZERO
|
||||
val tm = TechnicalMachines.moveToTM[move] ?: return@put DoubleValue.ZERO
|
||||
player.tmList().syncTMFromMove(move)
|
||||
DoubleValue(if (player.tmList().learnedTMs.contains(tm.id)) 1.0 else 0.0)
|
||||
}
|
||||
map["lock_tm_move"] = put@{ params ->
|
||||
val move = Moves.getByName(params.getString(0)) ?: return@put DoubleValue.ZERO
|
||||
val tm = TechnicalMachines.moveToTM[move] ?: return@put DoubleValue.ZERO
|
||||
player.tmList().syncTMLockFromMove(move)
|
||||
DoubleValue(if (player.tmList().learnedTMs.contains(tm.id)) 0.0 else 1.0)
|
||||
}
|
||||
map["start_battle"] = put@{ params ->
|
||||
val opponentValue = params.get<MoValue>(0)
|
||||
val opponent = if (opponentValue is ObjectValue<*>) {
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
package com.cobblemon.mod.common.api.tms
|
||||
|
||||
import com.cobblemon.mod.common.tms.obtain.DefaultObtainMethod
|
||||
import com.cobblemon.mod.common.tms.obtain.ImpossibleObtainMethod
|
||||
import com.cobblemon.mod.common.tms.obtain.PlayerHasAdvancementObtainMethod
|
||||
import com.cobblemon.mod.common.tms.obtain.PlayerYObtainMethod
|
||||
import com.cobblemon.mod.common.tms.obtain.UnlockableObtainMethod
|
||||
@@ -36,6 +37,7 @@ interface ObtainMethod {
|
||||
val variant = buffer.readUtf()
|
||||
return when (variant) {
|
||||
"cobblemon:unlockable" -> UnlockableObtainMethod()
|
||||
"cobblemon:impossible" -> ImpossibleObtainMethod()
|
||||
"cobblemon:default" -> DefaultObtainMethod()
|
||||
"cobblemon:advancement" -> {
|
||||
val advancement = buffer.readResourceLocation()
|
||||
|
||||
@@ -14,6 +14,8 @@ import com.cobblemon.mod.common.advancement.CobblemonCriteria
|
||||
import com.cobblemon.mod.common.advancement.criterion.CountableContext
|
||||
import com.cobblemon.mod.common.advancement.criterion.LearnAllTMContext
|
||||
import com.cobblemon.mod.common.advancement.criterion.LearnTMContext
|
||||
import com.cobblemon.mod.common.api.abilities.Ability
|
||||
import com.cobblemon.mod.common.api.abilities.AbilityPool
|
||||
import com.cobblemon.mod.common.api.moves.MoveTemplate
|
||||
import com.cobblemon.mod.common.api.scheduling.ScheduledTask
|
||||
import com.cobblemon.mod.common.api.scheduling.ServerTaskTracker
|
||||
@@ -50,6 +52,11 @@ class TMMoveManager(
|
||||
learn(listOf(tmId))
|
||||
}
|
||||
|
||||
fun syncTMLockFromMove(moveTemplate: MoveTemplate) {
|
||||
val tmId = TechnicalMachines.moveToTM[moveTemplate]?.id ?: return
|
||||
unlearn(listOf(tmId))
|
||||
}
|
||||
|
||||
fun getLearnableTMsFromPokemon(pokemon: Pokemon): Collection<ResourceLocation> {
|
||||
val learnableMoves = pokemon.allAccessibleMoves.toMutableSet()
|
||||
learnableMoves.addAll(pokemon.moveSet.map { it.template })
|
||||
|
||||
@@ -42,10 +42,12 @@ class ElementalType(
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
val BY_STRING_CODEC: Codec<ElementalType> = CodecUtils.createByStringCodec(
|
||||
ElementalTypes::get,
|
||||
{it.showdownId}
|
||||
) { id -> "No ElementalType for ID $id" }
|
||||
val BY_STRING_CODEC: Codec<ElementalType> by lazy {
|
||||
CodecUtils.createByStringCodec(
|
||||
ElementalTypes::get,
|
||||
{ it.showdownId }
|
||||
) { id -> "No ElementalType for ID $id" }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -349,11 +349,12 @@ object BattleBuilder {
|
||||
npcPartyStores.add(npcParty)
|
||||
}
|
||||
|
||||
if (playerActor.pokemonList.size < battleFormat.battleType.slotsPerActor) {
|
||||
val playerAvailablePokemon = playerActor.pokemonList.count { it.health > 0 }
|
||||
if (playerAvailablePokemon < battleFormat.battleType.slotsPerActor) {
|
||||
errors.participantErrors[playerActor] += BattleStartError.insufficientPokemon(
|
||||
actorEntity = player,
|
||||
requiredCount = battleFormat.battleType.slotsPerActor,
|
||||
hadCount = playerActor.pokemonList.size
|
||||
hadCount = playerAvailablePokemon
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+4
-2
@@ -163,7 +163,8 @@ class TrackerActor(val uuid: UUID) {
|
||||
//we assume that AI knows it all about our allies
|
||||
trackerActor.party.addAll(actor.pokemonList.map { createAllied(it) })
|
||||
actor.activePokemon.forEach {
|
||||
val active = trackerActor.party.first { trackMon -> trackMon.id == it.battlePokemon!!.uuid }
|
||||
val battlePokemon = it.battlePokemon ?: return@forEach
|
||||
val active = trackerActor.party.first { trackMon -> trackMon.id == battlePokemon.uuid }
|
||||
trackerActor.party.remove(active)
|
||||
trackerActor.activePokemon.add(active)
|
||||
}
|
||||
@@ -176,7 +177,8 @@ class TrackerActor(val uuid: UUID) {
|
||||
//only know basics of what we see right now
|
||||
trackerActor.party.addAll(actor.pokemonList.map { createOpposing(it) })
|
||||
actor.activePokemon.forEach {
|
||||
val active = trackerActor.party.first { trackMon -> trackMon.id == it.battlePokemon!!.uuid }
|
||||
val battlePokemon = it.battlePokemon ?: return@forEach
|
||||
val active = trackerActor.party.first { trackMon -> trackMon.id == battlePokemon.uuid }
|
||||
trackerActor.party.remove(active)
|
||||
trackerActor.activePokemon.add(active)
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
package com.cobblemon.mod.common.block
|
||||
|
||||
//import dev.lambdaurora.lambdynlights.util.SodiumDynamicLightHandler.pos
|
||||
import com.cobblemon.mod.common.CobblemonBlockEntities
|
||||
import com.cobblemon.mod.common.CobblemonSounds
|
||||
import com.cobblemon.mod.common.api.berry.Berries
|
||||
import com.cobblemon.mod.common.api.berry.Berry
|
||||
@@ -40,7 +39,11 @@ import net.minecraft.world.level.BlockGetter
|
||||
import net.minecraft.world.level.Level
|
||||
import net.minecraft.world.level.LevelAccessor
|
||||
import net.minecraft.world.level.LevelReader
|
||||
import net.minecraft.world.level.block.*
|
||||
import net.minecraft.world.level.block.BaseEntityBlock
|
||||
import net.minecraft.world.level.block.Block
|
||||
import net.minecraft.world.level.block.Blocks
|
||||
import net.minecraft.world.level.block.BonemealableBlock
|
||||
import net.minecraft.world.level.block.RenderShape
|
||||
import net.minecraft.world.level.block.entity.BlockEntity
|
||||
import net.minecraft.world.level.block.entity.BlockEntityTicker
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType
|
||||
@@ -70,7 +73,7 @@ class BerryBlock(private val berryIdentifier: ResourceLocation, settings: Proper
|
||||
override fun playerWillDestroy(world: Level, pos: BlockPos, state: BlockState, player: Player): BlockState {
|
||||
if (!player.isCreative && state.getValue(AGE) == FRUIT_AGE) {
|
||||
val treeEntity = world.getBlockEntity(pos) as BerryBlockEntity
|
||||
treeEntity.harvest(world, state, pos, player).forEach { drop -> Block.popResource(world, pos, drop) }
|
||||
treeEntity.harvest(world, state, pos, player).forEach { drop -> popResource(world, pos, drop) }
|
||||
}
|
||||
return super.playerWillDestroy(world, pos, state, player)
|
||||
}
|
||||
@@ -92,7 +95,7 @@ class BerryBlock(private val berryIdentifier: ResourceLocation, settings: Proper
|
||||
// Random Tick handler: uses time compensation to ensure correct growth speed
|
||||
@Deprecated("Deprecated in Java")
|
||||
override fun randomTick(state: BlockState, world: ServerLevel, pos: BlockPos, random: RandomSource) {
|
||||
val blockEntity = world.getBlockEntity(pos) as? BerryBlockEntity ?: return
|
||||
val blockEntity = world.getBlockEntity(pos) as? BerryBlockEntity? ?: return
|
||||
|
||||
// processTick calculates elapsed time and updates timer, returns whether growth is needed
|
||||
if (blockEntity.processTick(world, pos, state) && !world.getBlockTicks().hasScheduledTick(pos, this)) {
|
||||
@@ -128,7 +131,10 @@ class BerryBlock(private val berryIdentifier: ResourceLocation, settings: Proper
|
||||
val newAge = curAge + 1
|
||||
if (newAge > FRUIT_AGE) return
|
||||
val newState = state.setValue(AGE, newAge)
|
||||
val treeEntity = world.getBlockEntity(pos) as BerryBlockEntity
|
||||
val treeEntity = world.getBlockEntity(pos) as? BerryBlockEntity? ?: run {
|
||||
world.setBlock(pos, Blocks.AIR.defaultBlockState(), UPDATE_CLIENTS)
|
||||
return
|
||||
}
|
||||
if (curAge == MATURE_AGE) {
|
||||
treeEntity.generateGrowthPoints(world, newState, pos, null)
|
||||
determineMutation(world, random, pos, newState)
|
||||
@@ -146,7 +152,7 @@ class BerryBlock(private val berryIdentifier: ResourceLocation, settings: Proper
|
||||
for (direction in this.lookupDirections) {
|
||||
val redirectedPos = pos.offset(direction.normal)
|
||||
val redirectedState = world.getBlockState(redirectedPos)
|
||||
val berryBlock = redirectedState.block as? BerryBlock ?: continue
|
||||
val berryBlock = redirectedState.block as? BerryBlock? ?: continue
|
||||
val berry = berryBlock.berry() ?: continue
|
||||
val mutation = this.berry()?.mutationWith(berry) ?: continue
|
||||
mutations += mutation
|
||||
@@ -160,7 +166,7 @@ class BerryBlock(private val berryIdentifier: ResourceLocation, settings: Proper
|
||||
treeEntity.decrementMulchDuration(world, pos, state)
|
||||
}
|
||||
val mutation = if (random.nextInt(1000) < mutateChance) mutations.random() else null
|
||||
(world.getBlockEntity(pos) as? BerryBlockEntity)?.let { blockEntity ->
|
||||
(world.getBlockEntity(pos) as? BerryBlockEntity?)?.let { blockEntity ->
|
||||
CobblemonEvents.BERRY_MUTATION_RESULT.post(BerryMutationResultEvent(berry, world, state, pos, berryMutationOffer.mutations, mutation)) { berryMutationResult ->
|
||||
berryMutationResult.pickedMutation?.let { mutation -> blockEntity.mutate(mutation) }
|
||||
}
|
||||
@@ -178,7 +184,7 @@ class BerryBlock(private val berryIdentifier: ResourceLocation, settings: Proper
|
||||
): Boolean {
|
||||
val underBlockState = world.getBlockState(pos.below())
|
||||
val validSoil = state.getValue(IS_ROOTED) || underBlockState.`is`(CobblemonBlockTags.BERRY_SOIL)
|
||||
val treeEntity = world.getBlockEntity(pos) as? BerryBlockEntity ?: return false
|
||||
val treeEntity = world.getBlockEntity(pos) as? BerryBlockEntity? ?: return false
|
||||
return getMulch(treeEntity) == MulchVariant.NONE && state.getValue(AGE) < FLOWER_AGE && validSoil
|
||||
}
|
||||
|
||||
@@ -353,7 +359,7 @@ class BerryBlock(private val berryIdentifier: ResourceLocation, settings: Proper
|
||||
fun getMulch(entity: BerryBlockEntity) = entity.mulchVariant
|
||||
|
||||
fun convertMulchToEntity(world: ServerLevel, state: BlockState, pos: BlockPos) {
|
||||
val entity = world.getBlockEntity(pos) as? BerryBlockEntity ?: return
|
||||
val entity = world.getBlockEntity(pos) as? BerryBlockEntity? ?: return
|
||||
if (state.getValue(MULCH) != MulchVariant.NONE && state.getValue(MULCH) != entity.mulchVariant) {
|
||||
entity.mulchVariant = state.getValue(MULCH)
|
||||
world.setBlockAndUpdate(pos, state.setValue(MULCH, MulchVariant.NONE))
|
||||
@@ -370,9 +376,9 @@ class BerryBlock(private val berryIdentifier: ResourceLocation, settings: Proper
|
||||
}
|
||||
|
||||
private fun harvestBerry(world: Level, state: BlockState, pos: BlockPos, player: Player? = null): Boolean {
|
||||
val blockEntity = world.getBlockEntity(pos) as? BerryBlockEntity ?: return false
|
||||
val blockEntity = world.getBlockEntity(pos) as? BerryBlockEntity? ?: return false
|
||||
blockEntity.harvest(world, state, pos, player).forEach { drop ->
|
||||
Block.popResource(world, pos, drop)
|
||||
popResource(world, pos, drop)
|
||||
}
|
||||
|
||||
val sound = if (player != null) CobblemonSounds.BERRY_HARVEST else SoundEvents.SHEEP_SHEAR
|
||||
|
||||
+1
-3
@@ -14,7 +14,6 @@ import com.cobblemon.mod.common.api.multiblock.MultiblockEntity
|
||||
import com.cobblemon.mod.common.api.multiblock.MultiblockStructure
|
||||
import com.cobblemon.mod.common.api.multiblock.builder.MultiblockStructureBuilder
|
||||
import com.cobblemon.mod.common.api.pokemon.PokemonProperties
|
||||
import com.cobblemon.mod.common.api.tms.TechnicalMachines
|
||||
import com.cobblemon.mod.common.api.types.ElementalTypes
|
||||
import com.cobblemon.mod.common.block.MonitorBlock
|
||||
import com.cobblemon.mod.common.block.multiblock.FossilMultiblockStructure
|
||||
@@ -307,8 +306,7 @@ open class FossilMultiblockEntity(
|
||||
private fun unlockTmForPlayer(player: ServerPlayer, stack: ItemStack) {
|
||||
if (stack.item !is TechnicalMachineItem) return
|
||||
val move = TMMoveComponent.getTMMove(stack) ?: return
|
||||
val tmId = TechnicalMachines.moveToTM[move]?.id ?: return
|
||||
player.tmList()?.learn(listOf(tmId))
|
||||
player.tmList().syncTMFromMove(move)
|
||||
}
|
||||
|
||||
private fun updateMonitorScreen() {
|
||||
|
||||
@@ -25,6 +25,7 @@ import net.minecraft.world.level.block.SoundType
|
||||
import net.minecraft.world.level.block.entity.BlockEntity
|
||||
import net.minecraft.world.level.block.entity.BlockEntityTicker
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType
|
||||
import net.minecraft.world.level.block.entity.CommandBlockEntity
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.minecraft.world.level.block.state.StateDefinition
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty
|
||||
@@ -80,11 +81,13 @@ class HabitatBlock(properties: Properties) : Block(properties), EntityBlock {
|
||||
}
|
||||
|
||||
override fun useWithoutItem(state: BlockState, level: Level, pos: BlockPos, player: Player, hitResult: BlockHitResult): InteractionResult {
|
||||
if (!level.isClientSide) {
|
||||
val be = level.getBlockEntity(pos) as? HabitatBlockEntity ?: return InteractionResult.PASS
|
||||
return be.onUse(player, hitResult)
|
||||
val blockEntity = level.getBlockEntity(pos)
|
||||
val be = level.getBlockEntity(pos) as? HabitatBlockEntity ?: return InteractionResult.PASS
|
||||
return if (blockEntity is HabitatBlockEntity && player.canUseGameMasterBlocks()) {
|
||||
be.onUse(player, hitResult)
|
||||
} else {
|
||||
InteractionResult.PASS
|
||||
}
|
||||
return InteractionResult.SUCCESS
|
||||
}
|
||||
|
||||
override fun getDrops(state: BlockState, params: LootParams.Builder): MutableList<ItemStack> {
|
||||
|
||||
@@ -60,10 +60,12 @@ class HabitatBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
|
||||
var spawningStyle: HabitatSpawningStyle = ActivatedHabitatSpawning(this)
|
||||
|
||||
var numberOfPhases: Int = 1
|
||||
var phaseOrder = HabitatPhaseOrder.SIMPLE
|
||||
var currentPhase = 1
|
||||
|
||||
val numberOfPhases: Int
|
||||
get() = pool.getPhaseCount()
|
||||
|
||||
var levelRange: IntRange = 1..Cobblemon.config.maxPokemonLevel
|
||||
var modifiers: PokemonProperties = PokemonProperties()
|
||||
var pool: HabitatPool = HabitatPool.default()
|
||||
@@ -139,7 +141,6 @@ class HabitatBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
val activatedSettings = habitatSettingsDTO.activatedSettings
|
||||
val naturalSettings = habitatSettingsDTO.naturalSettings
|
||||
val isActivated = habitatSettingsDTO.isActivatedSpawning
|
||||
this.numberOfPhases = habitatSettingsDTO.numberOfPhases
|
||||
this.phaseOrder = habitatSettingsDTO.phaseOrder
|
||||
this.levelRange = habitatSettingsDTO.levelRange
|
||||
this.modifiers = PokemonProperties.parse(habitatSettingsDTO.modifiers)
|
||||
@@ -169,7 +170,6 @@ class HabitatBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
override fun saveAdditional(tag: CompoundTag, registryLookup: HolderLookup.Provider) {
|
||||
super.saveAdditional(tag, registryLookup)
|
||||
tag.putString(DataKeys.HABITAT_MIMIC, mimicId.toString())
|
||||
tag.putInt(DataKeys.HABITAT_PHASE_COUNT, numberOfPhases)
|
||||
tag.putString(DataKeys.HABITAT_PHASE_ORDER, phaseOrder.toString())
|
||||
// Only save the level range when it's a non-trivial one
|
||||
if (levelRange.first != 1 || levelRange.last != Cobblemon.config.maxPokemonLevel) {
|
||||
@@ -201,7 +201,6 @@ class HabitatBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
return // Client doesn't need to try loading the rest
|
||||
}
|
||||
|
||||
numberOfPhases = tag.getInt(DataKeys.HABITAT_PHASE_COUNT)
|
||||
phaseOrder = HabitatPhaseOrder.valueOf(tag.getString(DataKeys.HABITAT_PHASE_ORDER))
|
||||
levelRange = tag.getString(DataKeys.HABITAT_LEVEL_RANGE).takeIf { it.isNotBlank() }?.let(IntRangeAdapter::deserialize) ?: 1..Cobblemon.config.maxPokemonLevel
|
||||
modifiers = tag.getString(DataKeys.HABITAT_MODIFIERS).takeIf { it.isNotBlank() }?.let(PokemonProperties::parse) ?: PokemonProperties()
|
||||
|
||||
@@ -10,11 +10,13 @@ package com.cobblemon.mod.common.block.tmmachine
|
||||
|
||||
import com.cobblemon.mod.common.CobblemonItems
|
||||
import com.cobblemon.mod.common.CobblemonMenuType
|
||||
import com.cobblemon.mod.common.CobblemonNetwork.sendPacket
|
||||
import com.cobblemon.mod.common.api.moves.Moves
|
||||
import com.cobblemon.mod.common.api.tms.TechnicalMachine
|
||||
import com.cobblemon.mod.common.api.tms.TechnicalMachines
|
||||
import com.cobblemon.mod.common.block.entity.TMMachineBlockEntity
|
||||
import com.cobblemon.mod.common.util.itemRegistry
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import com.cobblemon.mod.common.net.messages.client.ui.SynchronizeActiveTMPacket
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.util.Mth
|
||||
import net.minecraft.world.Container
|
||||
import net.minecraft.world.SimpleContainer
|
||||
@@ -35,38 +37,20 @@ class TMMachineMenu(menuType: MenuType<*>, syncId: Int) : AbstractContainerMenu(
|
||||
var inventory: Container? = null
|
||||
var containerData: ContainerData? = null
|
||||
|
||||
var currentlySelectedTM: TechnicalMachine? = null
|
||||
private var lastSelectedTM: TechnicalMachine? = null
|
||||
|
||||
var onSelectedTMUpdate: (TechnicalMachine?) -> Unit = {}
|
||||
|
||||
constructor(syncId: Int, playerInventory: Inventory) : this(CobblemonMenuType.TM_MACHINE, syncId) {
|
||||
this.playerInventory = playerInventory
|
||||
this.inventory = SimpleContainer(5)
|
||||
this.containerData = SimpleContainerData(6)
|
||||
this.tmMachineEntity = (inventory as? TMMachineBlockEntity.TMMachineBlockInventory)?.blockEntity
|
||||
|
||||
this.addDataSlots(containerData!!)
|
||||
inventory?.startOpen(playerInventory.player)
|
||||
|
||||
val startX = 15
|
||||
val startY = 144
|
||||
val slotWidth = 18
|
||||
val slotHeight = 18
|
||||
|
||||
for (row in 0..2) {
|
||||
for (col in 0..8) {
|
||||
this.addSlot(Slot(playerInventory, 9 + (row * 9) + col, startX + (slotWidth * col), startY + (slotHeight * row)))
|
||||
}
|
||||
}
|
||||
for (col in 0..8) {
|
||||
this.addSlot(Slot(playerInventory, col, startX + (slotWidth * col), startY + 58))
|
||||
}
|
||||
|
||||
val container = inventory
|
||||
container?.let {
|
||||
this.addSlot(TMResultSlot(container, RESULT_SLOT, startX + 37, startY - 28)) // Output slot
|
||||
this.addSlot(BlankTMSlot(container, BLANK_TM_SLOT, startX + 90, startY - 28)) // Blank TM
|
||||
for (index in INGREDIENT_SLOTS) {
|
||||
this.addSlot(Slot(container, index, startX + 114 + (18 * (index - INGREDIENT_SLOTS.first)), startY - 28))
|
||||
}
|
||||
}
|
||||
this.addSlotListener(this)
|
||||
initiateSlots()
|
||||
}
|
||||
|
||||
constructor(syncId: Int, playerInventory: Inventory, inventory: Container, containerData: ContainerData) : this(CobblemonMenuType.TM_MACHINE, syncId) {
|
||||
@@ -78,6 +62,20 @@ class TMMachineMenu(menuType: MenuType<*>, syncId: Int) : AbstractContainerMenu(
|
||||
this.addDataSlots(containerData)
|
||||
inventory.startOpen(playerInventory.player)
|
||||
|
||||
initiateSlots()
|
||||
|
||||
tmMachineEntity?.let {
|
||||
val move = Moves.getByName(it.activeMove)
|
||||
move.let {
|
||||
currentlySelectedTM = TechnicalMachines.moveToTM[it]
|
||||
synchronizeSelectedTM()
|
||||
}
|
||||
}
|
||||
|
||||
this.addSlotListener(this)
|
||||
}
|
||||
|
||||
private fun initiateSlots() {
|
||||
val startX = 15
|
||||
val startY = 144
|
||||
val slotWidth = 18
|
||||
@@ -92,7 +90,7 @@ class TMMachineMenu(menuType: MenuType<*>, syncId: Int) : AbstractContainerMenu(
|
||||
this.addSlot(Slot(playerInventory, col, startX + (slotWidth * col), startY + 58))
|
||||
}
|
||||
|
||||
val container = inventory
|
||||
val container = inventory!!
|
||||
container.let {
|
||||
this.addSlot(TMResultSlot(container, RESULT_SLOT, startX + 37, startY - 28)) // Output slot
|
||||
this.addSlot(BlankTMSlot(container, BLANK_TM_SLOT, startX + 90, startY - 28)) // Blank TM
|
||||
@@ -100,7 +98,6 @@ class TMMachineMenu(menuType: MenuType<*>, syncId: Int) : AbstractContainerMenu(
|
||||
this.addSlot(Slot(container, index, startX + 114 + (18 * (index - INGREDIENT_SLOTS.first)), startY - 28))
|
||||
}
|
||||
}
|
||||
this.addSlotListener(this)
|
||||
}
|
||||
|
||||
override fun quickMoveStack(player: Player, index: Int): ItemStack {
|
||||
@@ -207,4 +204,25 @@ class TMMachineMenu(menuType: MenuType<*>, syncId: Int) : AbstractContainerMenu(
|
||||
override fun dataChanged(containerMenu: AbstractContainerMenu, dataSlotIndex: Int, value: Int) {
|
||||
broadcastChanges()
|
||||
}
|
||||
|
||||
fun synchronizeSelectedTM() {
|
||||
val serverPlayer = playerInventory?.player as? ServerPlayer ?: return
|
||||
serverPlayer.sendPacket(SynchronizeActiveTMPacket(currentlySelectedTM))
|
||||
lastSelectedTM = currentlySelectedTM
|
||||
}
|
||||
|
||||
override fun sendAllDataToRemote() {
|
||||
super.sendAllDataToRemote()
|
||||
synchronizeSelectedTM()
|
||||
}
|
||||
|
||||
override fun broadcastChanges() {
|
||||
super.broadcastChanges()
|
||||
if (lastSelectedTM != currentlySelectedTM) synchronizeSelectedTM()
|
||||
}
|
||||
|
||||
fun clientSetSelectedTM(tm: TechnicalMachine?) {
|
||||
currentlySelectedTM = tm
|
||||
onSelectedTMUpdate(tm)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ object MountedCameraTypeHandler {
|
||||
return
|
||||
}
|
||||
val currentCameraType = mc.options.cameraType
|
||||
if (currentCameraType != unmountedCameraType) {
|
||||
if (Cobblemon.config.rememberRidingCamera && currentCameraType != unmountedCameraType) {
|
||||
mc.options.cameraType = unmountedCameraType
|
||||
}
|
||||
val data = ClientPersistedData.ridingPerspectives
|
||||
|
||||
@@ -130,20 +130,25 @@ class PartyOverlay : Gui(Minecraft.getInstance()) {
|
||||
val party = CobblemonClient.storage.party
|
||||
val matrices = context.pose()
|
||||
if (party.slots.none { it != null }) {
|
||||
if (CobblemonClient.clientPlayerData.promptStarter &&
|
||||
if (!this.attachedToast &&
|
||||
CobblemonClient.clientPlayerData.promptStarter &&
|
||||
!CobblemonClient.clientPlayerData.starterLocked &&
|
||||
!CobblemonClient.clientPlayerData.starterSelected &&
|
||||
!CobblemonClient.checkedStarterScreen
|
||||
) {
|
||||
if (!this.attachedToast) {
|
||||
// Adding starter toast on start and connect of client to server.
|
||||
minecraft.toasts.addToast(this.starterToast)
|
||||
this.attachedToast = true
|
||||
}
|
||||
// Adding starter toast on start and connect of client to server.
|
||||
minecraft.toasts.addToast(this.starterToast)
|
||||
this.attachedToast = true
|
||||
}
|
||||
return // Don't render the stuff below if no Pokémon in party
|
||||
}
|
||||
|
||||
// Without this simply capturing a Pokémon instead of opening the starter screen won't dismiss the toast
|
||||
if (!CobblemonClient.checkedStarterScreen) {
|
||||
CobblemonClient.checkedStarterScreen = true
|
||||
starterToast.nextVisibility = Toast.Visibility.HIDE
|
||||
}
|
||||
|
||||
val totalHeight = party.slots.size * SLOT_HEIGHT
|
||||
val midY = minecraft.window.guiScaledHeight / 2
|
||||
val startY = (midY - totalHeight / 2) - ((SLOT_SPACING * 5) / 2)
|
||||
|
||||
@@ -27,10 +27,18 @@ import net.minecraft.client.renderer.RenderType
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.util.Mth
|
||||
import net.minecraft.world.phys.Vec3
|
||||
import org.joml.Quaternionf
|
||||
import org.joml.Vector3f
|
||||
import kotlin.math.atan
|
||||
|
||||
enum class ProfileTransformType {
|
||||
PROFILE,
|
||||
NONE,
|
||||
POKEDEX,
|
||||
SUMMARY,
|
||||
}
|
||||
|
||||
fun drawProfilePokemon(
|
||||
renderablePokemon: RenderablePokemon,
|
||||
matrixStack: PoseStack,
|
||||
@@ -39,7 +47,7 @@ fun drawProfilePokemon(
|
||||
state: PosableState,
|
||||
partialTicks: Float,
|
||||
scale: Float = 20F,
|
||||
applyProfileTransform: Boolean = true,
|
||||
profileTransformType: ProfileTransformType = ProfileTransformType.PROFILE,
|
||||
applyBaseScale: Boolean = false,
|
||||
r: Float = 1F,
|
||||
g: Float = 1F,
|
||||
@@ -56,7 +64,7 @@ fun drawProfilePokemon(
|
||||
state = state.also { it.currentAspects = renderablePokemon.aspects },
|
||||
partialTicks = partialTicks,
|
||||
scale = scale,
|
||||
applyProfileTransform = applyProfileTransform,
|
||||
profileTransformType = profileTransformType,
|
||||
applyBaseScale = applyBaseScale,
|
||||
r = r,
|
||||
g = g,
|
||||
@@ -75,7 +83,7 @@ fun drawProfilePokemon(
|
||||
state: PosableState,
|
||||
partialTicks: Float,
|
||||
scale: Float = 20F,
|
||||
applyProfileTransform: Boolean = true,
|
||||
profileTransformType: ProfileTransformType = ProfileTransformType.PROFILE,
|
||||
applyBaseScale: Boolean = false,
|
||||
doQuirks: Boolean = false,
|
||||
r: Float = 1F,
|
||||
@@ -114,18 +122,38 @@ fun drawProfilePokemon(
|
||||
state.setPoseToFirstSuitable(poseType)
|
||||
state.updatePartialTicks(partialTicks)
|
||||
|
||||
if (applyProfileTransform) {
|
||||
matrixStack.translate(
|
||||
model.profileTranslation.x,
|
||||
model.profileTranslation.y + 1.5 * model.profileScale,
|
||||
model.profileTranslation.z - 4.0
|
||||
)
|
||||
matrixStack.scale(model.profileScale, model.profileScale, 1 / model.profileScale)} else {
|
||||
if (profileTransformType == ProfileTransformType.NONE) {
|
||||
matrixStack.translate(0F, 0F, -4.0F)
|
||||
if (applyBaseScale) {
|
||||
matrixStack.scale(baseScale, baseScale, 1 / baseScale)
|
||||
}
|
||||
} else {
|
||||
var profileScale: Float
|
||||
var profileTranslation: Vec3
|
||||
|
||||
when (profileTransformType) {
|
||||
ProfileTransformType.POKEDEX -> {
|
||||
profileScale = model.profilePokedexScale ?: model.profileScale
|
||||
profileTranslation = model.profilePokedexTranslation ?: model.profileTranslation
|
||||
}
|
||||
ProfileTransformType.SUMMARY -> {
|
||||
profileScale = model.profileSummaryScale ?: model.profileScale
|
||||
profileTranslation = model.profileSummaryTranslation ?: model.profileTranslation
|
||||
}
|
||||
else -> {
|
||||
profileScale = model.profileScale
|
||||
profileTranslation = model.profileTranslation
|
||||
}
|
||||
}
|
||||
|
||||
matrixStack.translate(
|
||||
profileTranslation.x,
|
||||
profileTranslation.y + 1.5 * profileScale,
|
||||
profileTranslation.z - 4.0
|
||||
)
|
||||
matrixStack.scale(profileScale, profileScale, 1 / profileScale)
|
||||
}
|
||||
|
||||
matrixStack.mulPose(rotation)
|
||||
|
||||
model.applyAnimations(null, state, 0F, 0F, 0F, headYaw, headPitch)
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.gui
|
||||
|
||||
import com.cobblemon.mod.common.Cobblemon
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.FloatingState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.repository.VaryingModelRepository
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
fun handleProfileDebugKeys(keyCode: Int, poserResourceLocation: ResourceLocation, state: FloatingState) {
|
||||
if (!Cobblemon.config.enableDebugKeys) {
|
||||
return
|
||||
}
|
||||
val model = VaryingModelRepository.getPoser(poserResourceLocation, state)
|
||||
|
||||
val delta = when (keyCode) {
|
||||
InputConstants.KEY_UP -> Vec3(0.0, -0.01, 0.0)
|
||||
InputConstants.KEY_DOWN -> Vec3(0.0, 0.01, 0.0)
|
||||
InputConstants.KEY_LEFT -> Vec3(-0.01, 0.0, 0.0)
|
||||
InputConstants.KEY_RIGHT -> Vec3(0.01, 0.0, 0.0)
|
||||
else -> null
|
||||
}
|
||||
|
||||
if (delta != null) {
|
||||
model.profileTranslation = model.profileTranslation.add(delta)
|
||||
model.profileSummaryTranslation = model.profileSummaryTranslation?.add(delta)
|
||||
model.profilePokedexTranslation = model.profilePokedexTranslation?.add(delta)
|
||||
}
|
||||
|
||||
val scaleDelta = when (keyCode) {
|
||||
InputConstants.KEY_EQUALS -> 0.01F
|
||||
InputConstants.KEY_MINUS -> -0.01F
|
||||
else -> null
|
||||
}
|
||||
|
||||
if (scaleDelta != null) {
|
||||
model.profileScale += scaleDelta
|
||||
model.profileSummaryScale = model.profileSummaryScale?.plus(scaleDelta)
|
||||
model.profilePokedexScale = model.profilePokedexScale?.plus(scaleDelta)
|
||||
}
|
||||
}
|
||||
|
||||
fun logProfileTranslations(poserResourceLocation: ResourceLocation, state: FloatingState) {
|
||||
if (!Cobblemon.config.enableDebugKeys) {
|
||||
return
|
||||
}
|
||||
|
||||
val model = VaryingModelRepository.getPoser(poserResourceLocation, state)
|
||||
val player = Minecraft.getInstance().player
|
||||
|
||||
fun Double.f2() = "%.2f".format(this)
|
||||
fun Float.f2() = "%.2f".format(this)
|
||||
|
||||
fun sendTranslation(name: String, translation: Vec3) {
|
||||
player?.sendSystemMessage(Component.literal("$name Translation: (${translation.x.f2()}, ${translation.y.f2()}, ${translation.z.f2()})"))
|
||||
}
|
||||
|
||||
fun sendScale(name: String, scale: Float) {
|
||||
player?.sendSystemMessage(Component.literal("$name Scale: ${scale.f2()}"))
|
||||
}
|
||||
|
||||
fun logTranslation(name: String, translation: Vec3) {
|
||||
Cobblemon.LOGGER.info("override var ${name.replaceFirstChar(Char::lowercase)}Translation = Vec3(${translation.x.f2()}, ${translation.y.f2()}, ${translation.z.f2()})")
|
||||
}
|
||||
|
||||
fun logScale(name: String, scale: Float) {
|
||||
Cobblemon.LOGGER.info("override var ${name.replaceFirstChar(Char::lowercase)}Scale = ${scale.f2()}F")
|
||||
}
|
||||
|
||||
sendTranslation("Profile", model.profileTranslation)
|
||||
sendScale("Profile", model.profileScale)
|
||||
|
||||
model.profileSummaryTranslation?.let { sendTranslation("Summary Profile", it) }
|
||||
model.profileSummaryScale?.let { sendScale("Summary Profile", it) }
|
||||
|
||||
model.profilePokedexTranslation?.let { sendTranslation("Pokedex Profile", it) }
|
||||
model.profilePokedexScale?.let { sendScale("Pokedex Profile", it) }
|
||||
|
||||
logTranslation("Profile", model.profileTranslation)
|
||||
logScale("Profile", model.profileScale)
|
||||
|
||||
model.profileSummaryTranslation?.let { logTranslation("ProfileSummary", it) }
|
||||
model.profileSummaryScale?.let { logScale("ProfileSummary", it) }
|
||||
|
||||
model.profilePokedexTranslation?.let { logTranslation("ProfilePokedex", it) }
|
||||
model.profilePokedexScale?.let { logScale("ProfilePokedex", it) }
|
||||
}
|
||||
+1
@@ -41,6 +41,7 @@ class CobblemonConfigScreen(
|
||||
const val WIDGET_HEIGHT = SLOT_HEIGHT - PADDING
|
||||
const val LABEL_Y_OFFSET = 4
|
||||
const val WIDGET_Y_OFFSET = 0
|
||||
const val LABEL_MAX_WIDTH = SLOT_WIDTH - RESET_SLOT_WIDTH - WIDGET_WIDTH - PADDING * 2
|
||||
}
|
||||
|
||||
val clonedConfig = Cobblemon.config.clone()
|
||||
|
||||
+12
-8
@@ -8,17 +8,18 @@
|
||||
|
||||
package com.cobblemon.mod.common.client.gui.config.variable
|
||||
|
||||
import com.cobblemon.mod.common.client.gui.config.CobblemonConfigScreen.Companion.LABEL_Y_OFFSET
|
||||
import com.cobblemon.mod.common.client.gui.config.CobblemonConfigScreen.Companion.LABEL_MAX_WIDTH
|
||||
import com.cobblemon.mod.common.client.gui.config.CobblemonConfigScreen.Companion.RESET_SLOT_WIDTH
|
||||
import com.cobblemon.mod.common.client.gui.config.CobblemonConfigScreen.Companion.SLOT_WIDTH
|
||||
import com.cobblemon.mod.common.client.gui.config.CobblemonConfigScreen.Companion.WIDGET_HEIGHT
|
||||
import com.cobblemon.mod.common.client.gui.config.CobblemonConfigScreen.Companion.WIDGET_Y_OFFSET
|
||||
import com.cobblemon.mod.common.client.gui.config.CobblemonConfigVariableList
|
||||
import com.cobblemon.mod.common.client.gui.config.CobblemonConfigVariableList.CobblemonConfigVariableListEntry
|
||||
import com.cobblemon.mod.common.client.render.drawScaledText
|
||||
import com.cobblemon.mod.common.client.render.drawScrollingText
|
||||
import com.cobblemon.mod.common.config.CobblemonConfig
|
||||
import com.cobblemon.mod.common.config.CobblemonConfigField
|
||||
import com.cobblemon.mod.common.util.lang
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.components.Button
|
||||
import net.minecraft.client.gui.components.Tooltip
|
||||
@@ -91,12 +92,15 @@ abstract class CobblemonConfigVariable(
|
||||
val x = getX(left)
|
||||
val y = getY(top)
|
||||
|
||||
drawScaledText(
|
||||
context = context,
|
||||
text = labelLang,
|
||||
x = getX(left),
|
||||
y = getY(top) + LABEL_Y_OFFSET,
|
||||
shadow = true
|
||||
drawScrollingText(
|
||||
context,
|
||||
Minecraft.getInstance().font,
|
||||
labelLang,
|
||||
x,
|
||||
y + WIDGET_Y_OFFSET,
|
||||
x + LABEL_MAX_WIDTH,
|
||||
y + WIDGET_Y_OFFSET + WIDGET_HEIGHT,
|
||||
-1
|
||||
)
|
||||
|
||||
resetButton.x = x + SLOT_WIDTH - RESET_SLOT_WIDTH
|
||||
|
||||
+18
-29
@@ -115,35 +115,19 @@ class HabitatEditGUI(
|
||||
addOptionWidget(mimicInput)
|
||||
y += spacing
|
||||
|
||||
labels.add(lang("ui.edit.habitat.phase_number") to (10 to y))
|
||||
y += 12
|
||||
val phasesInput = EditBox(font, 10, y, buttonWidth, 20, "Phases".text())
|
||||
phasesInput.value = habitatSettingsDTO.numberOfPhases.toString()
|
||||
phasesInput.setResponder { value ->
|
||||
val phases = value.toIntOrNull()
|
||||
val valid = phases != null && phases > 0
|
||||
if (valid) {
|
||||
habitatSettingsDTO.numberOfPhases = phases
|
||||
}
|
||||
phasesInput.setTextColor(if (valid) validTextColor else invalidTextColor)
|
||||
setFieldValidity("phases", valid, "ui.edit.habitat.validation.phases")
|
||||
// Phase setting only visible if there's more than one phase
|
||||
val phaseCount = habitatSettingsDTO.pool.toHabitatPool()?.getPhaseCount() ?: 1
|
||||
if (phaseCount > 1) {
|
||||
phaseOrderButton = addOptionWidget(
|
||||
Button.builder(getPhaseOrderText()) {
|
||||
val orders = HabitatPhaseOrder.entries
|
||||
val currentIndex = orders.indexOf(habitatSettingsDTO.phaseOrder)
|
||||
habitatSettingsDTO.phaseOrder = orders[(currentIndex + 1) % orders.size]
|
||||
refresh()
|
||||
}.bounds(10, y, buttonWidth, 20).build()
|
||||
)
|
||||
y += spacing
|
||||
}
|
||||
val initialPhases = phasesInput.value.toIntOrNull()
|
||||
val initialPhasesValid = initialPhases != null && initialPhases > 0
|
||||
phasesInput.setTextColor(if (initialPhasesValid) validTextColor else invalidTextColor)
|
||||
setFieldValidity("phases", initialPhasesValid, "ui.edit.habitat.validation.phases")
|
||||
addOptionWidget(phasesInput)
|
||||
y += spacing
|
||||
|
||||
phaseOrderButton = addOptionWidget(
|
||||
Button.builder(getPhaseOrderText()) {
|
||||
val orders = HabitatPhaseOrder.entries
|
||||
val currentIndex = orders.indexOf(habitatSettingsDTO.phaseOrder)
|
||||
habitatSettingsDTO.phaseOrder = orders[(currentIndex + 1) % orders.size]
|
||||
refresh()
|
||||
}.bounds(10, y, buttonWidth, 20).build()
|
||||
)
|
||||
y += spacing
|
||||
|
||||
labels.add(lang("ui.edit.habitat.level_range") to (10 to y))
|
||||
y += 12
|
||||
@@ -390,7 +374,10 @@ class HabitatEditGUI(
|
||||
}
|
||||
|
||||
fun refresh() {
|
||||
phaseOrderButton.message = getPhaseOrderText()
|
||||
val phaseCount = habitatSettingsDTO.pool.toHabitatPool()?.getPhaseCount() ?: 1
|
||||
if (phaseCount > 1 && ::phaseOrderButton.isInitialized) {
|
||||
phaseOrderButton.message = getPhaseOrderText()
|
||||
}
|
||||
spawnModeButton.message = getSpawnModeText()
|
||||
poolSelectorButton.message = getPoolText()
|
||||
viewPoolButton.message = getViewPoolText()
|
||||
@@ -439,6 +426,7 @@ class HabitatEditGUI(
|
||||
}
|
||||
habitatSettingsDTO.pool = newCustomPool
|
||||
}
|
||||
rebuildWidgets()
|
||||
return
|
||||
}
|
||||
|
||||
@@ -451,6 +439,7 @@ class HabitatEditGUI(
|
||||
}
|
||||
|
||||
habitatSettingsDTO.pool = selectedPool
|
||||
rebuildWidgets()
|
||||
}
|
||||
|
||||
private fun validateLevelRangeInputs() {
|
||||
|
||||
+4
-6
@@ -45,7 +45,6 @@ class HabitatSpawnEditorGUI(
|
||||
private val actionButtonBottomMargin = 10
|
||||
private val validTextColor = 0xFFFFFF
|
||||
private val invalidTextColor = 0xFF5555
|
||||
private val moonPhaseRange = 0..7
|
||||
private lateinit var positionTypeButton: Button
|
||||
private lateinit var bucketButton: Button
|
||||
private lateinit var timeOfDayButton: Button
|
||||
@@ -185,7 +184,7 @@ class HabitatSpawnEditorGUI(
|
||||
phasesInput.setTextColor(validTextColor)
|
||||
setFieldValidity("phases_list", true, "ui.edit.habitat.validation.phases_list")
|
||||
} else {
|
||||
val parsed = parseMoonPhases(value)
|
||||
val parsed = parsePhases(value)
|
||||
val valid = parsed != null
|
||||
if (valid) {
|
||||
spawn.phases = parsed
|
||||
@@ -194,7 +193,7 @@ class HabitatSpawnEditorGUI(
|
||||
setFieldValidity("phases_list", valid, "ui.edit.habitat.validation.phases_list")
|
||||
}
|
||||
}
|
||||
val initialPhasesValid = phasesInput.value.isBlank() || parseMoonPhases(phasesInput.value) != null
|
||||
val initialPhasesValid = phasesInput.value.isBlank() || parsePhases(phasesInput.value) != null
|
||||
phasesInput.setTextColor(if (initialPhasesValid) validTextColor else invalidTextColor)
|
||||
setFieldValidity("phases_list", initialPhasesValid, "ui.edit.habitat.validation.phases_list")
|
||||
addOptionWidget(phasesInput)
|
||||
@@ -332,7 +331,7 @@ class HabitatSpawnEditorGUI(
|
||||
return runCatching { PokemonSpecies.getByName(lowered) }.getOrNull()
|
||||
}
|
||||
|
||||
private fun parseMoonPhases(raw: String): IntRanges? {
|
||||
private fun parsePhases(raw: String): IntRanges? {
|
||||
val ranges = mutableListOf<IntRange>()
|
||||
val tokens = raw.split(",").map(String::trim)
|
||||
if (tokens.isEmpty() || tokens.any { it.isEmpty() }) {
|
||||
@@ -344,13 +343,12 @@ class HabitatSpawnEditorGUI(
|
||||
val range = when (parts.size) {
|
||||
1 -> {
|
||||
val value = parts[0].toIntOrNull() ?: return null
|
||||
if (value !in moonPhaseRange) return null
|
||||
value..value
|
||||
}
|
||||
2 -> {
|
||||
val start = parts[0].toIntOrNull() ?: return null
|
||||
val end = parts[1].toIntOrNull() ?: return null
|
||||
if (start !in moonPhaseRange || end !in moonPhaseRange || start > end) {
|
||||
if (start > end) {
|
||||
return null
|
||||
}
|
||||
start..end
|
||||
|
||||
@@ -32,6 +32,8 @@ import com.cobblemon.mod.common.client.ClientMoLangFunctions.setupClient
|
||||
import com.cobblemon.mod.common.client.CobblemonClient
|
||||
import com.cobblemon.mod.common.client.CobblemonResources
|
||||
import com.cobblemon.mod.common.client.gui.CobblemonRenderable
|
||||
import com.cobblemon.mod.common.client.gui.handleProfileDebugKeys
|
||||
import com.cobblemon.mod.common.client.gui.logProfileTranslations
|
||||
import com.cobblemon.mod.common.client.gui.pokedex.PokedexGUIConstants.BASE_HEIGHT
|
||||
import com.cobblemon.mod.common.client.gui.pokedex.PokedexGUIConstants.BASE_WIDTH
|
||||
import com.cobblemon.mod.common.client.gui.pokedex.PokedexGUIConstants.HALF_OVERLAY_WIDTH
|
||||
@@ -427,6 +429,11 @@ class PokedexGUI private constructor(
|
||||
override fun onClose() {
|
||||
if (blockPos != null) AdjustBlockEntityViewerCountPacket(blockPos, false).sendToServer()
|
||||
playSound(CobblemonSounds.POKEDEX_CLOSE)
|
||||
|
||||
selectedEntry?.speciesId?.let { speciesId ->
|
||||
logProfileTranslations(speciesId, pokemonInfoWidget.state)
|
||||
}
|
||||
|
||||
super.onClose()
|
||||
}
|
||||
|
||||
@@ -757,6 +764,12 @@ class PokedexGUI private constructor(
|
||||
return true
|
||||
}
|
||||
|
||||
if (!searchWidget.isFocused) {
|
||||
selectedEntry?.speciesId?.let { speciesId ->
|
||||
handleProfileDebugKeys(keyCode, speciesId, pokemonInfoWidget.state)
|
||||
}
|
||||
}
|
||||
|
||||
return super.keyPressed(keyCode, scanCode, modifiers)
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -22,6 +22,7 @@ import com.cobblemon.mod.common.api.types.ElementalType
|
||||
import com.cobblemon.mod.common.client.ClientMoLangFunctions.setupClient
|
||||
import com.cobblemon.mod.common.client.CobblemonClient
|
||||
import com.cobblemon.mod.common.client.CobblemonResources
|
||||
import com.cobblemon.mod.common.client.gui.ProfileTransformType
|
||||
import com.cobblemon.mod.common.client.gui.TypeIcon
|
||||
import com.cobblemon.mod.common.client.gui.drawProfilePokemon
|
||||
import com.cobblemon.mod.common.client.gui.pokedex.PokedexGUIConstants.HALF_OVERLAY_HEIGHT
|
||||
@@ -386,7 +387,8 @@ class PokemonInfoWidget(val pX: Int, val pY: Int, val updateForm: (PokedexForm)
|
||||
partialTicks = delta,
|
||||
rotation = Quaternionf().fromEulerXYZDegrees(rotationVector),
|
||||
state = state,
|
||||
blockLight = 15
|
||||
blockLight = 15,
|
||||
profileTransformType = ProfileTransformType.POKEDEX,
|
||||
)
|
||||
|
||||
matrices.popPose()
|
||||
|
||||
+2
-1
@@ -11,6 +11,7 @@ package com.cobblemon.mod.common.client.gui.pokedex.widgets
|
||||
import com.cobblemon.mod.common.api.gui.blitk
|
||||
import com.cobblemon.mod.common.api.text.bold
|
||||
import com.cobblemon.mod.common.client.CobblemonResources
|
||||
import com.cobblemon.mod.common.client.gui.ProfileTransformType
|
||||
import com.cobblemon.mod.common.client.gui.drawProfilePokemon
|
||||
import com.cobblemon.mod.common.client.gui.pokedex.PokedexGUIConstants.HALF_OVERLAY_WIDTH
|
||||
import com.cobblemon.mod.common.client.gui.pokedex.PokedexGUIConstants.POKEMON_DESCRIPTION_HEIGHT
|
||||
@@ -90,7 +91,7 @@ class SizeWidget(val pX: Int, val pY: Int) : SoundlessWidget(
|
||||
rotation = Quaternionf().fromEulerXYZDegrees(Vector3f(0F, 0F, 0F)),
|
||||
state = FloatingState(),
|
||||
scale = modelScale,
|
||||
applyProfileTransform = false,
|
||||
profileTransformType = ProfileTransformType.NONE,
|
||||
applyBaseScale = true,
|
||||
r = 0F,
|
||||
g = 0F,
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
|
||||
package com.cobblemon.mod.common.client.gui.summary
|
||||
|
||||
import com.cobblemon.mod.common.Cobblemon
|
||||
import com.cobblemon.mod.common.CobblemonItems
|
||||
import com.cobblemon.mod.common.CobblemonNetwork.sendToServer
|
||||
import com.cobblemon.mod.common.CobblemonSounds
|
||||
@@ -21,14 +20,8 @@ import com.cobblemon.mod.common.api.text.bold
|
||||
import com.cobblemon.mod.common.api.text.text
|
||||
import com.cobblemon.mod.common.client.CobblemonClient
|
||||
import com.cobblemon.mod.common.client.CobblemonResources
|
||||
import com.cobblemon.mod.common.client.gui.CobblemonRenderable
|
||||
import com.cobblemon.mod.common.client.gui.ExitButton
|
||||
import com.cobblemon.mod.common.client.gui.TypeIcon
|
||||
import com.cobblemon.mod.common.client.gui.summary.widgets.EvolutionSelectScreen
|
||||
import com.cobblemon.mod.common.client.gui.summary.widgets.MarkingsWidget
|
||||
import com.cobblemon.mod.common.client.gui.summary.widgets.ModelWidget
|
||||
import com.cobblemon.mod.common.client.gui.summary.widgets.NicknameEntryWidget
|
||||
import com.cobblemon.mod.common.client.gui.summary.widgets.PartyWidget
|
||||
import com.cobblemon.mod.common.client.gui.*
|
||||
import com.cobblemon.mod.common.client.gui.summary.widgets.*
|
||||
import com.cobblemon.mod.common.client.gui.summary.widgets.screens.SummaryTab
|
||||
import com.cobblemon.mod.common.client.gui.summary.widgets.screens.info.InfoWidget
|
||||
import com.cobblemon.mod.common.client.gui.summary.widgets.screens.marks.MarksWidget
|
||||
@@ -37,7 +30,6 @@ import com.cobblemon.mod.common.client.gui.summary.widgets.screens.moves.MovesWi
|
||||
import com.cobblemon.mod.common.client.gui.summary.widgets.screens.stats.StatWidget
|
||||
import com.cobblemon.mod.common.client.keybind.keybinds.SummaryBinding
|
||||
import com.cobblemon.mod.common.client.render.drawScaledText
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.repository.VaryingModelRepository
|
||||
import com.cobblemon.mod.common.net.messages.server.pokemon.update.SetItemHiddenPacket
|
||||
import com.cobblemon.mod.common.net.messages.server.storage.party.MovePartyPokemonPacket
|
||||
import com.cobblemon.mod.common.net.messages.server.storage.party.SwapPartyPokemonPacket
|
||||
@@ -715,27 +707,9 @@ class Summary private constructor(party: Collection<Pokemon?>, private val edita
|
||||
) {
|
||||
this.focused = null
|
||||
}
|
||||
if (Cobblemon.config.enableDebugKeys) {
|
||||
val model = VaryingModelRepository.getPoser(selectedPokemon.species.resourceIdentifier, modelWidget.state)
|
||||
if (keyCode == InputConstants.KEY_UP) {
|
||||
model.profileTranslation = model.profileTranslation.add(0.0, -0.01, 0.0)
|
||||
}
|
||||
if (keyCode == InputConstants.KEY_DOWN) {
|
||||
model.profileTranslation = model.profileTranslation.add(0.0, 0.01, 0.0)
|
||||
}
|
||||
if (keyCode == InputConstants.KEY_LEFT) {
|
||||
model.profileTranslation = model.profileTranslation.add(-0.01, 0.0, 0.0)
|
||||
}
|
||||
if (keyCode == InputConstants.KEY_RIGHT) {
|
||||
model.profileTranslation = model.profileTranslation.add(0.01, 0.0, 0.0)
|
||||
}
|
||||
if (keyCode == InputConstants.KEY_EQUALS) {
|
||||
model.profileScale += 0.01F
|
||||
}
|
||||
if (keyCode == InputConstants.KEY_MINUS) {
|
||||
model.profileScale -= 0.01F
|
||||
}
|
||||
}
|
||||
|
||||
handleProfileDebugKeys(keyCode, selectedPokemon.species.resourceIdentifier, modelWidget.state)
|
||||
|
||||
return super.keyPressed(keyCode, scanCode, modifiers)
|
||||
}
|
||||
|
||||
@@ -744,13 +718,8 @@ class Summary private constructor(party: Collection<Pokemon?>, private val edita
|
||||
}
|
||||
|
||||
override fun onClose() {
|
||||
if (Cobblemon.config.enableDebugKeys) {
|
||||
val model = VaryingModelRepository.getPoser(selectedPokemon.species.resourceIdentifier, modelWidget.state)
|
||||
Minecraft.getInstance().player?.sendSystemMessage(Component.literal("Profile Translation: ${model.profileTranslation}"))
|
||||
Minecraft.getInstance().player?.sendSystemMessage(Component.literal("Profile Scale: ${model.profileScale}"))
|
||||
Cobblemon.LOGGER.info("override var profileTranslation = Vec3d(${model.profileTranslation.x}, ${model.profileTranslation.y}, ${model.profileTranslation.z})")
|
||||
Cobblemon.LOGGER.info("override var profileScale = ${model.profileScale}F")
|
||||
}
|
||||
logProfileTranslations(selectedPokemon.species.resourceIdentifier, modelWidget.state)
|
||||
|
||||
super.onClose()
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -11,6 +11,7 @@ package com.cobblemon.mod.common.client.gui.summary.widgets
|
||||
import com.bedrockk.molang.runtime.value.DoubleValue
|
||||
import com.cobblemon.mod.common.Cobblemon
|
||||
import com.cobblemon.mod.common.api.tags.CobblemonItemTags
|
||||
import com.cobblemon.mod.common.client.gui.ProfileTransformType
|
||||
import com.cobblemon.mod.common.client.gui.drawProfilePokemon
|
||||
import com.cobblemon.mod.common.client.gui.calculateHeadYawAndPitch
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.FloatingState
|
||||
@@ -116,7 +117,8 @@ class ModelWidget(
|
||||
partialTicks = partialTicks,
|
||||
headYaw = currentYawAndPitch.first,
|
||||
headPitch = currentYawAndPitch.second,
|
||||
blockLight = blockLight
|
||||
blockLight = blockLight,
|
||||
profileTransformType = ProfileTransformType.SUMMARY,
|
||||
)
|
||||
|
||||
heldItemRenderer.renderOnModel(
|
||||
|
||||
+50
-71
@@ -120,7 +120,7 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
fun getLogoResource(langCode: String?): ResourceLocation =
|
||||
logoResourceMap.entries.find { it.value.contains(langCode?.substringBefore("_")) }?.key ?: logo
|
||||
}
|
||||
var selectedTM: TechnicalMachine? = null
|
||||
|
||||
var heldStackMove: MoveTemplate? = null
|
||||
var tmList: SettableObservable<MutableList<TechnicalMachine>> = SettableObservable(mutableListOf())
|
||||
var output: ItemStack? = null
|
||||
@@ -159,6 +159,8 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
var oldIngredientItems: Array<Item> = arrayOf(Items.AIR, Items.AIR, Items.AIR)
|
||||
var oldResultTmSlotItem: Item = Items.AIR
|
||||
|
||||
var moveInfoTM: TechnicalMachine? = null
|
||||
|
||||
override fun init() {
|
||||
imageWidth = WIDTH
|
||||
imageHeight = HEIGHT
|
||||
@@ -171,6 +173,8 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
logoPosY = topPos + 1
|
||||
scanPosY = topPos + 1
|
||||
|
||||
menu.onSelectedTMUpdate = { updateSelectedTM(it) }
|
||||
|
||||
partySlotList.clear()
|
||||
CobblemonClient.storage.party.forEachIndexed { index, pokemon ->
|
||||
partySlotList.add(TMPartySlotWidget(
|
||||
@@ -226,7 +230,14 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
pX = leftPos + 4,
|
||||
pY = topPos + 29,
|
||||
tmList,
|
||||
setTM = { tm, clicked -> setSelectedTM(tm, clicked) }
|
||||
setTM = { tm, clicked ->
|
||||
if (clicked) {
|
||||
if (tm != menu.currentlySelectedTM) SetActiveTMPacket(tm).sendToServer()
|
||||
setScreenFromMode(TM_BURN_MODE)
|
||||
} else {
|
||||
updateMoveInformation(tm)
|
||||
}
|
||||
}
|
||||
)
|
||||
if (!children().contains(movesScrollingList)) addRenderableWidget(movesScrollingList)
|
||||
|
||||
@@ -252,24 +263,21 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
selectedMoveButton = MoveSlotButton(
|
||||
leftPos + 6,
|
||||
topPos + 6,
|
||||
move = selectedTM?.moveName,
|
||||
pp = selectedTM?.moveName?.pp ?: 0,
|
||||
move = menu.currentlySelectedTM?.moveName,
|
||||
pp = menu.currentlySelectedTM?.moveName?.pp ?: 0,
|
||||
ppAsFraction = false
|
||||
) {
|
||||
if ((it as MoveSlotButton).enabled) {
|
||||
if (::movesScrollingList.isInitialized && movesScrollingList.children().isEmpty()) setMoveList()
|
||||
playSound(CobblemonSounds.GUI_CLICK)
|
||||
setScreenFromMode(MOVE_SELECT_MODE)
|
||||
|
||||
// Clear active TM
|
||||
CobblemonNetwork.sendToServer(SetActiveTMPacket(null))
|
||||
}
|
||||
}
|
||||
if (!children().contains(selectedMoveButton)) addRenderableWidget(selectedMoveButton)
|
||||
|
||||
startButton = StartButton(leftPos + 5F, topPos + 35F) {
|
||||
if (!(it as StartButton).disabled) {
|
||||
selectedTM?.let {
|
||||
menu.currentlySelectedTM?.let {
|
||||
val burnActive = menu.containerData?.get(TMMachineBlockEntity.BURN_ACTIVE_INDEX) ?: 0
|
||||
CobblemonNetwork.sendToServer(SetTMMachineContainerDataPacket(
|
||||
TMMachineBlockEntity.BURN_ACTIVE_INDEX,
|
||||
@@ -284,17 +292,14 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
))
|
||||
}*/
|
||||
|
||||
CobblemonNetwork.sendToServer(SetActiveTMPacket(it))
|
||||
//CobblemonNetwork.sendToServer(SetActiveTMPacket(it))
|
||||
if (burnActive != 1) playSound(CobblemonSounds.TM_MACHINE_START)
|
||||
inventory.setChanged()
|
||||
menu.broadcastChanges()
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!children().contains(startButton)) addRenderableWidget(startButton)
|
||||
|
||||
setScreenFromMode(mode)
|
||||
initScreen = false
|
||||
|
||||
updateSlotItemMemory()
|
||||
}
|
||||
@@ -306,7 +311,7 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
if (scanPosY + 1 >= (topPos + SCREEN_SAVER_HEIGHT) * 2) scanPosY = 0
|
||||
|
||||
if (mode == TM_BURN_MODE) {
|
||||
selectedTM?.let { tm ->
|
||||
menu.currentlySelectedTM?.let { tm ->
|
||||
val resultStack = menu.inventory!!.getItem(TMMachineMenu.RESULT_SLOT)
|
||||
val craftedTmStack = ItemStack(CobblemonItems.TECHNICAL_MACHINE)
|
||||
.also { TMMoveComponent.setTMMove(it, tm.moveName) }
|
||||
@@ -339,7 +344,7 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
}
|
||||
|
||||
if (::selectedMoveButton.isInitialized) {
|
||||
selectedMoveButton.enabled = !isBurnActive() && (heldStackMove == null || heldStackMove == selectedTM?.moveName)
|
||||
selectedMoveButton.enabled = (heldStackMove == null || heldStackMove == menu.currentlySelectedTM?.moveName)
|
||||
}
|
||||
|
||||
if (isBurnActive()) {
|
||||
@@ -350,9 +355,6 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Check if screen should be switched upon opening UI
|
||||
if (!initScreen) loadBurnScreenData()
|
||||
}
|
||||
|
||||
if (heldMoveItemChanged) {
|
||||
@@ -400,32 +402,6 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
return wasScreenSaverActive
|
||||
}
|
||||
|
||||
private fun loadBurnScreenData() {
|
||||
var tm: TechnicalMachine? = null
|
||||
|
||||
val blockPos = menu.containerData?.let {
|
||||
val x = it.get(TMMachineBlockEntity.POSITION_X_INDEX)
|
||||
val y = it.get(TMMachineBlockEntity.POSITION_Y_INDEX)
|
||||
val z = it.get(TMMachineBlockEntity.POSITION_Z_INDEX)
|
||||
BlockPos(x, y, z)
|
||||
}
|
||||
|
||||
inventory.player.level().getBlockEntity(blockPos)?.let { blockEntity ->
|
||||
if (blockEntity is TMMachineBlockEntity) {
|
||||
Moves.getByName(blockEntity.activeMove)?.let {
|
||||
tm = TechnicalMachines.moveToTM[it]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If burn currently in progress or if active TM set, set to burn screen
|
||||
if (isBurnActive() || tm != null) {
|
||||
setSelectedTM(tm, true)
|
||||
}
|
||||
|
||||
initScreen = true
|
||||
}
|
||||
|
||||
private fun isBurnActive(): Boolean = (menu.containerData?.get(TMMachineBlockEntity.BURN_ACTIVE_INDEX) ?: 0) == 1
|
||||
|
||||
private fun setScreenFromMode(screen: Int) {
|
||||
@@ -467,7 +443,6 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
|
||||
private fun toggleTypeSelect(isVisible: Boolean) {
|
||||
if (isVisible) {
|
||||
setSelectedTM(null, false)
|
||||
if (::moveSearchWidget.isInitialized) moveSearchWidget.value = ""
|
||||
if (selectedPokemon != null) selectedPokemon = null
|
||||
sortType = null
|
||||
@@ -505,7 +480,6 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
}
|
||||
|
||||
private fun toggleTMBurn(isVisible: Boolean) {
|
||||
if (!isVisible) setSelectedTM(null, false)
|
||||
if (::selectedMoveButton.isInitialized) selectedMoveButton.visible = isVisible
|
||||
if (::startButton.isInitialized) startButton.visible = isVisible
|
||||
}
|
||||
@@ -516,35 +490,40 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
return if (learnableMoves.contains(move)) TMPartySlotWidget.CAN_LEARN else TMPartySlotWidget.CANNOT_LEARN
|
||||
}
|
||||
|
||||
fun setSelectedTM(tm: TechnicalMachine?, clicked: Boolean) {
|
||||
if (selectedTM != tm) {
|
||||
selectedTM = tm
|
||||
updatePartySlotStatus(tm?.moveName)
|
||||
fun updateSelectedTM(tm: TechnicalMachine?) {
|
||||
if (!initScreen) {
|
||||
initScreen = true
|
||||
tm?.let {
|
||||
setScreenFromMode(TM_BURN_MODE)
|
||||
sortType = ElementalTypes.get(tm.type)
|
||||
setMoveList()
|
||||
}
|
||||
}
|
||||
|
||||
if (::movesScrollingList.isInitialized) {
|
||||
movesScrollingList.setSlotHighlighted(if (clicked) null else selectedTM?.id)
|
||||
if (mode == TM_BURN_MODE) updateMoveInformation(tm)
|
||||
|
||||
tm?.let {
|
||||
if (::selectedMoveButton.isInitialized) {
|
||||
selectedMoveButton.apply {
|
||||
move = it.moveName
|
||||
pp = it.moveName.pp
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun updateMoveInformation(tm: TechnicalMachine?) {
|
||||
moveInfoTM = tm
|
||||
|
||||
if (::moveDescriptionWidget.isInitialized) {
|
||||
val selectedDescription = selectedTM?.moveName?.description?.string
|
||||
val selectedDescription = tm?.moveName?.description?.string
|
||||
moveDescriptionWidget.setText(
|
||||
if (selectedDescription != null) listOf(selectedDescription) else emptyList()
|
||||
)
|
||||
}
|
||||
|
||||
if (clicked) {
|
||||
CobblemonNetwork.sendToServer(SetActiveTMPacket(tm))
|
||||
|
||||
selectedTM?.let {
|
||||
if (::selectedMoveButton.isInitialized) {
|
||||
selectedMoveButton.apply {
|
||||
move = it.moveName
|
||||
pp = it.moveName.pp
|
||||
}
|
||||
setScreenFromMode(TM_BURN_MODE)
|
||||
}
|
||||
}
|
||||
if (::movesScrollingList.isInitialized) {
|
||||
movesScrollingList.setSlotHighlighted(tm?.id)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -557,7 +536,7 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
}
|
||||
|
||||
fun renderDiscTypeOverlay(poseStack: PoseStack, isDiscRotating: Boolean, alpha: Float = 1F) {
|
||||
selectedTM?.let {
|
||||
menu.currentlySelectedTM?.let {
|
||||
val primaryRgb = it.moveName.elementalType.primaryColor.toRGB()
|
||||
val secondaryRgb = it.moveName.elementalType.secondaryColor.toRGB()
|
||||
blitk(
|
||||
@@ -706,7 +685,7 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
}
|
||||
|
||||
fun renderMoveInfo(context: GuiGraphics, mouseX: Int, mouseY: Int) {
|
||||
val moveTemplate = selectedTM?.moveName
|
||||
val moveTemplate = moveInfoTM?.moveName
|
||||
|
||||
blitk(
|
||||
matrixStack = context.pose(),
|
||||
@@ -1057,7 +1036,7 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
movesScrollingList.setDisabled(true, TechnicalMachines.moveToTM[heldStackMove])
|
||||
if (mode == MOVE_SELECT_MODE) {
|
||||
val heldStackTm = TechnicalMachines.moveToTM[heldStackMove]
|
||||
setSelectedTM(if (tmList.get().contains(heldStackTm)) heldStackTm else null, false)
|
||||
updateMoveInformation(if (tmList.get().contains(heldStackTm)) heldStackTm else null)
|
||||
|
||||
// Scroll to move if moves list contains held TM move
|
||||
if (tmList.get().contains(heldStackTm)) {
|
||||
@@ -1077,8 +1056,8 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
heldStackMove = null
|
||||
|
||||
// Reset selected move on move select screen
|
||||
if (mode == MOVE_SELECT_MODE) setSelectedTM(null, false)
|
||||
updatePartySlotStatus(selectedTM?.moveName)
|
||||
if (mode == MOVE_SELECT_MODE) updateMoveInformation(null)
|
||||
updatePartySlotStatus(menu.currentlySelectedTM?.moveName)
|
||||
|
||||
if (::movesScrollingList.isInitialized) {
|
||||
movesScrollingList.setDisabled(false)
|
||||
@@ -1155,7 +1134,7 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
if (isInventoryKeyPressed(minecraft, keyCode, scanCode)) {
|
||||
if (searchFocused) { return true }
|
||||
else {
|
||||
Minecraft.getInstance().setScreen(null)
|
||||
onClose()
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -1166,7 +1145,7 @@ class TMMachineScreen(containerMenu: TMMachineMenu, val inventory: Inventory, ti
|
||||
this.focused = null
|
||||
return true
|
||||
} else {
|
||||
Minecraft.getInstance().setScreen(null)
|
||||
onClose()
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
+11
-4
@@ -19,7 +19,6 @@ import net.minecraft.world.level.block.Block
|
||||
object SetActiveTMPacketHandler : ServerNetworkPacketHandler<SetActiveTMPacket> {
|
||||
override fun handle(packet: SetActiveTMPacket, server: MinecraftServer, player: ServerPlayer) {
|
||||
val menu = player.containerMenu as? TMMachineMenu ?: return
|
||||
val inventory = menu.inventory ?: return
|
||||
val tmData = Cobblemon.playerDataManager.getTMData(player)
|
||||
|
||||
if (packet.tm != null && (!packet.tm.isPassivelyObtained() && packet.tm.id !in tmData.learnedTMs)) {
|
||||
@@ -30,9 +29,17 @@ object SetActiveTMPacketHandler : ServerNetworkPacketHandler<SetActiveTMPacket>
|
||||
blockEntity.activeMove = packet.tm?.moveName?.name ?: ""
|
||||
blockEntity.setChanged()
|
||||
player.level().sendBlockUpdated(blockEntity.blockPos, blockEntity.blockState, blockEntity.blockState, Block.UPDATE_CLIENTS)
|
||||
}
|
||||
|
||||
inventory.setChanged()
|
||||
menu.broadcastChanges()
|
||||
blockEntity.burnActive = false
|
||||
blockEntity.burnProgress = 0
|
||||
|
||||
player.level().players().forEach { thePlayer -> //Update all players with matching menu/blockentity
|
||||
val tmmMenu = thePlayer.containerMenu as? TMMachineMenu ?: return@forEach
|
||||
if (tmmMenu.tmMachineEntity == blockEntity) {
|
||||
tmmMenu.currentlySelectedTM = packet.tm
|
||||
tmmMenu.broadcastChanges()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.net.gui
|
||||
|
||||
import com.cobblemon.mod.common.api.net.ClientNetworkPacketHandler
|
||||
import com.cobblemon.mod.common.block.tmmachine.TMMachineMenu
|
||||
import com.cobblemon.mod.common.net.messages.client.ui.SynchronizeActiveTMPacket
|
||||
import net.minecraft.client.Minecraft
|
||||
|
||||
object SynchronizeActiveTMHandler: ClientNetworkPacketHandler<SynchronizeActiveTMPacket> {
|
||||
override fun handle(packet: SynchronizeActiveTMPacket, client: Minecraft) {
|
||||
val tmmMenu = client.player?.containerMenu as? TMMachineMenu ?: return
|
||||
tmmMenu.clientSetSelectedTM(packet.tm)
|
||||
}
|
||||
}
|
||||
@@ -18,17 +18,23 @@ import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer
|
||||
import com.mojang.math.Axis
|
||||
import net.minecraft.Util
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.gui.Font
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
import net.minecraft.client.renderer.RenderType
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture
|
||||
import net.minecraft.client.renderer.texture.TextureAtlas
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.network.chat.MutableComponent
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.util.FormattedCharSequence
|
||||
import net.minecraft.util.Mth
|
||||
import net.minecraft.world.item.ItemDisplayContext
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import kotlin.math.cos
|
||||
import kotlin.math.sin
|
||||
|
||||
fun renderScaledGuiItemIcon(itemStack: ItemStack, x: Double, y: Double, scale: Double = 1.0, zTranslation: Float = 100.0F, matrixStack: PoseStack? = null) {
|
||||
val itemRenderer = Minecraft.getInstance().itemRenderer
|
||||
@@ -97,6 +103,55 @@ fun getDepletableRedGreen(
|
||||
return r.toFloat() to g.toFloat()
|
||||
}
|
||||
|
||||
fun drawScrollingText(
|
||||
context: GuiGraphics,
|
||||
font: Font,
|
||||
text: Component,
|
||||
minX: Int,
|
||||
minY: Int,
|
||||
maxX: Int,
|
||||
maxY: Int,
|
||||
colour: Int,
|
||||
minScrollVelocity: Double? = 10.0
|
||||
) {
|
||||
val textWidth = font.width(text)
|
||||
val fittedMaxX = if (textWidth <= maxX - minX) minX + textWidth else maxX
|
||||
renderScrollingString(context, font, text, minX, minY, fittedMaxX, maxY, colour, minScrollVelocity)
|
||||
}
|
||||
|
||||
/** Copied from [net.minecraft.client.gui.components.AbstractWidget.renderScrollingString] **/
|
||||
fun renderScrollingString(
|
||||
context: GuiGraphics,
|
||||
font: Font,
|
||||
text: Component,
|
||||
minX: Int,
|
||||
minY: Int,
|
||||
maxX: Int,
|
||||
maxY: Int,
|
||||
colour: Int,
|
||||
minScrollVelocity: Double? = 10.0
|
||||
) {
|
||||
val textWidth = font.width(text)
|
||||
val centerY = (minY + maxY - 9) / 2 + 1
|
||||
val boxWidth = maxX - minX
|
||||
if (textWidth <= boxWidth) {
|
||||
val centerX = Mth.clamp((minX + maxX) / 2, minX + textWidth / 2, maxX - textWidth / 2)
|
||||
context.drawCenteredString(font, text, centerX, centerY, colour)
|
||||
return
|
||||
}
|
||||
|
||||
val overflow = textWidth - boxWidth
|
||||
var period = (overflow * 0.5).coerceAtLeast(3.0)
|
||||
if (minScrollVelocity != null) {
|
||||
period = period.coerceAtMost(2 * overflow / minScrollVelocity)
|
||||
}
|
||||
val time = Util.getMillis() / 1000.0
|
||||
val easedProgress = sin((Math.PI / 2) * cos(2 * Math.PI * time / period)) / 2.0 + 0.5
|
||||
val offset = Mth.lerp(easedProgress, 0.0, overflow.toDouble())
|
||||
context.enableScissor(minX, minY, maxX, maxY)
|
||||
context.drawString(font, text, minX - offset.toInt(), centerY, colour)
|
||||
context.disableScissor()
|
||||
}
|
||||
|
||||
fun drawScaledText(
|
||||
context: GuiGraphics,
|
||||
|
||||
+2
-1
@@ -72,7 +72,8 @@ object MountedCameraRenderer {
|
||||
val rollable = vehicle as OrientationControllable
|
||||
val vehicleController = rollable.getOrientationController()
|
||||
|
||||
val model = getPoser(vehicle.pokemon.species.resourceIdentifier, FloatingState())
|
||||
val state = FloatingState().also { it.currentAspects = vehicle.pokemon.aspects }
|
||||
val model = getPoser(vehicle.pokemon.species.resourceIdentifier, state)
|
||||
|
||||
val locatorName = delegate.getSeatLocator(driver)
|
||||
val locator = delegate.locatorStates[locatorName] ?: return null
|
||||
|
||||
+6
-2
@@ -34,7 +34,6 @@ import com.cobblemon.mod.common.client.render.models.blockbench.quirk.ModelQuirk
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.quirk.SimpleQuirk
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.repository.RenderContext
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.wavefunction.WaveFunction
|
||||
import com.cobblemon.mod.common.client.util.exists
|
||||
import com.cobblemon.mod.common.entity.PosableEntity
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.generic.GenericBedrockEntity
|
||||
@@ -134,6 +133,11 @@ open class PosableModel(@Transient override val rootPart: Bone) : ModelFrame {
|
||||
*/
|
||||
open var profileTranslation = Vec3(0.0, 0.0, 0.0)
|
||||
|
||||
open var profilePokedexScale: Float? = null
|
||||
open var profilePokedexTranslation: Vec3? = null
|
||||
open var profileSummaryScale: Float? = null
|
||||
open var profileSummaryTranslation: Vec3? = null
|
||||
|
||||
var red = 1F
|
||||
var green = 1F
|
||||
var blue = 1F
|
||||
@@ -251,7 +255,7 @@ open class PosableModel(@Transient override val rootPart: Bone) : ModelFrame {
|
||||
}
|
||||
|
||||
fun setLayerContext(buffer: MultiBufferSource, state: PosableState, layers: Iterable<ModelLayer>) {
|
||||
currentLayers = layers
|
||||
currentLayers = layers.sortedBy { it.translucent }
|
||||
bufferProvider = buffer
|
||||
currentState = state
|
||||
}
|
||||
|
||||
-85
@@ -1,85 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import com.cobblemon.mod.common.util.isBattling
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class ChanseyModel(root: ModelPart) : PokemonPosableModel(root), BipedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("chansey")
|
||||
override val leftLeg = getPart("left_foot")
|
||||
override val rightLeg = getPart("right_foot")
|
||||
|
||||
override var portraitScale = 1.5F
|
||||
override var portraitTranslation = Vec3(-0.35, 0.3, 0.0)
|
||||
|
||||
override var profileScale = 0.8F
|
||||
override var profileTranslation = Vec3(0.0, 0.55, 0.0)
|
||||
|
||||
lateinit var standing: CobblemonPose
|
||||
lateinit var walk: CobblemonPose
|
||||
lateinit var sleep: CobblemonPose
|
||||
lateinit var battleIdle: CobblemonPose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("chansey", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("chansey", "blink") }
|
||||
|
||||
sleep = registerPose(
|
||||
poseName = "sleep",
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(
|
||||
bedrock("chansey", "sleep")
|
||||
)
|
||||
)
|
||||
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
condition = { !it.isBattling },
|
||||
transformTicks = 10,
|
||||
animations = arrayOf(
|
||||
bedrock("chansey", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("chansey", "ground_walk")
|
||||
)
|
||||
)
|
||||
|
||||
battleIdle = registerPose(
|
||||
poseName = "battle_idle",
|
||||
poseTypes = PoseType.STATIONARY_POSES,
|
||||
condition = { it.isBattling },
|
||||
transformTicks = 10,
|
||||
animations = arrayOf(
|
||||
bedrock("chansey", "battle_idle")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = bedrockStateful("chansey", "faint")
|
||||
}
|
||||
-74
@@ -1,74 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import com.cobblemon.mod.common.util.isBattling
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class DiglettAlolanModel(root: ModelPart) : PokemonPosableModel(root) {
|
||||
override val rootPart = root.registerChildWithAllChildren("diglett_alolan")
|
||||
|
||||
override var portraitScale = 1.8F
|
||||
override var portraitTranslation = Vec3(-0.06, -0.86, 0.0)
|
||||
|
||||
override var profileScale = 0.9F
|
||||
override var profileTranslation = Vec3(0.0, 0.32, 0.0)
|
||||
|
||||
lateinit var stand: CobblemonPose
|
||||
lateinit var walk: CobblemonPose
|
||||
lateinit var battleidle: CobblemonPose
|
||||
lateinit var sleep: CobblemonPose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("diglett_alolan", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("diglett_alolan", "blink")}
|
||||
val quirk = quirk { bedrockStateful("diglett_alolan", "quirk_idle")}
|
||||
|
||||
sleep = registerPose(
|
||||
poseName = "sleep",
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("diglett_alolan", "sleep"))
|
||||
)
|
||||
|
||||
stand = registerPose(
|
||||
poseName = "stand",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
condition = { !it.isBattling },
|
||||
quirks = arrayOf(blink,quirk),
|
||||
animations = arrayOf(bedrock("diglett_alolan", "ground_idle"))
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(bedrock("diglett_alolan", "ground_idle"))
|
||||
)
|
||||
|
||||
battleidle = registerPose(
|
||||
poseName = "battleidle",
|
||||
poseTypes = STATIONARY_POSES,
|
||||
condition = { it.isBattling },
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(bedrock("diglett_alolan", "battle_idle"))
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = bedrockStateful("diglett_alolan", "faint")
|
||||
}
|
||||
-71
@@ -1,71 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class DiglettModel(root: ModelPart) : PokemonPosableModel(root) {
|
||||
override val rootPart = root.registerChildWithAllChildren("diglett")
|
||||
|
||||
override var portraitScale = 1.8F
|
||||
override var portraitTranslation = Vec3(-0.06, -0.86, 0.0)
|
||||
|
||||
override var profileScale = 0.9F
|
||||
override var profileTranslation = Vec3(0.0, 0.32, 0.0)
|
||||
|
||||
lateinit var stand: CobblemonPose
|
||||
lateinit var walk: CobblemonPose
|
||||
lateinit var battleidle: CobblemonPose
|
||||
lateinit var sleep: CobblemonPose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("diglett", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("diglett", "blink")}
|
||||
val quirk = quirk { bedrockStateful("diglett", "quirk_idle")}
|
||||
|
||||
sleep = registerPose(
|
||||
poseName = "sleep",
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("diglett", "sleep"))
|
||||
)
|
||||
|
||||
stand = registerPose(
|
||||
poseName = "stand",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
quirks = arrayOf(blink, quirk),
|
||||
animations = arrayOf(bedrock("diglett", "ground_idle"))
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(bedrock("diglett", "ground_walk"))
|
||||
)
|
||||
|
||||
battleidle = registerPose(
|
||||
poseName = "battleidle",
|
||||
poseTypes = STATIONARY_POSES,
|
||||
quirks = arrayOf(blink, quirk),
|
||||
animations = arrayOf(bedrock("diglett", "battle_idle"))
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = bedrockStateful("diglett", "faint")
|
||||
}
|
||||
-79
@@ -1,79 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import com.cobblemon.mod.common.util.isBattling
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class DugtrioAlolanModel(root: ModelPart) : PokemonPosableModel(root) {
|
||||
override val rootPart = root.registerChildWithAllChildren("dugtrio_alolan")
|
||||
|
||||
override var portraitScale = 1.3F
|
||||
override var portraitTranslation = Vec3(-0.11, -0.1, 0.0)
|
||||
|
||||
override var profileScale = 0.9F
|
||||
override var profileTranslation = Vec3(0.0, 0.29, 0.0)
|
||||
|
||||
lateinit var standing: CobblemonPose
|
||||
lateinit var walking: CobblemonPose
|
||||
lateinit var battleidle: CobblemonPose
|
||||
lateinit var sleep: CobblemonPose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("dugtrio_alolan", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("dugtrio_alolan", "blink")}
|
||||
val blink2 = quirk { bedrockStateful("dugtrio_alolan", "blink2")}
|
||||
val blink3 = quirk { bedrockStateful("dugtrio_alolan", "blink3")}
|
||||
|
||||
val quirk = quirk { bedrockStateful("dugtrio_alolan", "quirk_idle")}
|
||||
val quirk2 = quirk { bedrockStateful("dugtrio_alolan", "quirk_idle2")}
|
||||
val quirk3 = quirk { bedrockStateful("dugtrio_alolan", "quirk_idle3")}
|
||||
|
||||
sleep = registerPose(
|
||||
poseName = "sleep",
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("dugtrio_alolan", "sleep"))
|
||||
)
|
||||
|
||||
standing = registerPose(
|
||||
poseName = "stand",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
condition = { !it.isBattling },
|
||||
quirks = arrayOf(blink, blink2, blink3, quirk, quirk2, quirk3),
|
||||
animations = arrayOf(bedrock("dugtrio_alolan", "ground_idle"))
|
||||
)
|
||||
|
||||
walking = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
quirks = arrayOf(blink, blink2, blink3),
|
||||
animations = arrayOf(bedrock("dugtrio_alolan", "ground_idle"))
|
||||
)
|
||||
|
||||
battleidle = registerPose(
|
||||
poseName = "battleidle",
|
||||
poseTypes = STATIONARY_POSES,
|
||||
condition = { it.isBattling },
|
||||
quirks = arrayOf(blink, blink2, blink3, quirk, quirk2, quirk3),
|
||||
animations = arrayOf(bedrock("dugtrio_alolan", "battle_idle"))
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = bedrockStateful("dugtrio_alolan", "faint")
|
||||
}
|
||||
-99
@@ -1,99 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.SingleBoneLookAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import com.cobblemon.mod.common.util.isBattling
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class DugtrioModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("dugtrio")
|
||||
override val head = getPart("body3")
|
||||
|
||||
val lefthead = object : HeadedFrame {
|
||||
override val rootPart = this@DugtrioModel.rootPart
|
||||
override val head: ModelPart = getPart("body2")
|
||||
}
|
||||
val righthead = object : HeadedFrame {
|
||||
override val rootPart = this@DugtrioModel.rootPart
|
||||
override val head: ModelPart = getPart("body1")
|
||||
}
|
||||
|
||||
override var portraitScale = 1.3F
|
||||
override var portraitTranslation = Vec3(-0.11, -0.1, 0.0)
|
||||
|
||||
override var profileScale = 0.9F
|
||||
override var profileTranslation = Vec3(0.0, 0.29, 0.0)
|
||||
|
||||
lateinit var standing: CobblemonPose
|
||||
lateinit var walking: CobblemonPose
|
||||
lateinit var battleidle: CobblemonPose
|
||||
lateinit var sleep: CobblemonPose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("dugtrio", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("dugtrio", "blink")}
|
||||
val blink2 = quirk { bedrockStateful("dugtrio", "blink2")}
|
||||
val blink3 = quirk { bedrockStateful("dugtrio", "blink3")}
|
||||
|
||||
val quirk = quirk { bedrockStateful("dugtrio", "quirk_idle")}
|
||||
val quirk2 = quirk { bedrockStateful("dugtrio", "quirk_idle2")}
|
||||
val quirk3 = quirk { bedrockStateful("dugtrio", "quirk_idle3")}
|
||||
|
||||
sleep = registerPose(
|
||||
poseName = "sleep",
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("dugtrio", "sleep"))
|
||||
)
|
||||
|
||||
standing = registerPose(
|
||||
poseName = "stand",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
condition = { !it.isBattling },
|
||||
quirks = arrayOf(blink, blink2, blink3, quirk, quirk2, quirk3),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(pitchMultiplier = 0.6F, yawMultiplier = 0.4F, maxPitch = 10F, minPitch = -30F),
|
||||
SingleBoneLookAnimation(lefthead, false, false, false, false, 1F, 1.4F, 0F, -30F, 20F, -45F),
|
||||
SingleBoneLookAnimation(righthead, false, false, false, false, 1F, 1.4F, 0F, -30F, 45F, -25F),
|
||||
bedrock("dugtrio", "ground_idle"))
|
||||
)
|
||||
|
||||
walking = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
quirks = arrayOf(blink, blink2, blink3),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(pitchMultiplier = 0.6F, yawMultiplier = 0.4F, maxPitch = 10F, minPitch = -30F),
|
||||
SingleBoneLookAnimation(lefthead, false, false, false, false, 1F, 1.4F, 0F, -30F, 20F, -45F),
|
||||
SingleBoneLookAnimation(righthead, false, false, false, false, 1F, 1.4F, 0F, -30F, 45F, -25F),
|
||||
bedrock("dugtrio", "ground_walk"))
|
||||
)
|
||||
|
||||
battleidle = registerPose(
|
||||
poseName = "battleidle",
|
||||
poseTypes = STATIONARY_POSES,
|
||||
condition = { it.isBattling },
|
||||
quirks = arrayOf(blink, blink2, blink3, quirk, quirk2, quirk3),
|
||||
animations = arrayOf(bedrock("dugtrio", "battle_idle"))
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = bedrockStateful("dugtrio", "faint")
|
||||
}
|
||||
-66
@@ -1,66 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class GravelerModel(root: ModelPart) : PokemonPosableModel(root), BipedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("graveler")
|
||||
|
||||
override val leftLeg = getPart("leg_left")
|
||||
override val rightLeg = getPart("leg_right")
|
||||
|
||||
override var portraitScale = 1.4F
|
||||
override var portraitTranslation = Vec3(-0.1, -0.28, 0.0)
|
||||
|
||||
override var profileScale = 0.9F
|
||||
override var profileTranslation = Vec3(0.0, 0.37, 0.0)
|
||||
|
||||
lateinit var standing: CobblemonPose
|
||||
lateinit var walk: CobblemonPose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("graveler", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("graveler", "blink")}
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("graveler", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
BipedWalkAnimation(this, periodMultiplier = 1.1F),
|
||||
bedrock("graveler", "ground_idle")
|
||||
//bedrock("graveler", "ground_walk")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
// override fun getFaintAnimation(
|
||||
// pokemonEntity: PokemonEntity,
|
||||
// state: PosableState<PokemonEntity>
|
||||
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("graveler", "faint") else null
|
||||
}
|
||||
-52
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.ALL_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class KakunaModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("kakuna")
|
||||
override val head = getPart("head")
|
||||
|
||||
override var portraitScale = 1.7F
|
||||
override var portraitTranslation = Vec3(0.1, -0.4, 0.0)
|
||||
override var profileScale = 0.96F
|
||||
override var profileTranslation = Vec3(0.0, 0.35, 0.0)
|
||||
|
||||
lateinit var sleep: Pose
|
||||
lateinit var standing: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("kakuna", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
sleep = registerPose(
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("kakuna", "sleep"))
|
||||
)
|
||||
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = ALL_POSES - PoseType.SLEEP,
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("kakuna", "ground_idle")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = bedrockStateful("kakuna", "faint")
|
||||
}
|
||||
-73
@@ -1,73 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.QuadrupedWalkAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.QuadrupedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class NidoranfModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, QuadrupedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("nidoran_f")
|
||||
override val head = getPart("head")
|
||||
override val foreLeftLeg = getPart("leg_front_left")
|
||||
override val foreRightLeg = getPart("leg_front_right")
|
||||
override val hindLeftLeg = getPart("leg_back_left")
|
||||
override val hindRightLeg = getPart("leg_back_right")
|
||||
|
||||
override var portraitScale = 2.0F
|
||||
override var portraitTranslation = Vec3(-0.16, -0.85, 0.0)
|
||||
|
||||
override var profileScale = 1.03F
|
||||
override var profileTranslation = Vec3(0.02, 0.21, 0.0)
|
||||
|
||||
lateinit var sleep: CobblemonPose
|
||||
lateinit var standing: CobblemonPose
|
||||
lateinit var walk: CobblemonPose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("nidoranf", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("nidoranf", "blink") }
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("nidoranf", "idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("nidoranf", "idle"),
|
||||
QuadrupedWalkAnimation(this)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
// override fun getFaintAnimation(
|
||||
// pokemonEntity: PokemonEntity,
|
||||
// state: PosableState<PokemonEntity>
|
||||
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("nidoranf", "faint") else null
|
||||
}
|
||||
-73
@@ -1,73 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.QuadrupedWalkAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.QuadrupedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class NidoranmModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, QuadrupedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("nidoran_m")
|
||||
override val head = getPart("head")
|
||||
override val foreLeftLeg = getPart("leg_front_left")
|
||||
override val foreRightLeg = getPart("leg_front_right")
|
||||
override val hindLeftLeg = getPart("leg_back_left")
|
||||
override val hindRightLeg = getPart("leg_back_right")
|
||||
|
||||
override var portraitScale = 1.97F
|
||||
override var portraitTranslation = Vec3(-0.18, -1.28, 0.0)
|
||||
|
||||
override var profileScale = 1.05F
|
||||
override var profileTranslation = Vec3(0.03, 0.11, 0.0)
|
||||
|
||||
lateinit var sleep: Pose
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("nidoranm", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("nidoranm", "blink") }
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("nidoranm", "idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("nidoranm", "idle"),
|
||||
QuadrupedWalkAnimation(this)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
// override fun getFaintAnimation(
|
||||
// pokemonEntity: PokemonEntity,
|
||||
// state: PosableState<PokemonEntity>
|
||||
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("nidoranm", "faint") else null
|
||||
}
|
||||
-92
@@ -1,92 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.QuadrupedWalkAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.QuadrupedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import com.cobblemon.mod.common.util.isBattling
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class NidorinaModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, QuadrupedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("nidorina")
|
||||
override val head = getPart("head")
|
||||
override val foreLeftLeg= getPart("left_upper_arm")
|
||||
override val foreRightLeg = getPart("right_upper_arm")
|
||||
override val hindLeftLeg = getPart("left_leg")
|
||||
override val hindRightLeg = getPart("right_leg")
|
||||
|
||||
override var portraitScale = 2.13F
|
||||
override var portraitTranslation = Vec3(-0.05, -0.71, 0.0)
|
||||
|
||||
override var profileScale = 1.0F
|
||||
override var profileTranslation = Vec3(0.0, 0.21, 0.0)
|
||||
|
||||
lateinit var sleep: Pose
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
lateinit var battleidle: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("nidorina", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("nidorina", "blink")}
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
condition = { !it.isBattling },
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("nidorina", "idle3")
|
||||
)
|
||||
)
|
||||
|
||||
sleep = registerPose(
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("nidorina", "idle2"))
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("nidorina", "idle2"),
|
||||
QuadrupedWalkAnimation(this)
|
||||
)
|
||||
)
|
||||
|
||||
battleidle = registerPose(
|
||||
poseName = "battle_idle",
|
||||
poseTypes = PoseType.STATIONARY_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("nidorina", "idle")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
// override fun getFaintAnimation(
|
||||
// pokemonEntity: PokemonEntity,
|
||||
// state: PosableState<PokemonEntity>
|
||||
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("nidorina", "faint") else null
|
||||
}
|
||||
-206
@@ -1,206 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.createTransformation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BiWingedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.ModelPartTransformation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.wavefunction.parabolaFunction
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.wavefunction.sineFunction
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import com.cobblemon.mod.common.util.math.geometry.toRadians
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class PidgeottoModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BiWingedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("pidgeotto")
|
||||
override val head = getPart("neck")
|
||||
|
||||
override val leftWing = getPart("wing_closed_left")
|
||||
override val rightWing = getPart("wing_closed_right")
|
||||
override val leftLeg = getPart("leg_left")
|
||||
override val rightLeg = getPart("leg_right")
|
||||
private val tail = getPart("tail")
|
||||
|
||||
private val wingOpenRight = getPart("wing_open_right")
|
||||
private val wingOpenLeft = getPart("wing_open_left")
|
||||
private val wingClosedRight = getPart("wing_closed_right")
|
||||
private val wingClosedLeft = getPart("wing_closed_left")
|
||||
|
||||
override var portraitScale = 2.8F
|
||||
override var portraitTranslation = Vec3(-0.4, -0.9, 0.0)
|
||||
override var profileScale = 1.1F
|
||||
override var profileTranslation = Vec3(0.0, 0.1, 0.0)
|
||||
|
||||
lateinit var sleep: Pose
|
||||
lateinit var stand: Pose
|
||||
lateinit var walk: Pose
|
||||
lateinit var hover: Pose
|
||||
lateinit var fly: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("pidgeotto", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("pidgeotto", "blink")}
|
||||
val flyQuirk1 = quirk { bedrockStateful("pidgeotto", "air_fly_quirk") }
|
||||
val flyQuirk2 = quirk { bedrockStateful("pidgeotto", "air_fly_quirk2") }
|
||||
|
||||
sleep = registerPose(
|
||||
poseName = "sleep",
|
||||
poseType = PoseType.SLEEP,
|
||||
transformedParts = arrayOf(
|
||||
wingClosedLeft.createTransformation().withVisibility(visibility = true),
|
||||
wingClosedRight.createTransformation().withVisibility(visibility = true),
|
||||
wingOpenLeft.createTransformation().withVisibility(visibility = false),
|
||||
wingOpenRight.createTransformation().withVisibility(visibility = false)
|
||||
),
|
||||
animations = arrayOf(bedrock("pidgeotto", "sleep_PLACEHOLDER"))
|
||||
)
|
||||
|
||||
stand = registerPose(
|
||||
poseName = "stand",
|
||||
poseTypes = STATIONARY_POSES - PoseType.HOVER + UI_POSES,
|
||||
transformedParts = arrayOf(
|
||||
wingClosedLeft.createTransformation().withVisibility(visibility = true),
|
||||
wingClosedRight.createTransformation().withVisibility(visibility = true),
|
||||
wingOpenLeft.createTransformation().withVisibility(visibility = false),
|
||||
wingOpenRight.createTransformation().withVisibility(visibility = false)
|
||||
),
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("pidgeotto", "ground_idle_PLACEHOLDER")
|
||||
)
|
||||
)
|
||||
walk = registerPose(
|
||||
poseName = "hover",
|
||||
poseTypes = PoseType.MOVING_POSES - PoseType.FLY,
|
||||
transformedParts = arrayOf(
|
||||
wingClosedLeft.createTransformation().withVisibility(visibility = true),
|
||||
wingClosedRight.createTransformation().withVisibility(visibility = true),
|
||||
wingOpenLeft.createTransformation().withVisibility(visibility = false),
|
||||
wingOpenRight.createTransformation().withVisibility(visibility = false)
|
||||
),
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("pidgeotto", "ground_idle_PLACEHOLDER"),
|
||||
rootPart.translation(
|
||||
function = parabolaFunction(
|
||||
peak = -4F,
|
||||
period = 0.4F
|
||||
),
|
||||
timeVariable = { state, _, _ -> state.animationSeconds },
|
||||
axis = ModelPartTransformation.Y_AXIS
|
||||
),
|
||||
head.translation(
|
||||
function = sineFunction(
|
||||
amplitude = (-20F).toRadians(),
|
||||
period = 1F,
|
||||
verticalShift = (-10F).toRadians()
|
||||
),
|
||||
axis = ModelPartTransformation.X_AXIS,
|
||||
timeVariable = { state, _, _ -> state.animationSeconds }
|
||||
),
|
||||
leftLeg.rotation(
|
||||
function = parabolaFunction(
|
||||
tightness = -20F,
|
||||
phaseShift = 0F,
|
||||
verticalShift = (30F).toRadians()
|
||||
),
|
||||
axis = ModelPartTransformation.X_AXIS,
|
||||
timeVariable = { _, _, ageInTicks -> ageInTicks / 20 },
|
||||
),
|
||||
rightLeg.rotation(
|
||||
function = parabolaFunction(
|
||||
tightness = -20F,
|
||||
phaseShift = 0F,
|
||||
verticalShift = (30F).toRadians()
|
||||
),
|
||||
axis = ModelPartTransformation.X_AXIS,
|
||||
timeVariable = { _, _, ageInTicks -> ageInTicks / 20 },
|
||||
),
|
||||
tail.rotation(
|
||||
function = sineFunction(
|
||||
amplitude = (-5F).toRadians(),
|
||||
period = 1F
|
||||
),
|
||||
axis = ModelPartTransformation.X_AXIS,
|
||||
timeVariable = { _, _, ageInTicks -> ageInTicks / 20 },
|
||||
),
|
||||
wingFlap(
|
||||
flapFunction = sineFunction(
|
||||
amplitude = (-5F).toRadians(),
|
||||
period = 0.4F,
|
||||
phaseShift = 0.00F,
|
||||
verticalShift = (-20F).toRadians()
|
||||
),
|
||||
timeVariable = { state, _, _ -> state.animationSeconds },
|
||||
axis = ModelPartTransformation.Z_AXIS
|
||||
),
|
||||
rightWing.translation(
|
||||
function = parabolaFunction(
|
||||
tightness = -10F,
|
||||
phaseShift = 30F,
|
||||
verticalShift = (25F).toRadians()
|
||||
),
|
||||
axis = ModelPartTransformation.Y_AXIS,
|
||||
timeVariable = { _, _, ageInTicks -> ageInTicks / 20 },
|
||||
),
|
||||
leftWing.translation(
|
||||
function = parabolaFunction(
|
||||
tightness = -10F,
|
||||
phaseShift = 30F,
|
||||
verticalShift = (25F).toRadians()
|
||||
),
|
||||
axis = ModelPartTransformation.Y_AXIS,
|
||||
timeVariable = { _, _, ageInTicks -> ageInTicks / 20 },
|
||||
),
|
||||
)
|
||||
)
|
||||
hover = registerPose(
|
||||
poseName = "fly",
|
||||
poseType = PoseType.HOVER,
|
||||
transformedParts = arrayOf(
|
||||
wingClosedLeft.createTransformation().withVisibility(visibility = false),
|
||||
wingClosedRight.createTransformation().withVisibility(visibility = false),
|
||||
wingOpenLeft.createTransformation().withVisibility(visibility = true),
|
||||
wingOpenRight.createTransformation().withVisibility(visibility = true)
|
||||
),
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("pidgeotto", "air_idle")
|
||||
)
|
||||
)
|
||||
fly = registerPose(
|
||||
poseName = "walk",
|
||||
poseType = PoseType.FLY,
|
||||
transformedParts = arrayOf(
|
||||
wingClosedLeft.createTransformation().withVisibility(visibility = false),
|
||||
wingClosedRight.createTransformation().withVisibility(visibility = false),
|
||||
wingOpenLeft.createTransformation().withVisibility(visibility = true),
|
||||
wingOpenRight.createTransformation().withVisibility(visibility = true)
|
||||
),
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink, flyQuirk1, flyQuirk2),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("pidgeotto", "air_fly")
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
-131
@@ -1,131 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.PitchTiltAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.createTransformation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.SHOULDER_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class PidgeyModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("pidgey")
|
||||
override val head = getPart("head")
|
||||
|
||||
private val wingOpenRight = getPart("wing_open_right")
|
||||
private val wingOpenLeft = getPart("wing_open_left")
|
||||
private val wingClosedRight = getPart("wing_closed_right")
|
||||
private val wingClosedLeft = getPart("wing_closed_left")
|
||||
|
||||
override var portraitScale = 3.5F
|
||||
override var portraitTranslation = Vec3(-0.1, -2.1, 0.0)
|
||||
|
||||
override var profileScale = 1.2F
|
||||
override var profileTranslation = Vec3(0.0, -0.01, 0.0)
|
||||
|
||||
lateinit var sleep: CobblemonPose
|
||||
lateinit var stand: CobblemonPose
|
||||
lateinit var walk: CobblemonPose
|
||||
lateinit var hover: CobblemonPose
|
||||
lateinit var fly: CobblemonPose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("pidgey", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("pidgey", "blink") }
|
||||
|
||||
sleep = registerPose(
|
||||
poseName = "sleeping",
|
||||
transformedParts = arrayOf(
|
||||
wingClosedLeft.createTransformation().withVisibility(visibility = true),
|
||||
wingClosedRight.createTransformation().withVisibility(visibility = true),
|
||||
wingOpenLeft.createTransformation().withVisibility(visibility = false),
|
||||
wingOpenRight.createTransformation().withVisibility(visibility = false)
|
||||
),
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("pidgey", "sleep_PLACEHOLDER"))
|
||||
)
|
||||
|
||||
stand = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = SHOULDER_POSES + UI_POSES + PoseType.STATIONARY_POSES - PoseType.HOVER,
|
||||
transformTicks = 10,
|
||||
transformedParts = arrayOf(
|
||||
wingClosedLeft.createTransformation().withVisibility(visibility = true),
|
||||
wingClosedRight.createTransformation().withVisibility(visibility = true),
|
||||
wingOpenLeft.createTransformation().withVisibility(visibility = false),
|
||||
wingOpenRight.createTransformation().withVisibility(visibility = false)
|
||||
),
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("pidgey", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
hover = registerPose(
|
||||
poseName = "hover",
|
||||
poseType = PoseType.HOVER,
|
||||
transformedParts = arrayOf(
|
||||
wingClosedLeft.createTransformation().withVisibility(visibility = false),
|
||||
wingClosedRight.createTransformation().withVisibility(visibility = false),
|
||||
wingOpenLeft.createTransformation().withVisibility(visibility = true),
|
||||
wingOpenRight.createTransformation().withVisibility(visibility = true)
|
||||
),
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
PitchTiltAnimation(bone = getPart("body"), maxChangePerTick = 1F),
|
||||
singleBoneLook(),
|
||||
bedrock("pidgey", "air_idle")
|
||||
)
|
||||
)
|
||||
|
||||
fly = registerPose(
|
||||
poseName = "fly",
|
||||
poseType = PoseType.FLY,
|
||||
transformedParts = arrayOf(
|
||||
wingClosedLeft.createTransformation().withVisibility(visibility = false),
|
||||
wingClosedRight.createTransformation().withVisibility(visibility = false),
|
||||
wingOpenLeft.createTransformation().withVisibility(visibility = true),
|
||||
wingOpenRight.createTransformation().withVisibility(visibility = true)
|
||||
),
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
PitchTiltAnimation(bone = getPart("body"), maxChangePerTick = 1F),
|
||||
singleBoneLook(),
|
||||
bedrock("pidgey", "air_fly")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walking",
|
||||
poseTypes = PoseType.MOVING_POSES - PoseType.FLY,
|
||||
transformedParts = arrayOf(
|
||||
wingClosedLeft.createTransformation().withVisibility(visibility = true),
|
||||
wingClosedRight.createTransformation().withVisibility(visibility = true),
|
||||
wingOpenLeft.createTransformation().withVisibility(visibility = false),
|
||||
wingOpenRight.createTransformation().withVisibility(visibility = false)
|
||||
),
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("pidgey", "ground_walk")
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
-93
@@ -1,93 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import com.cobblemon.mod.common.util.isInWater
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class TentacoolModel(root: ModelPart) : PokemonPosableModel(root) {
|
||||
override val rootPart = root.registerChildWithAllChildren("tentacool")
|
||||
|
||||
override var portraitScale = 1.2F
|
||||
override var portraitTranslation = Vec3(0.1, 1.1, 0.0)
|
||||
|
||||
override var profileScale = 0.6F
|
||||
override var profileTranslation = Vec3(0.0, 0.8, 0.0)
|
||||
|
||||
lateinit var standing: CobblemonPose
|
||||
lateinit var walk: CobblemonPose
|
||||
lateinit var swim: CobblemonPose
|
||||
lateinit var float: CobblemonPose
|
||||
lateinit var sleep: CobblemonPose
|
||||
lateinit var watersleep: CobblemonPose
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("tentacool", "blink")}
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseType = PoseType.STAND,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("tentacool", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseType = PoseType.WALK,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("tentacool", "ground_idle")
|
||||
//bedrock("tentacool", "ground_walk")
|
||||
)
|
||||
)
|
||||
|
||||
float = registerPose(
|
||||
poseName = "float",
|
||||
poseTypes = UI_POSES + PoseType.FLOAT,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("tentacool", "water_idle")
|
||||
)
|
||||
)
|
||||
|
||||
swim = registerPose(
|
||||
poseName = "swim",
|
||||
poseType = PoseType.SWIM,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("tentacool", "water_swim")
|
||||
)
|
||||
)
|
||||
|
||||
sleep = registerPose(
|
||||
poseName = "sleep",
|
||||
poseType = PoseType.SLEEP,
|
||||
condition = { !it.isInWater },
|
||||
animations = arrayOf(bedrock("tentacool", "sleep"))
|
||||
)
|
||||
|
||||
watersleep = registerPose(
|
||||
poseName = "watersleep",
|
||||
poseType = PoseType.SLEEP,
|
||||
condition = { it.isInWater },
|
||||
animations = arrayOf(bedrock("tentacool", "water_sleep"))
|
||||
)
|
||||
}
|
||||
|
||||
// override fun getFaintAnimation(
|
||||
// pokemonEntity: PokemonEntity,
|
||||
// state: PosableState<PokemonEntity>
|
||||
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("tentacool", "faint") else null
|
||||
}
|
||||
+1
-1
@@ -30,7 +30,7 @@ class WartortleModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
|
||||
override var portraitTranslation = Vec3(-0.17, 0.54, 0.0)
|
||||
|
||||
override var profileScale = 0.69F
|
||||
override var profileTranslation = Vec3(-0.04, 0.69, 0.0)
|
||||
override var profileTranslation = Vec3(0.0, 0.69, 0.0)
|
||||
|
||||
lateinit var sleep: CobblemonPose
|
||||
lateinit var standing: CobblemonPose
|
||||
|
||||
-86
@@ -1,86 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen2
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import com.cobblemon.mod.common.util.isBattling
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class BlisseyModel(root: ModelPart) : PokemonPosableModel(root), BipedFrame, BimanualFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("blissey")
|
||||
|
||||
override val leftLeg = getPart("left_foot")
|
||||
override val rightLeg = getPart("right_foot")
|
||||
override val leftArm = getPart("left_arm")
|
||||
override val rightArm = getPart("right_arm")
|
||||
|
||||
override var portraitScale = 1.5F
|
||||
override var portraitTranslation = Vec3(-0.6, 0.9, 0.0)
|
||||
|
||||
override var profileScale = 0.7F
|
||||
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
|
||||
|
||||
lateinit var standing: CobblemonPose
|
||||
lateinit var walk: CobblemonPose
|
||||
lateinit var sleep: CobblemonPose
|
||||
lateinit var battle_idle: CobblemonPose
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("blissey", "blink") }
|
||||
val eggQuirk = quirk { bedrockStateful("blissey", "eggadjust_quirk") }
|
||||
|
||||
sleep = registerPose(
|
||||
poseName = "sleep",
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(
|
||||
bedrock("blissey", "sleep")
|
||||
)
|
||||
)
|
||||
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
condition = { !it.isBattling },
|
||||
quirks = arrayOf(blink, eggQuirk),
|
||||
animations = arrayOf(
|
||||
bedrock("blissey", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("blissey", "ground_walk")
|
||||
)
|
||||
)
|
||||
|
||||
battle_idle = registerPose(
|
||||
poseName = "battle_idle",
|
||||
poseTypes = STATIONARY_POSES,
|
||||
condition = { it.isBattling },
|
||||
quirks = arrayOf(blink, eggQuirk),
|
||||
animations = arrayOf(
|
||||
bedrock("blissey", "battle_idle")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = bedrockStateful("blissey", "faint")
|
||||
}
|
||||
-76
@@ -1,76 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen5
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.ActiveAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class GolettModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("golett")
|
||||
override val head = getPart("head")
|
||||
|
||||
override val leftArm = getPart("arm_left")
|
||||
override val rightArm = getPart("arm_right")
|
||||
override val leftLeg = getPart("leg_left")
|
||||
override val rightLeg = getPart("leg_right")
|
||||
|
||||
override var portraitScale = 3.0F
|
||||
override var portraitTranslation = Vec3(-0.15, -0.45, 0.0)
|
||||
|
||||
override var profileScale = 0.8F
|
||||
override var profileTranslation = Vec3(0.0, 0.55, 0.0)
|
||||
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
lateinit var sleep: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("golett", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("golett", "blink") }
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("golett", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = PoseType.MOVING_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("golett", "ground_walk")
|
||||
)
|
||||
)
|
||||
|
||||
sleep = registerPose(
|
||||
poseName = "sleep",
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("golett", "sleep"))
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState): ActiveAnimation? {
|
||||
return if (state.isNotPosedIn(sleep, standing, walk)) bedrockStateful("golett", "faint") else null
|
||||
}
|
||||
}
|
||||
-15
@@ -224,16 +224,11 @@ object VaryingModelRepository {
|
||||
inbuilt("metapod", ::MetapodModel)
|
||||
inbuilt("butterfree", ::ButterfreeModel)
|
||||
inbuilt("weedle", ::WeedleModel)
|
||||
inbuilt("kakuna", ::KakunaModel)
|
||||
inbuilt("beedrill", ::BeedrillModel)
|
||||
inbuilt("rattata", ::RattataModel)
|
||||
inbuilt("raticate", ::RaticateModel)
|
||||
inbuilt("rattata_alolan", ::RattataAlolanModel)
|
||||
inbuilt("raticate_alolan", ::RaticateAlolanModel)
|
||||
inbuilt("pidgey", ::PidgeyModel)
|
||||
inbuilt("pidgeotto", ::PidgeottoModel)
|
||||
inbuilt("diglett", ::DiglettModel)
|
||||
inbuilt("dugtrio", ::DugtrioModel)
|
||||
inbuilt("krabby", ::KrabbyModel)
|
||||
inbuilt("paras", ::ParasModel)
|
||||
inbuilt("mankey", ::MankeyModel)
|
||||
@@ -248,7 +243,6 @@ object VaryingModelRepository {
|
||||
inbuilt("machop", ::MachopModel)
|
||||
inbuilt("machoke", ::MachokeModel)
|
||||
inbuilt("machamp", ::MachampModel)
|
||||
inbuilt("chansey", ::ChanseyModel)
|
||||
inbuilt("cubone", ::CuboneModel)
|
||||
inbuilt("dodrio", ::DodrioModel)
|
||||
inbuilt("doduo", ::DoduoModel)
|
||||
@@ -261,7 +255,6 @@ object VaryingModelRepository {
|
||||
inbuilt("geodude", ::GeodudeModel)
|
||||
inbuilt("golduck", ::GolduckModel)
|
||||
inbuilt("golem", ::GolemModel)
|
||||
inbuilt("graveler", ::GravelerModel)
|
||||
inbuilt("hitmonchan", ::HitmonchanModel)
|
||||
inbuilt("hitmonlee", ::HitmonleeModel)
|
||||
inbuilt("kabuto", ::KabutoModel)
|
||||
@@ -272,9 +265,6 @@ object VaryingModelRepository {
|
||||
inbuilt("marowak", ::MarowakModel)
|
||||
inbuilt("meowth", ::MeowthModel)
|
||||
inbuilt("nidoqueen", ::NidoqueenModel)
|
||||
inbuilt("nidoranf", ::NidoranfModel)
|
||||
inbuilt("nidoranm", ::NidoranmModel)
|
||||
inbuilt("nidorina", ::NidorinaModel)
|
||||
inbuilt("nidorino", ::NidorinoModel)
|
||||
inbuilt("persian", ::PersianModel)
|
||||
inbuilt("pinsir", ::PinsirModel)
|
||||
@@ -285,14 +275,12 @@ object VaryingModelRepository {
|
||||
inbuilt("rapidash", ::RapidashModel)
|
||||
inbuilt("sandslash", ::SandslashModel)
|
||||
inbuilt("tangela", ::TangelaModel)
|
||||
inbuilt("tentacool", ::TentacoolModel)
|
||||
inbuilt("venomoth", ::VenomothModel)
|
||||
inbuilt("venonat", ::VenonatModel)
|
||||
inbuilt("elekid", ::ElekidModel)
|
||||
inbuilt("hitmontop", ::HitmontopModel)
|
||||
inbuilt("electivire", ::ElectivireModel)
|
||||
inbuilt("tangrowth", ::TangrowthModel)
|
||||
inbuilt("blissey", ::BlisseyModel)
|
||||
inbuilt("piloswine", ::PiloswineModel)
|
||||
inbuilt("quagsire", ::QuagsireModel)
|
||||
inbuilt("swinub", ::SwinubModel)
|
||||
@@ -341,7 +329,6 @@ object VaryingModelRepository {
|
||||
inbuilt("lotad", :: LotadModel)
|
||||
inbuilt("lombre", :: LombreModel)
|
||||
inbuilt("ludicolo", :: LudicoloModel)
|
||||
inbuilt("golett", :: GolettModel)
|
||||
inbuilt("stantler", :: StantlerModel)
|
||||
inbuilt("bergmite", :: BergmiteModel)
|
||||
inbuilt("avalugg", :: AvaluggModel)
|
||||
@@ -549,8 +536,6 @@ object VaryingModelRepository {
|
||||
inbuilt("beartic", ::BearticModel)
|
||||
inbuilt("dreepy", ::DreepyModel)
|
||||
inbuilt("drakloak", ::DrakloakModel)
|
||||
inbuilt("diglett_alolan", ::DiglettAlolanModel)
|
||||
inbuilt("dugtrio_alolan", ::DugtrioAlolanModel)
|
||||
inbuilt("makuhita", ::MakuhitaModel)
|
||||
inbuilt("hariyama", ::HariyamaModel)
|
||||
inbuilt("alomomola", ::AlomomolaModel)
|
||||
|
||||
@@ -45,6 +45,9 @@ object GiveAllPokemon {
|
||||
val orderedSpeces = PokemonSpecies.implemented.sortedBy { it.nationalPokedexNumber }
|
||||
|
||||
for (species in orderedSpeces) {
|
||||
if (species.nationalPokedexNumber !in range) {
|
||||
continue
|
||||
}
|
||||
val pokemon = species.create()
|
||||
pokemon.setOriginalTrainer(player.uuid)
|
||||
pc.add(pokemon)//.sendOut(player.level() as ServerWorld, player.pos)
|
||||
|
||||
+6
-4
@@ -14,7 +14,6 @@ import com.bedrockk.molang.runtime.value.MoValue
|
||||
import com.cobblemon.mod.common.Cobblemon
|
||||
import com.cobblemon.mod.common.CobblemonMemories
|
||||
import com.cobblemon.mod.common.CobblemonSounds
|
||||
import com.cobblemon.mod.common.OrientationControllable
|
||||
import com.cobblemon.mod.common.api.entity.PokemonSender
|
||||
import com.cobblemon.mod.common.api.entity.PokemonSideDelegate
|
||||
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addPokemonEntityFunctions
|
||||
@@ -31,7 +30,6 @@ import com.cobblemon.mod.common.pokemon.Pokemon
|
||||
import com.cobblemon.mod.common.pokemon.activestate.ActivePokemonState
|
||||
import com.cobblemon.mod.common.pokemon.activestate.SentOutState
|
||||
import com.cobblemon.mod.common.util.*
|
||||
import com.cobblemon.mod.common.util.math.geometry.toRadians
|
||||
import com.cobblemon.mod.common.world.gamerules.CobblemonGameRules
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.network.syncher.EntityDataAccessor
|
||||
@@ -43,8 +41,6 @@ import net.minecraft.world.entity.ai.attributes.Attributes
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.level.pathfinder.PathType
|
||||
import net.minecraft.world.phys.Vec3
|
||||
import org.joml.Matrix3f
|
||||
import org.joml.Vector3f
|
||||
import java.util.*
|
||||
import kotlin.math.*
|
||||
|
||||
@@ -52,6 +48,7 @@ import kotlin.math.*
|
||||
class PokemonServerDelegate : PokemonSideDelegate {
|
||||
lateinit var entity: PokemonEntity
|
||||
var acknowledgedHPValue = -1
|
||||
var acknowledgedLevel = -1
|
||||
val passengerOffsets = mutableMapOf<Int, Vec3>()
|
||||
|
||||
/** Mocked properties exposed to the client [PokemonEntity]. */
|
||||
@@ -301,6 +298,11 @@ class PokemonServerDelegate : PokemonSideDelegate {
|
||||
if (entity.ownerUUID == null) entity.ownerUUID = entity.pokemon.getOwnerUUID()
|
||||
}
|
||||
|
||||
if (acknowledgedLevel != entity.pokemon.level) {
|
||||
acknowledgedLevel = entity.pokemon.level
|
||||
updateAttributes(entity.pokemon)
|
||||
}
|
||||
|
||||
val tethering = entity.tethering
|
||||
if (tethering != null && entity.pokemon.tetheringId != tethering.tetheringId) {
|
||||
return entity.discard()
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
package com.cobblemon.mod.common.item
|
||||
|
||||
import com.cobblemon.mod.common.CobblemonSounds
|
||||
import com.cobblemon.mod.common.block.TypeGemClusterBlock
|
||||
import net.minecraft.sounds.SoundEvents
|
||||
import net.minecraft.sounds.SoundSource
|
||||
import net.minecraft.world.InteractionResult
|
||||
@@ -29,7 +30,7 @@ class GemItem(settings: Properties, val block: Block): Item(settings) {
|
||||
if (state.isFaceSturdy(world, pos, direction)) {
|
||||
if (!world.getBlockState(pos.relative(direction)).isAir) return InteractionResult.FAIL
|
||||
context.itemInHand.consume(1, context.player)
|
||||
world.setBlockAndUpdate(pos.relative(direction), block.defaultBlockState().setValue(DirectionalBlock.FACING, direction))
|
||||
world.setBlockAndUpdate(pos.relative(direction), block.defaultBlockState().setValue(DirectionalBlock.FACING, direction).setValue(TypeGemClusterBlock.STAGE, 1))
|
||||
world.playSound(null, pos, CobblemonSounds.TYPE_GEM_CLUSTER_SOUNDS.placeSound, SoundSource.BLOCKS)
|
||||
return InteractionResult.SUCCESS
|
||||
}
|
||||
|
||||
@@ -316,7 +316,6 @@ object CobblemonItemGroups {
|
||||
entries.accept(CobblemonItems.PASTURE)
|
||||
entries.accept(CobblemonItems.TM_MACHINE)
|
||||
entries.accept(CobblemonItems.DISC_SHELF)
|
||||
entries.accept(CobblemonItems.HABITAT_BLOCK)
|
||||
|
||||
entries.accept(CobblemonItems.GILDED_CHEST)
|
||||
entries.accept(CobblemonItems.YELLOW_GILDED_CHEST)
|
||||
|
||||
@@ -40,7 +40,7 @@ class SinisterTeaItem : Item(
|
||||
val holder = inst.effect
|
||||
val effect = holder.value()
|
||||
|
||||
if (effect.isInstantenous) {
|
||||
if (effect.isInstantenous && (inst.duration <= 1)) {
|
||||
effect.applyInstantenousEffect(user as? Player, null, user, inst.amplifier, 1.0)
|
||||
} else {
|
||||
user.addEffect(inst)
|
||||
|
||||
@@ -36,7 +36,7 @@ import net.minecraft.world.level.block.Block
|
||||
class StatusCureItem(val itemName: String, vararg val status: Status, block: Block) : ItemNameBlockItem(block, Properties()), PokemonSelectingItem {
|
||||
override val bagItem = object : BagItem {
|
||||
override val itemName = this@StatusCureItem.itemName
|
||||
override val returnItem = Items.AIR
|
||||
override val returnItem = Items.GLASS_BOTTLE
|
||||
override fun canUse(stack: ItemStack, battle: PokemonBattle, target: BattlePokemon) = canUseOnPokemon(stack, target.effectedPokemon)
|
||||
override fun getShowdownInput(actor: BattleActor, battlePokemon: BattlePokemon, data: String?) = "cure_status${status.takeIf { it.isNotEmpty() }?.let { " ${it.joinToString(separator = " ") { it.showdownName } }" } ?: "" }"
|
||||
}
|
||||
|
||||
+9
@@ -64,6 +64,7 @@ class SpawnPokemonPacket(
|
||||
var rideStamina: Float,
|
||||
var isAlpha: Boolean,
|
||||
var silent: Boolean,
|
||||
var riders: List<Int>,
|
||||
vanillaSpawnPacket: ClientboundAddEntityPacket,
|
||||
) : SpawnExtraDataEntityPacket<SpawnPokemonPacket, PokemonEntity>(vanillaSpawnPacket) {
|
||||
|
||||
@@ -98,6 +99,7 @@ class SpawnPokemonPacket(
|
||||
entity.entityData.get(PokemonEntity.RIDE_STAMINA),
|
||||
entity.entityData.get(PokemonEntity.IS_ALPHA),
|
||||
entity.isSilent,
|
||||
entity.occupiedSeats.map { entry -> entry.value.id }.toList(),
|
||||
vanillaSpawnPacket
|
||||
)
|
||||
|
||||
@@ -134,6 +136,7 @@ class SpawnPokemonPacket(
|
||||
buffer.writeFloat(rideStamina)
|
||||
buffer.writeBoolean(isAlpha)
|
||||
buffer.writeBoolean(silent)
|
||||
buffer.writeCollection(this.riders) { pb, value -> pb.writeInt(value) }
|
||||
}
|
||||
|
||||
override fun applyData(entity: PokemonEntity, level: ClientLevel) {
|
||||
@@ -184,6 +187,10 @@ class SpawnPokemonPacket(
|
||||
|
||||
entity.tickSpawned = this.tickSpawned
|
||||
entity.delegate.updateAge(this.tickSpawned)
|
||||
|
||||
if (this.riders.isNotEmpty()) {
|
||||
this.riders.forEach { level.getEntity(it)?.startRiding(entity) }
|
||||
}
|
||||
}
|
||||
|
||||
override fun checkType(entity: Entity): Boolean = entity is PokemonEntity
|
||||
@@ -222,6 +229,7 @@ class SpawnPokemonPacket(
|
||||
val rideStamina = buffer.readFloat()
|
||||
val isAlpha = buffer.readBoolean()
|
||||
val silent = buffer.readBoolean()
|
||||
val riders = buffer.readList { it.readInt() }.toList()
|
||||
val vanillaPacket = decodeVanillaPacket(buffer)
|
||||
|
||||
return SpawnPokemonPacket(
|
||||
@@ -253,6 +261,7 @@ class SpawnPokemonPacket(
|
||||
rideStamina,
|
||||
isAlpha,
|
||||
silent,
|
||||
riders,
|
||||
vanillaPacket
|
||||
)
|
||||
}
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* 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.net.messages.client.ui
|
||||
|
||||
import com.cobblemon.mod.common.api.net.NetworkPacket
|
||||
import com.cobblemon.mod.common.api.tms.TechnicalMachine
|
||||
import com.cobblemon.mod.common.api.tms.TechnicalMachines
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf
|
||||
|
||||
class SynchronizeActiveTMPacket(val tm: TechnicalMachine?): NetworkPacket<SynchronizeActiveTMPacket> {
|
||||
override val id = ID
|
||||
|
||||
override fun encode(buffer: RegistryFriendlyByteBuf) {
|
||||
buffer.writeNullable(tm?.id) { pb, value -> pb.writeResourceLocation(value) }
|
||||
}
|
||||
|
||||
companion object {
|
||||
val ID = cobblemonResource("synchronize_active_tm")
|
||||
fun decode(buffer: RegistryFriendlyByteBuf): SynchronizeActiveTMPacket {
|
||||
val resourceLocation = buffer.readNullable { it.readResourceLocation() }
|
||||
if (resourceLocation == null) return SynchronizeActiveTMPacket(null)
|
||||
val tm = TechnicalMachines.tmMap[resourceLocation]
|
||||
return SynchronizeActiveTMPacket(tm)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -327,7 +327,6 @@ open class Pokemon : ShowdownIdentifiable {
|
||||
if (experienceGroup.getLevel(experience) != boundedValue || value == Cobblemon.config.maxPokemonLevel) {
|
||||
experience = experienceGroup.getExperience(boundedValue)
|
||||
}
|
||||
// _level.emit(value)
|
||||
|
||||
currentHealth = ceil(hpRatio * maxHealth).coerceIn(0..maxHealth)
|
||||
}
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.pokemon.properties
|
||||
|
||||
import com.cobblemon.mod.common.api.properties.CustomPokemonPropertyType
|
||||
|
||||
object HeldItemVisibleProperty : CustomPokemonPropertyType<BooleanProperty> {
|
||||
override val keys = setOf("held_item_visible")
|
||||
override val needsKey = true
|
||||
|
||||
override fun fromString(value: String?) =
|
||||
when {
|
||||
value == null || value.lowercase() in listOf("true", "yes") -> heldItemVisible(true)
|
||||
value.lowercase() in listOf("false", "no") -> heldItemVisible(false)
|
||||
else -> null
|
||||
}
|
||||
|
||||
fun heldItemVisible(value: Boolean) = BooleanProperty(
|
||||
key = keys.first(),
|
||||
value = value,
|
||||
pokemonApplicator = { pokemon, _ -> pokemon.heldItemVisible = value },
|
||||
entityApplicator = { pokemonEntity, _ -> pokemonEntity.pokemon.heldItemVisible = value },
|
||||
pokemonMatcher = { pokemon, _ -> pokemon.heldItemVisible == value },
|
||||
entityMatcher = { pokemonEntity, _ -> pokemonEntity.pokemon.heldItemVisible == value }
|
||||
)
|
||||
|
||||
override fun examples() = setOf("yes", "no")
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* 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.tms.obtain
|
||||
|
||||
import com.cobblemon.mod.common.api.tms.ObtainMethod
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
|
||||
/**
|
||||
* An [ObtainMethod] for TMs that cannot be unlocked through gameplay triggers.
|
||||
* These TMs are intended to be granted manually by command or MoLang only.
|
||||
*/
|
||||
class ImpossibleObtainMethod : ObtainMethod {
|
||||
override val passive = false
|
||||
|
||||
companion object {
|
||||
val ID = cobblemonResource("impossible")
|
||||
|
||||
fun readFromBuffer(buffer: RegistryFriendlyByteBuf): ImpossibleObtainMethod {
|
||||
return ImpossibleObtainMethod()
|
||||
}
|
||||
}
|
||||
|
||||
override fun matches(player: ServerPlayer) = false
|
||||
|
||||
override fun writeToBuffer(buffer: RegistryFriendlyByteBuf) {
|
||||
buffer.writeUtf("cobblemon:impossible")
|
||||
}
|
||||
}
|
||||
@@ -115,8 +115,26 @@ object TradeManager : RequestManager<TradeManager.TradeRequest>() {
|
||||
}
|
||||
|
||||
CobblemonEvents.TRADE_EVENT_PRE.postThen(TradeEvent.Pre(player1, pokemon2, player2, pokemon1)) {
|
||||
party1.remove(pokemon1)
|
||||
party2.remove(pokemon2)
|
||||
val party1 = player1.party
|
||||
val party2 = player2.party
|
||||
|
||||
val player1Removed = party1.remove(pokemon1)
|
||||
val player2Removed = party2.remove(pokemon2)
|
||||
|
||||
if (!player1Removed || !player2Removed) {
|
||||
if (!player1Removed) {
|
||||
Cobblemon.LOGGER.warn("Failed to remove traded Pokémon ${pokemon1.species.resourceIdentifier} from ${player1.name.string}(${player1.uuid}). Aborting trade with ${player2.name.string}(${player2.uuid}), potential exploit abused.")
|
||||
}
|
||||
|
||||
if (!player2Removed) {
|
||||
Cobblemon.LOGGER.warn("Failed to remove traded Pokémon ${pokemon2.species.resourceIdentifier} from ${player2.name.string}(${player2.uuid}). Aborting trade with ${player1.name.string}(${player1.uuid}), potential exploit abused.")
|
||||
}
|
||||
|
||||
// Revert any changes if one of the removals failed
|
||||
if (player1Removed) party1.add(pokemon1)
|
||||
if (player2Removed) party2.add(pokemon2)
|
||||
return@postThen
|
||||
}
|
||||
|
||||
// If player1 is the OT, keep track of the friendship
|
||||
pokemon1.cacheFriendship(player1.uuid)
|
||||
|
||||
@@ -274,11 +274,9 @@ object DataKeys {
|
||||
// Habitat Blocks
|
||||
const val HABITAT_SPAWNING_STYLE = "SpawningStyle"
|
||||
const val HABITAT_MIMIC = "MimicId"
|
||||
const val HABITAT_PHASE_COUNT = "PhaseCount"
|
||||
const val HABITAT_PHASE_ORDER = "PhaseOrder"
|
||||
const val HABITAT_LEVEL_RANGE = "LevelRange"
|
||||
const val HABITAT_MODIFIERS = "Modifiers"
|
||||
const val HABITAT_POOL = "Pool"
|
||||
|
||||
// --- Pools
|
||||
const val HABITAT_POOL_ID = "PoolId"
|
||||
|
||||
@@ -11,6 +11,7 @@ package com.cobblemon.mod.common.util.adapters
|
||||
import com.cobblemon.mod.common.Cobblemon
|
||||
import com.cobblemon.mod.common.api.tms.ObtainMethod
|
||||
import com.cobblemon.mod.common.tms.obtain.DefaultObtainMethod
|
||||
import com.cobblemon.mod.common.tms.obtain.ImpossibleObtainMethod
|
||||
import com.cobblemon.mod.common.tms.obtain.PlayerHasAdvancementObtainMethod
|
||||
import com.cobblemon.mod.common.tms.obtain.PlayerYObtainMethod
|
||||
import com.cobblemon.mod.common.tms.obtain.UnlockableObtainMethod
|
||||
@@ -29,6 +30,7 @@ object TMObtainMethodAdapter : JsonSerializer<ObtainMethod>, JsonDeserializer<Ob
|
||||
|
||||
init {
|
||||
this.register(UnlockableObtainMethod::class, UnlockableObtainMethod.ID)
|
||||
this.register(ImpossibleObtainMethod::class, ImpossibleObtainMethod.ID)
|
||||
this.register(PlayerHasAdvancementObtainMethod::class, PlayerHasAdvancementObtainMethod.ID)
|
||||
this.register(DefaultObtainMethod::class, DefaultObtainMethod.ID)
|
||||
this.register(PlayerYObtainMethod::class, PlayerYObtainMethod.ID)
|
||||
|
||||
+11
-1
@@ -20,6 +20,7 @@ import net.minecraft.world.level.levelgen.RandomState
|
||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings
|
||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessor
|
||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
class HeightRangeStructureProcessor(
|
||||
val minOffset: Int,
|
||||
@@ -43,7 +44,14 @@ class HeightRangeStructureProcessor(
|
||||
val referenceY = reference.getY(chunkGenerator, heightAccessor, randomState, pos)
|
||||
val minY = referenceY + minOffset
|
||||
val maxY = referenceY + maxOffset
|
||||
return pos.y in minY..maxY
|
||||
val valid = pos.y in minY..maxY
|
||||
|
||||
LOGGER.info(
|
||||
"[HeightRangeVeto] isValidPlacement pos={} reference={} referenceY={} minY={} maxY={} pos.y={} -> valid={}",
|
||||
pos, reference, referenceY, minY, maxY, pos.y, valid
|
||||
)
|
||||
|
||||
return valid
|
||||
}
|
||||
|
||||
override fun processBlock(
|
||||
@@ -105,6 +113,8 @@ class HeightRangeStructureProcessor(
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val LOGGER = LoggerFactory.getLogger("Cobblemon/HeightRangeStructureProcessor")
|
||||
|
||||
val CODEC: MapCodec<HeightRangeStructureProcessor> = RecordCodecBuilder.mapCodec { instance ->
|
||||
instance.group(
|
||||
Codec.INT.fieldOf("min_offset").forGetter { it.minOffset },
|
||||
|
||||
+2392
File diff suppressed because it is too large
Load Diff
+348
-51
@@ -15,114 +15,411 @@
|
||||
"name": "substitute",
|
||||
"pivot": [0, 0, 0]
|
||||
},
|
||||
{
|
||||
"name": "locator_root",
|
||||
"parent": "substitute",
|
||||
"pivot": [0, 0, 0],
|
||||
"locators": {
|
||||
"root": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_top",
|
||||
"parent": "substitute",
|
||||
"pivot": [0, 16.5, 0],
|
||||
"locators": {
|
||||
"top": [0, 16.5, 0]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "body",
|
||||
"parent": "substitute",
|
||||
"pivot": [0, 0, 0]
|
||||
"pivot": [0, 8, 0]
|
||||
},
|
||||
{
|
||||
"name": "locator_middle",
|
||||
"parent": "body",
|
||||
"pivot": [0, 8, 0],
|
||||
"locators": {
|
||||
"middle": [0, 8, 0]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_target",
|
||||
"parent": "body",
|
||||
"pivot": [0, 8.5, -8],
|
||||
"locators": {
|
||||
"target": [0, 8.5, -8]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_physical",
|
||||
"parent": "body",
|
||||
"pivot": [0, 9, -7.25],
|
||||
"locators": {
|
||||
"physical": [0, 9, -7.25]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_special",
|
||||
"parent": "body",
|
||||
"pivot": [0, 9, -7.25],
|
||||
"locators": {
|
||||
"special": [0, 9, -7.25]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "torso",
|
||||
"parent": "body",
|
||||
"pivot": [0, 2, -1.75],
|
||||
"pivot": [0, 2.5, -0.75],
|
||||
"cubes": [
|
||||
{"origin": [-4.5, 0, -4], "size": [9, 8, 7], "inflate": 0.01, "uv": [0, 15]},
|
||||
{"origin": [0, 5.5, 2.5], "size": [0, 3, 3], "uv": [0, 0]}
|
||||
{"origin": [-4.5, 0, -5], "size": [9, 8, 9], "inflate": 0.01, "uv": [0, 0]},
|
||||
{"origin": [0, 4.5, 4], "size": [0, 3, 2], "uv": [6, 58]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "locator_seat_1",
|
||||
"parent": "torso",
|
||||
"pivot": [0, 10.75, 6.5],
|
||||
"locators": {
|
||||
"seat_1": [0, 10.75, 6.5]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_neck_fluff",
|
||||
"parent": "torso",
|
||||
"pivot": [0, 8.25, -0.5],
|
||||
"locators": {
|
||||
"neck_fluff": [0, 8.25, -0.5]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "stuffing_shoulder_left",
|
||||
"parent": "torso",
|
||||
"pivot": [4.35, 6, -3.5],
|
||||
"cubes": [
|
||||
{"origin": [4.3, 5, -4.5], "size": [0, 2, 2], "uv": [60, 33]},
|
||||
{"origin": [4.4, 5.5, -4], "size": [0, 1, 1], "uv": [62, 40]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stuffing_shoulder_right",
|
||||
"parent": "torso",
|
||||
"pivot": [-4.35, 6, -3.5],
|
||||
"cubes": [
|
||||
{"origin": [-4.3, 5, -4.5], "size": [0, 2, 2], "uv": [55, 33]},
|
||||
{"origin": [-4.4, 5.5, -4], "size": [0, 1, 1], "uv": [59, 40]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stuffing_neck",
|
||||
"parent": "torso",
|
||||
"pivot": [0, 7.7, -0.5],
|
||||
"cubes": [
|
||||
{"origin": [-3.5, 7.71, -4], "size": [7, 0, 7], "inflate": 0.01, "uv": [43, 27]},
|
||||
{"origin": [-2.5, 7.96, -3], "size": [5, 0, 5], "uv": [49, 21]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "locator_item",
|
||||
"parent": "torso",
|
||||
"pivot": [0.05, 3.5, -5],
|
||||
"rotation": [90, 0, 0],
|
||||
"locators": {
|
||||
"item": [0, 3.5, -5]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "head",
|
||||
"parent": "torso",
|
||||
"pivot": [0, 8, -4],
|
||||
"pivot": [0, 8, 0]
|
||||
},
|
||||
{
|
||||
"name": "head_ai",
|
||||
"parent": "head",
|
||||
"pivot": [0, 8, 0]
|
||||
},
|
||||
{
|
||||
"name": "head_angle",
|
||||
"parent": "head_ai",
|
||||
"pivot": [0, 8, 0],
|
||||
"cubes": [
|
||||
{"origin": [-4.5, 8, -5], "size": [9, 7, 8], "uv": [0, 0]},
|
||||
{"origin": [0, 9.5, 2.5], "size": [0, 3, 3], "uv": [0, 12]}
|
||||
{"origin": [-4, 7.5, -7], "size": [8, 7, 10], "uv": [0, 17]},
|
||||
{"origin": [-0.5, 7.5, -7], "size": [1, 7, 10], "inflate": 0.01, "uv": [0, 34]},
|
||||
{"origin": [0, 8, 3], "size": [0, 3, 2], "uv": [1, 58]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "eye_right",
|
||||
"parent": "head",
|
||||
"pivot": [-4.5, 12.5, -3.25],
|
||||
"name": "locator_face",
|
||||
"parent": "head_angle",
|
||||
"pivot": [0, 10.5, -7],
|
||||
"locators": {
|
||||
"face": [0, 10.5, -7]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_head",
|
||||
"parent": "head_angle",
|
||||
"pivot": [0, 14.5, -5.5],
|
||||
"locators": {
|
||||
"head": [0, 14.5, -5.5]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_item_face",
|
||||
"parent": "head_angle",
|
||||
"pivot": [0, 13.7, -6.9],
|
||||
"locators": {
|
||||
"item_face": [0, 13.7, -6.9]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "locator_item_hat",
|
||||
"parent": "head_angle",
|
||||
"pivot": [0, 15.75, -2],
|
||||
"locators": {
|
||||
"item_hat": [0, 15.75, -2]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "face_ditto",
|
||||
"parent": "head_angle",
|
||||
"pivot": [0, 10.25, -6.9]
|
||||
},
|
||||
{
|
||||
"name": "eyes_ditto",
|
||||
"parent": "face_ditto",
|
||||
"pivot": [0, 11, -6.92],
|
||||
"cubes": [
|
||||
{"origin": [-4.5, 11.5, -4.75], "size": [0, 2, 3], "inflate": 0.01, "pivot": [-4.5, 12.5, -3.25], "rotation": [5, 0, 0], "uv": [0, 37], "mirror": true}
|
||||
{"origin": [-3.5, 10.5, -6.92], "size": [7, 1, 0], "uv": [26, 52]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "eyes_blink_ditto",
|
||||
"parent": "face_ditto",
|
||||
"pivot": [0, 11, -6.82],
|
||||
"cubes": [
|
||||
{"origin": [-4, 10.5, -6.82], "size": [8, 1, 0], "uv": [25, 54]},
|
||||
{"origin": [-3.5, 11, -6.83], "size": [7, 1, 0], "uv": [26, 56]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "mouth_ditto",
|
||||
"parent": "face_ditto",
|
||||
"pivot": [0, 9.25, -6.9],
|
||||
"cubes": [
|
||||
{"origin": [-3, 8.5, -6.92], "size": [6, 1, 0], "uv": [27, 60]},
|
||||
{"origin": [-4, 9, -6.92], "size": [8, 1, 0], "uv": [25, 58]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "mouth_open_ditto",
|
||||
"parent": "face_ditto",
|
||||
"pivot": [0, 9, -6.81],
|
||||
"cubes": [
|
||||
{"origin": [-4, 8, -6.82], "size": [8, 2, 0], "uv": [25, 62]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "face",
|
||||
"parent": "head_angle",
|
||||
"pivot": [0, 10.5, -4.51]
|
||||
},
|
||||
{
|
||||
"name": "mouth",
|
||||
"parent": "face",
|
||||
"pivot": [0, 9.5, -7.01],
|
||||
"cubes": [
|
||||
{"origin": [-4, 8.5, -7.01], "size": [8, 2, 2], "inflate": 0.01, "uv": [23, 47]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "eyes",
|
||||
"parent": "face",
|
||||
"pivot": [0, 12, -3.75]
|
||||
},
|
||||
{
|
||||
"name": "eye_left",
|
||||
"parent": "head",
|
||||
"pivot": [4.5, 12.5, -3.25],
|
||||
"parent": "eyes",
|
||||
"pivot": [4, 12, -3.75],
|
||||
"cubes": [
|
||||
{"origin": [4.5, 11.5, -4.75], "size": [0, 2, 3], "inflate": 0.01, "pivot": [4.5, 12.5, -3.25], "rotation": [5, 0, 0], "uv": [0, 37]}
|
||||
{"origin": [3, 10.5, -6], "size": [1, 2, 4], "inflate": 0.01, "uv": [12, 52]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "locator_eye_left",
|
||||
"parent": "eye_left",
|
||||
"pivot": [4, 11.5, -4],
|
||||
"rotation": [0, -90, 0],
|
||||
"locators": {
|
||||
"eye2": [4, 11.5, -4]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eye_right",
|
||||
"parent": "eyes",
|
||||
"pivot": [-4, 12, -3.75],
|
||||
"cubes": [
|
||||
{"origin": [-4, 10.5, -6], "size": [1, 2, 4], "inflate": 0.01, "uv": [1, 52]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "locator_eye_right",
|
||||
"parent": "eye_right",
|
||||
"pivot": [-4, 11.5, -4],
|
||||
"rotation": [0, 90, 0],
|
||||
"locators": {
|
||||
"eye1": [-4, 11.5, -4]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ears",
|
||||
"parent": "head_angle",
|
||||
"pivot": [0, 14, -0.1]
|
||||
},
|
||||
{
|
||||
"name": "ear_left",
|
||||
"parent": "ears",
|
||||
"pivot": [1.5, 14.5, -0.5],
|
||||
"rotation": [0, -25, 0],
|
||||
"cubes": [
|
||||
{"origin": [1, 14.5, -0.5], "size": [3, 2, 0], "uv": [11, 61]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ear_right",
|
||||
"parent": "head",
|
||||
"pivot": [-3.25, 14.5, 0],
|
||||
"rotation": [-10, 15, -20],
|
||||
"parent": "ears",
|
||||
"pivot": [-1.5, 14.5, -0.5],
|
||||
"rotation": [0, 25, 0],
|
||||
"cubes": [
|
||||
{"origin": [-4.75, 14.5, 0], "size": [3, 3, 0], "uv": [0, 18]}
|
||||
{"origin": [-4, 14.5, -0.5], "size": [3, 2, 0], "uv": [18, 61]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ear_left",
|
||||
"parent": "head",
|
||||
"pivot": [3.25, 14.5, 0],
|
||||
"rotation": [-10, -15, 20],
|
||||
"cubes": [
|
||||
{"origin": [1.75, 14.5, 0], "size": [3, 3, 0], "uv": [0, 0]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "arm_right",
|
||||
"name": "arms",
|
||||
"parent": "torso",
|
||||
"pivot": [-3.25, 6.25, -3],
|
||||
"rotation": [-5, 15, 0],
|
||||
"cubes": [
|
||||
{"origin": [-4.75, 4.75, -6.5], "size": [3, 3, 4], "uv": [26, 0]}
|
||||
]
|
||||
"pivot": [0, 6, -2.5]
|
||||
},
|
||||
{
|
||||
"name": "arm_left",
|
||||
"parent": "torso",
|
||||
"pivot": [3.25, 6.25, -3],
|
||||
"rotation": [-5, -15, 0],
|
||||
"parent": "arms",
|
||||
"pivot": [3.5, 6, -2.5],
|
||||
"cubes": [
|
||||
{"origin": [1.75, 4.75, -6.5], "size": [3, 3, 4], "uv": [16, 30]}
|
||||
{"origin": [3.5, 4.5, -6], "size": [2, 3, 4], "uv": [36, 27]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stuffing_arm_left",
|
||||
"parent": "arm_left",
|
||||
"pivot": [3.6925, 6, -3.5],
|
||||
"cubes": [
|
||||
{"origin": [3.735, 5, -4.5], "size": [0, 2, 2], "uv": [60, 36]},
|
||||
{"origin": [3.65, 5.5, -4], "size": [0, 1, 1], "uv": [62, 42]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "locator_hand_secondary",
|
||||
"parent": "arm_left",
|
||||
"pivot": [0.5, 6, -6],
|
||||
"locators": {
|
||||
"hand_secondary": [0.5, 6, -6]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "arm_right",
|
||||
"parent": "arms",
|
||||
"pivot": [-4.5, 6, -2.5],
|
||||
"cubes": [
|
||||
{"origin": [-5.5, 4.5, -6], "size": [2, 3, 4], "uv": [42, 34]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stuffing_arm_right",
|
||||
"parent": "arm_right",
|
||||
"pivot": [-4.6925, 6, -3.5],
|
||||
"cubes": [
|
||||
{"origin": [-3.735, 5, -4.5], "size": [0, 2, 2], "uv": [55, 36]},
|
||||
{"origin": [-3.65, 5.5, -4], "size": [0, 1, 1], "uv": [59, 42]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "locator_hand_primary",
|
||||
"parent": "arm_right",
|
||||
"pivot": [-3.5, 6, -6],
|
||||
"locators": {
|
||||
"hand_primary": [-3.5, 6, -6]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tail",
|
||||
"parent": "torso",
|
||||
"pivot": [0, 2.25, 3],
|
||||
"pivot": [0, 2.25, 3.5],
|
||||
"cubes": [
|
||||
{"origin": [-2, 0.25, 2], "size": [4, 4, 5], "uv": [27, 25]}
|
||||
{"origin": [-2.5, 0.25, 3], "size": [5, 4, 5], "uv": [36, 11]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "locator_tail",
|
||||
"parent": "tail",
|
||||
"pivot": [0, 2.25, 6.5],
|
||||
"rotation": [180, 0, 0],
|
||||
"locators": {
|
||||
"tail": [0, 2.25, 6.5]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tail2",
|
||||
"parent": "tail",
|
||||
"pivot": [0, 0.25, 7],
|
||||
"pivot": [0, 2, 8],
|
||||
"cubes": [
|
||||
{"origin": [-1.5, 0.25, 7], "size": [3, 3, 3], "uv": [32, 19]}
|
||||
{"origin": [-1.5, 0.5, 7.5], "size": [3, 3, 4], "uv": [36, 20]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "leg_right",
|
||||
"name": "locator_tail_tip",
|
||||
"parent": "tail2",
|
||||
"pivot": [0, 2, 11.5],
|
||||
"rotation": [180, 0, 0],
|
||||
"locators": {
|
||||
"tail_tip": [0, 2, 11.5]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "legs",
|
||||
"parent": "body",
|
||||
"pivot": [-3.5, 2, -1.75],
|
||||
"rotation": [0, 15, 0],
|
||||
"cubes": [
|
||||
{"origin": [-5, 0, -6.25], "size": [3, 4, 5], "uv": [29, 10]}
|
||||
]
|
||||
"pivot": [0, 2.5, -0.75]
|
||||
},
|
||||
{
|
||||
"name": "leg_left",
|
||||
"parent": "body",
|
||||
"pivot": [3.5, 2, -1.75],
|
||||
"rotation": [0, -15, 0],
|
||||
"parent": "legs",
|
||||
"pivot": [5, 2.5, -0.75],
|
||||
"cubes": [
|
||||
{"origin": [2, 0, -6.25], "size": [3, 4, 5], "uv": [0, 30]}
|
||||
{"origin": [3.5, 0.5, -7.25], "size": [3, 4, 7], "uv": [22, 34]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "locator_foot_secondary",
|
||||
"parent": "leg_left",
|
||||
"pivot": [5, 2.5, -6.75],
|
||||
"locators": {
|
||||
"foot_secondary": [5, 2.5, -6.75]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "leg_right",
|
||||
"parent": "legs",
|
||||
"pivot": [-5, 2.5, -0.75],
|
||||
"cubes": [
|
||||
{"origin": [-6.5, 0.5, -7.25], "size": [3, 4, 7], "uv": [36, 0]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "locator_foot_primary",
|
||||
"parent": "leg_right",
|
||||
"pivot": [-5, 2.5, -6.75],
|
||||
"locators": {
|
||||
"foot_primary": [-5, 2.5, -6.75]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,10 +1,33 @@
|
||||
{
|
||||
"portraitScale": 1.8,
|
||||
"portraitTranslation": [-0.11, -0.36, 0],
|
||||
"profileScale": 1.0,
|
||||
"profileTranslation": [0.0, 0.18, 0.0],
|
||||
"rootBone": "substitute",
|
||||
"animations": {
|
||||
"faint": "q.bedrock_primary('substitute', math.random(0, 1) < (1/3) ? 'destroy_flop' : (math.random(0, 1) < 0.5 ? 'destroy_fling_left' : 'destroy_fling_right'), q.curve('one'))",
|
||||
"recoil": "q.bedrock_stateful('substitute', 'recoil')"
|
||||
},
|
||||
"poses": {
|
||||
"battle-standing": {
|
||||
"poseTypes": ["STAND"],
|
||||
"isBattle": true,
|
||||
"animations": [
|
||||
"q.bedrock('substitute', 'ground_idle')"
|
||||
]
|
||||
},
|
||||
"standing": {
|
||||
"poseName": "standing",
|
||||
"transformTicks": 10,
|
||||
"allPoseTypes": true,
|
||||
"animations": []
|
||||
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
|
||||
"isBattle": false,
|
||||
"animations": [
|
||||
"q.bedrock('substitute', 'ground_idle')"
|
||||
]
|
||||
},
|
||||
"walking": {
|
||||
"poseTypes": ["WALK"],
|
||||
"animations": [
|
||||
"q.bedrock('substitute', 'ground_idle')"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+10
@@ -12,6 +12,16 @@
|
||||
{
|
||||
"aspects": ["shiny"],
|
||||
"texture": "cobblemon:textures/pokemon/substitute_shiny.png"
|
||||
},
|
||||
{
|
||||
"aspects": ["alpha_eyes"],
|
||||
"layers": [
|
||||
{
|
||||
"name": "alpha_eyes",
|
||||
"texture": "cobblemon:textures/pokemon/substitute_alpha.png",
|
||||
"emissive": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+257
-92
@@ -5,19 +5,8 @@
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": [
|
||||
"math.clamp(math.sin(q.anim_time*90*2)*1,-1,0)+math.clamp(math.sin(q.anim_time*90*2)*1,0,1)+math.sin(q.anim_time*90*2)*0.5",
|
||||
0,
|
||||
"math.clamp(math.sin(q.anim_time*90*4)*0.5,-1,0)+math.clamp(math.sin(q.anim_time*90*4)*0.5,0,1)+math.sin(q.anim_time*90*4)*0.1"
|
||||
],
|
||||
"position": [
|
||||
0,
|
||||
"(-math.clamp(math.sin(q.anim_time*90*2)*0.2,-0.1,0)-math.clamp(math.sin(q.anim_time*90*2)*0.2,0,0.1)-math.sin(q.anim_time*90*2)*0.2)*0.1",
|
||||
0
|
||||
]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": ["-math.clamp(math.sin(q.anim_time*90*2)*0.5,-0.8,0)-math.clamp(math.sin(q.anim_time*90*2)*0.5,0,0.8)-math.sin(q.anim_time*90*2)*0.5", 0, 0]
|
||||
"rotation": ["-math.sin(q.anim_time*90*2)*1", 0, "math.sin(q.anim_time*90*2-90)*0.5"],
|
||||
"position": ["-math.sin(q.anim_time*90*2-90)*-0.1", 0.5, "math.sin(q.anim_time*90*2)*0.2"]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -25,71 +14,226 @@
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": [
|
||||
"math.clamp(math.sin(q.anim_time*90*1)*1,-1,0)+math.clamp(math.sin(q.anim_time*90*1)*1,0,1)+math.sin(q.anim_time*90*1)*0.5",
|
||||
0,
|
||||
"math.clamp(math.sin(q.anim_time*90*2)*0.5,-1,0)+math.clamp(math.sin(q.anim_time*90*2)*0.5,0,1)+math.sin(q.anim_time*90*2)*0.1"
|
||||
],
|
||||
"position": [
|
||||
0,
|
||||
"(-math.clamp(math.sin(q.anim_time*90*1)*0.2,-0.1,0)-math.clamp(math.sin(q.anim_time*90*1)*0.2,0,0.1)-math.sin(q.anim_time*90*2)*0.2)*0.1",
|
||||
0
|
||||
]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": ["-math.clamp(math.sin(q.anim_time*90*2)*0.5,-0.8,0)-math.clamp(math.sin(q.anim_time*90*2)*0.5,0,0.8)-math.sin(q.anim_time*90*2)*0.5", 0, 0]
|
||||
"rotation": ["-math.sin(q.anim_time*90*1-90)*1", 0, "math.sin(q.anim_time*90*1)*0.5"],
|
||||
"position": ["-math.sin(q.anim_time*90*1)*-0.1", 0.5, "math.sin(q.anim_time*90*1-90)*0.2"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.kakuna.physical": {
|
||||
"animation_length": 3,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": ["-math.sin(q.anim_time*90*3)*-20", 0, "math.cos(q.anim_time*90*3)*-20"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7917": {
|
||||
"post": ["-math.sin(q.anim_time*90*3)*-20", 0, "math.cos(q.anim_time*90*3)*-20"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0417": {
|
||||
"post": [-16.62939, 7, -11.1114],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": [0, 30, -32.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [43.5061, 41.7947, 7.1679],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [43.47759, 0, 7.65367],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.5417": {
|
||||
"post": [36.1795, -24.8022, 10.1779],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.8333": {
|
||||
"post": [8.1692, -24.4369, 32.0742],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.5833": {
|
||||
"post": ["-math.cos(q.anim_time*90*2)*20", 0, "math.sin(q.anim_time*90*2)*-20"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": ["-math.cos(q.anim_time*90*3)*2.6", "math.sin(q.anim_time*90*3)*0.2", "math.sin(q.anim_time*90*3)*-2.6"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7917": {
|
||||
"post": ["-math.cos(q.anim_time*90*3)*2.6", "math.sin(q.anim_time*90*3)*0.2", "math.sin(q.anim_time*90*3)*-2.6"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0417": {
|
||||
"post": [-1.44448, -0.16629, 2.16182],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": [-3.6, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [-2.31, 0.1, -3.81],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [0.99498, 0.18478, -5.40209],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.5417": {
|
||||
"post": [2.22, 0.2, -4.24],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.8333": {
|
||||
"post": [3.11, -0.5, -0.9],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.5833": {
|
||||
"post": ["-math.sin(q.anim_time*90*2)*2.6", "math.cos(q.anim_time*90*2)*-0.2", "math.cos(q.anim_time*90*2)*2.6"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"scale": {
|
||||
"1.125": [1, 1, 1],
|
||||
"1.2083": [1.2, 1.1, 0.8],
|
||||
"1.25": [1, 1, 1]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.kakuna.faint": {
|
||||
"animation_length": 3,
|
||||
"bones": {
|
||||
"kakuna": {
|
||||
"body": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.125": [5, 0, 0],
|
||||
"0.2917": [7.5, 0, 0],
|
||||
"0.75": [0, 0, 0],
|
||||
"1.0417": [-10.17, 0, 0],
|
||||
"1.1667": [-26.43, 0, 0],
|
||||
"1.25": [-52.86, 0, 0],
|
||||
"1.3333": [-72.68, 0, 0],
|
||||
"1.4167": [-92.5, 0, 0],
|
||||
"1.5417": [-97.5, 0, 0],
|
||||
"1.6667": [-100, 0, 0],
|
||||
"1.75": [-100, 0, 0],
|
||||
"2.0833": [-88.46, 0, 0],
|
||||
"2.2917": [-70, 0, 0],
|
||||
"2.3333": [-72.64, 0, 0],
|
||||
"2.375": [-70, 0, 0]
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": ["-math.sin(q.anim_time*90*2)*-20", 0, "math.cos(q.anim_time*90*2)*-20"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": ["-math.sin(q.anim_time*90*2)*-20", 0, "math.cos(q.anim_time*90*2)*-20"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": {
|
||||
"post": ["-19.94-math.sin(q.anim_time*90*32)*1", -0.9, 2.28],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.5417": {
|
||||
"post": ["-24.1146-math.sin(q.anim_time*90*32)*1", -5.1806, -9.6237],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.75": {
|
||||
"post": [-48.12, -9.9, -10.88],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.8333": {
|
||||
"post": [-82.4083, -26.1002, -17.2368],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.0417": {
|
||||
"post": [-102.1119, -24.854, -31.5905],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.3333": {
|
||||
"post": [-99.1014, -23.4505, -14.6775],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.6667": {
|
||||
"post": [-66.3538, -24.159, 6.6861],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [-85.0639, -23.1834, -2.9264],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, -0.2, 0],
|
||||
"0.75": [0, -0.2, 0],
|
||||
"1.0417": [0, -0.2, 0],
|
||||
"1.1667": [0, -0.2, 0],
|
||||
"1.25": [0, -0.1, 0],
|
||||
"1.3333": [0, 0.05, 0],
|
||||
"1.4167": [0, 2.8, 0],
|
||||
"1.5417": [0, 3.3, 0.3],
|
||||
"1.6667": [0, 3.7, 0.6],
|
||||
"1.75": [0, 3.7, 0.6],
|
||||
"2.0833": [0, 2.16, 0.48],
|
||||
"2.2917": [0, -0.3, 0.3],
|
||||
"2.3333": [0, 0.05, 0.33],
|
||||
"2.375": [0, -0.3, 0.3]
|
||||
}
|
||||
},
|
||||
"body": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.75": [0, 0, 0],
|
||||
"1.2917": [0, 0, 0],
|
||||
"1.3333": [0, -0.05954, 0.19093],
|
||||
"1.375": [0, 0, 0],
|
||||
"1.4167": [0, 0.00436, 0.0999],
|
||||
"1.4583": [0, 0, 0],
|
||||
"1.75": [0, 0.98481, -0.17365]
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": ["-math.cos(q.anim_time*90*2)*2.6", "math.sin(q.anim_time*90*2)*0.2", "math.sin(q.anim_time*90*2)*-2.6"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": ["-math.cos(q.anim_time*90*2)*2.6", "math.sin(q.anim_time*90*2)*0.2", "math.sin(q.anim_time*90*2)*-2.6"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": {
|
||||
"post": [0.3, -0.73, 2.28],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.5417": {
|
||||
"post": [-1.64, -1.13, 2.77],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.625": {
|
||||
"post": [-1.96, -1.39, 4.06],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.7083": {
|
||||
"post": [-2.19, -2.77, 4.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.8333": {
|
||||
"post": [-3.71, -4.79, 5.06],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.9167": {
|
||||
"post": [-4.94977, -3.02238, 5.61398],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [-5.87185, -2.2078, 6.20958],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.5": {
|
||||
"post": [-4.3217, -4.5458, 4.90724],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.6667": {
|
||||
"post": [-3.91, -4.91, 5.01],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.75": {
|
||||
"post": [-3.92405, -4.96563, 5.12418],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.9167": {
|
||||
"post": [-4.24661, -5.20065, 5.11229],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [-4.29542, -5.18509, 5.3042],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -100,32 +244,53 @@
|
||||
"body": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.125": [7.5, 2.5, 0],
|
||||
"0.3333": [0, 0, 0],
|
||||
"0.4167": [0, 7.5, 0],
|
||||
"0.5": [0, -7.5, 0],
|
||||
"0.5833": [0, 0, 0],
|
||||
"0.625": [0, 0, 0]
|
||||
"0.125": {
|
||||
"pre": [4.5, 0, 0],
|
||||
"post": [4.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4167": {
|
||||
"post": [-0.1296, 2.4461, -3.0023],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [-0.0867, -2.4636, 2.0016],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": [0, 0, 0]
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.125": [0, -0.2, 0.55],
|
||||
"0.3333": [0, 0, 0.5],
|
||||
"0.625": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"head": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.125": [10, 0, 0],
|
||||
"0.25": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"tail": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.125": [-20, 0, 0],
|
||||
"0.4583": [0, 0, 0]
|
||||
"0.125": {
|
||||
"pre": [0, -0.05, -0.5],
|
||||
"post": [0, -0.05, -0.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": {
|
||||
"post": [0, -0.1, 0.1],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4167": {
|
||||
"post": [-0.25, -0.08, 0.12],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [0.08, -0.05, 0.08],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [0.015, -0.01, 0.02],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
+2450
-1574
File diff suppressed because it is too large
Load Diff
+5638
-6378
File diff suppressed because it is too large
Load Diff
+12480
-1976
File diff suppressed because it is too large
Load Diff
+1973
-133
File diff suppressed because it is too large
Load Diff
+1588
-40
File diff suppressed because it is too large
Load Diff
+1801
-240
File diff suppressed because it is too large
Load Diff
+1233
-47
File diff suppressed because it is too large
Load Diff
+3206
-57
File diff suppressed because it is too large
Load Diff
+2877
-50
File diff suppressed because it is too large
Load Diff
+1185
-8
File diff suppressed because it is too large
Load Diff
+391
-10
@@ -22,6 +22,387 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.diglett.physical": {
|
||||
"animation_length": 3,
|
||||
"bones": {
|
||||
"ground": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": ["-2.5-math.sin(q.anim_time*90*24)*02", 12.5, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": ["-2-math.sin(q.anim_time*90*24)*02", -5, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0833": {
|
||||
"post": ["5-math.sin(q.anim_time*90*24)*02", 5, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.125": {
|
||||
"post": ["-2.5-math.sin(q.anim_time*90*48)*04", 0, "math.sin(q.anim_time*90*32)*05"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": [10, 3.1406, 2.1769],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": ["2.5-math.sin(q.anim_time*90*48)*04", 0, "math.sin(q.anim_time*90*32)*05"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": ["-2.5-math.sin(q.anim_time*90*48)*2", -0.25, "math.sin(q.anim_time*90*32)*2"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.4167": {
|
||||
"post": [0.04, -0.24, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.0417": {
|
||||
"post": [0, -0.04, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.375": {
|
||||
"post": ["-math.sin(q.anim_time*90*24)*02", 5, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.5833": {
|
||||
"post": ["-2.5-math.sin(q.anim_time*90*30)*03", 0, "math.sin(q.anim_time*90*23)*03"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.875": {
|
||||
"post": ["-math.sin(q.anim_time*90*24)*02", 5, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.1667": {
|
||||
"post": [3.81, 0, -0.16],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": {
|
||||
"post": [7.36, 0, 2.18],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.375": {
|
||||
"post": [7.39, -1, 2.69],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4583": {
|
||||
"post": [6.99, 0, 3.6],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.625": {
|
||||
"post": [5.32, 0, 6.24],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.875": {
|
||||
"post": [0, 0, 8],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [-6.18, 0, 3.1],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.125": {
|
||||
"post": [-8.51, 0, -3.46],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [1, 0, -15],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2917": {
|
||||
"post": [1.84, 0.4, -16.22],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [1.5, 0, -16],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [1.5, 0, -16],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.25": {
|
||||
"post": [1.48, -1, -15.81],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.3333": {
|
||||
"post": [1.44, 0, -15.39],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.4583": {
|
||||
"post": [1.26, 0, -13.4],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.75": {
|
||||
"post": [0.27, 0, -2.89],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"body": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.125": {
|
||||
"post": [-0.0639, 0.4994, -10.1039],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [0, 0, -0.2392],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.375": {
|
||||
"post": [-0.38018, -0.04695, -0.49598],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": [-0.38018, -0.04695, -0.49598],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [3.28242, -7.51775, -0.56308],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [45, -15, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.4583": {
|
||||
"post": [-8.1232, 5.2505, 0.0419],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.875": {
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [0, 0, -0.2392],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.25": {
|
||||
"post": [-0.38018, -0.04695, -0.49598],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [0, 0.6, 0.2],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": [0, -0.28, 0.21],
|
||||
"0.375": [0, -2.1, 0.2],
|
||||
"1.2083": [0, -2.1, 0.2],
|
||||
"1.25": {
|
||||
"pre": [0, -0.4, -0.8],
|
||||
"post": [0, -0.4, -0.8],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.875": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [0, 0.6, 0.2],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": [0, -0.28, 0.21],
|
||||
"2.25": [0, -2.1, 0.2],
|
||||
"2.6667": [0, -2.1, 0.2],
|
||||
"2.8333": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"scale": {
|
||||
"0.0": [1, 1, 1],
|
||||
"0.2083": [1, 1, 1],
|
||||
"0.3333": [0.9, 1.2, 0.9],
|
||||
"0.375": [1, 0.1, 1],
|
||||
"1.2083": [1, 0.1, 1],
|
||||
"1.25": [1, 1.3, 1],
|
||||
"1.3333": [1, 1, 1],
|
||||
"2.0833": [1, 1, 1],
|
||||
"2.2083": [0.9, 1.2, 0.9],
|
||||
"2.25": [1, 0.1, 1],
|
||||
"2.6667": [1, 0.1, 1],
|
||||
"2.7917": [1, 1, 1],
|
||||
"3.0": [1, 1, 1]
|
||||
}
|
||||
},
|
||||
"body2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [-2.59808, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.125": {
|
||||
"post": [10.0582, 0, -3.4641],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2917": {
|
||||
"post": [-15.0433, 1.3008, 4.8282],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": {
|
||||
"post": [2.4019, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [2.4019, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [20, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": {
|
||||
"post": [24.9889, 0, -0.5265],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.5833": {
|
||||
"post": [8.6796, 1.8689, -15.6325],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.9583": {
|
||||
"post": [4.3843, -5.6, 3.6003],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [-15.0433, 1.3008, 4.8282],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [2.4019, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.6667": {
|
||||
"post": [2.4019, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.875": {
|
||||
"post": [-2.59808, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [-2.59808, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, 0, 0],
|
||||
"0.3333": [0, -4, 0],
|
||||
"1.2083": [0, -4, 0],
|
||||
"1.25": {
|
||||
"pre": [0, 1, 0],
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": {
|
||||
"post": [0, -1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.6667": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.875": [0, 0, 0],
|
||||
"2.125": [0, 0, 0],
|
||||
"2.2083": [0, -4, 0],
|
||||
"2.6667": [0, -4, 0],
|
||||
"2.875": [0, 0, 0],
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eye_angry_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"1.4583": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.125": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"2.6667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.9167": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_recoil_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"2.125": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.6667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_angry_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"1.4583": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.125": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"2.6667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.9167": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_recoil_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"2.125": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.6667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.diglett.ground_walk": {
|
||||
"loop": true,
|
||||
"animation_length": 4,
|
||||
@@ -161,27 +542,27 @@
|
||||
"0.3333": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.4583": {"pre": [0, 0, -0.1], "post": [0, 0, -0.13]},
|
||||
"0.5": {"pre": [0, 0, -0.13], "post": [0, 0, 0]},
|
||||
"0.8333": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"0.8333": [0, 0, 0],
|
||||
"0.875": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, -0.13]},
|
||||
"1.5": {"pre": [0, 0, -0.13], "post": [0, 0, 0]},
|
||||
"1.7083": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"1.7083": [0, 0, 0],
|
||||
"1.75": {"pre": [0, 0, 0], "post": [0, 0, -0.13]}
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.1667": [0, 0, -0.1],
|
||||
"0.2917": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.3333": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.4583": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.4583": [0, 0, -0.1],
|
||||
"0.5": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.8333": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"0.8333": [0, 0, 0],
|
||||
"0.875": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"1.4583": [0, 0, -0.1],
|
||||
"1.5": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.7083": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"1.7083": [0, 0, 0],
|
||||
"1.75": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
}
|
||||
},
|
||||
@@ -239,19 +620,19 @@
|
||||
}
|
||||
},
|
||||
"animation.diglett.blink": {
|
||||
"animation_length": 0.16667,
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
|
||||
+399
-69
@@ -22,6 +22,387 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.diglett_alolan.physical": {
|
||||
"animation_length": 3,
|
||||
"bones": {
|
||||
"ground": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": ["-2.5-math.sin(q.anim_time*90*24)*02", 12.5, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": ["-2-math.sin(q.anim_time*90*24)*02", -5, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0833": {
|
||||
"post": ["5-math.sin(q.anim_time*90*24)*02", 5, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.125": {
|
||||
"post": ["-2.5-math.sin(q.anim_time*90*48)*04", 0, "math.sin(q.anim_time*90*32)*05"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": [10, 3.1406, 2.1769],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": ["2.5-math.sin(q.anim_time*90*48)*04", 0, "math.sin(q.anim_time*90*32)*05"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": ["-2.5-math.sin(q.anim_time*90*48)*2", -0.25, "math.sin(q.anim_time*90*32)*2"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.4167": {
|
||||
"post": [0.04, -0.24, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.0417": {
|
||||
"post": [0, -0.04, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.375": {
|
||||
"post": ["-math.sin(q.anim_time*90*24)*02", 5, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.5833": {
|
||||
"post": ["-2.5-math.sin(q.anim_time*90*30)*03", 0, "math.sin(q.anim_time*90*23)*03"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.875": {
|
||||
"post": ["-math.sin(q.anim_time*90*24)*02", 5, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.1667": {
|
||||
"post": [3.81, 0, -0.16],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": {
|
||||
"post": [7.36, 0, 2.18],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.375": {
|
||||
"post": [7.39, -1, 2.69],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4583": {
|
||||
"post": [6.99, 0, 3.6],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.625": {
|
||||
"post": [5.32, 0, 6.24],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.875": {
|
||||
"post": [0, 0, 8],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [-6.18, 0, 3.1],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.125": {
|
||||
"post": [-8.51, 0, -3.46],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [1, 0, -15],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2917": {
|
||||
"post": [1.84, 0.4, -16.22],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [1.5, 0, -16],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [1.5, 0, -16],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.25": {
|
||||
"post": [1.48, -1, -15.81],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.3333": {
|
||||
"post": [1.44, 0, -15.39],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.4583": {
|
||||
"post": [1.26, 0, -13.4],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.75": {
|
||||
"post": [0.27, 0, -2.89],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"body": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.125": {
|
||||
"post": [-0.0639, 0.4994, -10.1039],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [0, 0, -0.2392],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.375": {
|
||||
"post": [-0.38018, -0.04695, -0.49598],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": [-0.38018, -0.04695, -0.49598],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [3.28242, -7.51775, -0.56308],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [45, -15, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.4583": {
|
||||
"post": [-8.1232, 5.2505, 0.0419],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.875": {
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [0, 0, -0.2392],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.25": {
|
||||
"post": [-0.38018, -0.04695, -0.49598],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [0, 0.6, 0.2],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": [0, -0.28, 0.21],
|
||||
"0.375": [0, -2.1, 0.2],
|
||||
"1.2083": [0, -2.1, 0.2],
|
||||
"1.25": {
|
||||
"pre": [0, -0.4, -0.8],
|
||||
"post": [0, -0.4, -0.8],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.875": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [0, 0.6, 0.2],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": [0, -0.28, 0.21],
|
||||
"2.25": [0, -2.1, 0.2],
|
||||
"2.6667": [0, -2.1, 0.2],
|
||||
"2.8333": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"scale": {
|
||||
"0.0": [1, 1, 1],
|
||||
"0.2083": [1, 1, 1],
|
||||
"0.3333": [0.9, 1.2, 0.9],
|
||||
"0.375": [1, 0.1, 1],
|
||||
"1.2083": [1, 0.1, 1],
|
||||
"1.25": [1, 1.3, 1],
|
||||
"1.3333": [1, 1, 1],
|
||||
"2.0833": [1, 1, 1],
|
||||
"2.2083": [0.9, 1.2, 0.9],
|
||||
"2.25": [1, 0.1, 1],
|
||||
"2.6667": [1, 0.1, 1],
|
||||
"2.7917": [1, 1, 1],
|
||||
"3.0": [1, 1, 1]
|
||||
}
|
||||
},
|
||||
"body2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [-2.59808, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.125": {
|
||||
"post": [10.0582, 0, -3.4641],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2917": {
|
||||
"post": [-15.0433, 1.3008, 4.8282],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": {
|
||||
"post": [2.4019, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [2.4019, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [20, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": {
|
||||
"post": [24.9889, 0, -0.5265],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.5833": {
|
||||
"post": [8.6796, 1.8689, -15.6325],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.9583": {
|
||||
"post": [4.3843, -5.6, 3.6003],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [-15.0433, 1.3008, 4.8282],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [2.4019, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.6667": {
|
||||
"post": [2.4019, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.875": {
|
||||
"post": [-2.59808, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [-2.59808, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, 0, 0],
|
||||
"0.3333": [0, -4, 0],
|
||||
"1.2083": [0, -4, 0],
|
||||
"1.25": {
|
||||
"pre": [0, 1, 0],
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": {
|
||||
"post": [0, -1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.6667": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.875": [0, 0, 0],
|
||||
"2.125": [0, 0, 0],
|
||||
"2.2083": [0, -4, 0],
|
||||
"2.6667": [0, -4, 0],
|
||||
"2.875": [0, 0, 0],
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eye_angry_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, 0, 0],
|
||||
"1.4583": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.125": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"2.6667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.9167": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_recoil_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"2.125": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.6667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_angry_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, 0, 0],
|
||||
"1.4583": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.125": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"2.6667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.9167": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_recoil_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"2.125": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.6667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.diglett_alolan.ground_walk": {
|
||||
"loop": true,
|
||||
"animation_length": 4,
|
||||
@@ -156,78 +537,33 @@
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, -0.13]
|
||||
},
|
||||
"0.2917": {
|
||||
"pre": [0, 0, -0.13],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"0.3333": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"0.4583": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, -0.13]
|
||||
},
|
||||
"0.5": {
|
||||
"pre": [0, 0, -0.13],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, -0.13]},
|
||||
"0.2917": {"pre": [0, 0, -0.13], "post": [0, 0, 0]},
|
||||
"0.3333": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.4583": {"pre": [0, 0, -0.1], "post": [0, 0, -0.13]},
|
||||
"0.5": {"pre": [0, 0, -0.13], "post": [0, 0, 0]},
|
||||
"0.8333": [0, 0, 0],
|
||||
"0.875": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"1.4583": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, -0.13]
|
||||
},
|
||||
"1.5": {
|
||||
"pre": [0, 0, -0.13],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"0.875": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, -0.13]},
|
||||
"1.5": {"pre": [0, 0, -0.13], "post": [0, 0, 0]},
|
||||
"1.7083": [0, 0, 0],
|
||||
"1.75": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.13]
|
||||
}
|
||||
"1.75": {"pre": [0, 0, 0], "post": [0, 0, -0.13]}
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": [0, 0, -0.1],
|
||||
"0.2917": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"0.3333": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"0.2917": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.3333": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.4583": [0, 0, -0.1],
|
||||
"0.5": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"0.5": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.8333": [0, 0, 0],
|
||||
"0.875": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"0.875": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.4583": [0, 0, -0.1],
|
||||
"1.5": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"1.5": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.7083": [0, 0, 0],
|
||||
"1.75": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
}
|
||||
"1.75": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
}
|
||||
},
|
||||
"body2": {
|
||||
@@ -284,26 +620,20 @@
|
||||
}
|
||||
},
|
||||
"animation.diglett_alolan.blink": {
|
||||
"animation_length": 0.16667,
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+736
-30
@@ -75,6 +75,712 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.dugtrio.physical": {
|
||||
"animation_length": 3,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.9167": {
|
||||
"post": ["-math.sin(q.anim_time*90*24)*02", 0, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.6667": {
|
||||
"post": ["-math.sin(q.anim_time*90*24)*02", 0, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.8333": {
|
||||
"post": [0, 0, -1.25],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.125": {
|
||||
"post": ["-math.sin(q.anim_time*90*6)*2", 0, -7.1],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [0, 0, -16],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.75": {
|
||||
"post": [0, 0, -16.7],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [0, 0, -16],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.4583": {
|
||||
"post": ["-math.sin(q.anim_time*90*6)*2", 0, -13.4],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.75": {
|
||||
"post": ["-math.sin(q.anim_time*90*6)*2", 0, -2.89],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"body1": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [7.5, -4, -5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.125": {
|
||||
"post": [11.9213, -50.9243, -13.7818],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": {
|
||||
"post": [11.6966, -74.0498, -19.4432],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [12.1827, -67.8747, -22.7017],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.625": {
|
||||
"post": [-1.1013, -13.7699, 2.8238],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": [3.28242, 7.51775, 0.56308],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [50.709, 2.0361, -22.8812],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.5417": {
|
||||
"post": [50.709, 2.0361, -22.8812],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.9167": {
|
||||
"post": [16.737, 14.4812, -21.7787],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.0833": {
|
||||
"post": [15, 0, -0.2392],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [-0.38018, -0.04695, -0.49598],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [7.5, -4, -5],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.625": [0, 0, 0],
|
||||
"0.7083": [0, -1, 0],
|
||||
"1.1667": [0, -2.1, 0.2],
|
||||
"1.25": {
|
||||
"pre": [-1.18301, -0.69289, -1.48301],
|
||||
"post": [-1.18301, -0.69289, -1.48301],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2917": [-0.9559, -1.11355, -0.74652],
|
||||
"1.3333": [-1.33194, -0.27231, -1.99076],
|
||||
"1.375": [-1.21126, -0.41201, -1.64918],
|
||||
"1.5833": {
|
||||
"pre": [-0.92, -0.13, -1.18],
|
||||
"post": [-0.92, -0.13, -1.18],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.0833": {
|
||||
"post": [0, 0.6, 0.2],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.1667": [0, -0.28, 0.21],
|
||||
"2.2083": [0, -2.1, 0.2],
|
||||
"2.5833": [0, -2.1, 0.2],
|
||||
"2.7917": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"scale": {
|
||||
"0.5833": [1, 1, 1],
|
||||
"0.625": [0.8, 0.75, 0.8],
|
||||
"0.6667": [1, 0.1, 1],
|
||||
"1.1667": [1, 0.1, 1],
|
||||
"1.25": [0.9, 1.2, 0.9],
|
||||
"1.3333": [1, 1, 1],
|
||||
"2.0417": [1, 1, 1],
|
||||
"2.1667": [0.9, 1.2, 0.9],
|
||||
"2.2083": [1, 0.1, 1],
|
||||
"2.5833": [1, 0.1, 1],
|
||||
"2.7083": [1, 1, 1],
|
||||
"3.0": [1, 1, 1]
|
||||
}
|
||||
},
|
||||
"body1_2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [-1.73205, 0, -2.59808],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.0833": {
|
||||
"post": [8.2679, 0, -2.5981],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [-6.7321, 0, -2.5981],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.625": {
|
||||
"post": [10.7679, 0, -2.5981],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.6667": {
|
||||
"post": [2.4019, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.875": {
|
||||
"post": [-2.59808, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [-1.73205, 0, -2.59808],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.625": [0, 0, 0],
|
||||
"0.6667": [0, -5, 0],
|
||||
"1.1667": [0, -5, 0],
|
||||
"1.25": [0, -2, 0],
|
||||
"2.6667": [0, -4, 0],
|
||||
"2.875": [0, 0, 0],
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"body2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [3.9762, 6.495, 10.7976],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.125": {
|
||||
"post": [10.3891, 24.9296, 12.6481],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [1.3318, 51.3394, 15.2992],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4167": {
|
||||
"post": [-3.8835, 53.834, 15.0282],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [7.6917, 14.8915, -0.6214],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5417": {
|
||||
"post": [0, 17.5, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": [3.28242, -7.51775, -0.56308],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [42.509, -8.8475, 30.2404],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.6667": {
|
||||
"post": [42.509, -8.8475, 30.2404],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.875": {
|
||||
"post": [10.6615, -8.0683, 18.5147],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [0, 0, -0.2392],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.25": {
|
||||
"post": [-0.38018, -0.04695, -0.49598],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [3.9762, 6.495, 10.7976],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0.7766, 0.14679, -0.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.125": {
|
||||
"post": [0.78, -0.45, -0.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": {
|
||||
"post": [0.7766, 0.14679, -0.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [0.7766, 0.14679, -0.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5417": {
|
||||
"post": [0.78, -1.55, -0.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": [0, -2.1, 0.2],
|
||||
"1.25": {
|
||||
"pre": [1.18301, -0.69289, -1.48301],
|
||||
"post": [1.18301, -0.69289, -1.48301],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2917": [0.9559, -1.11355, -0.74652],
|
||||
"1.3333": [1.33194, -0.27231, -1.99076],
|
||||
"1.375": [1.21126, -0.41201, -1.64918],
|
||||
"1.6667": {
|
||||
"pre": [0.88, -0.12, -1.05],
|
||||
"post": [0.88, -0.12, -1.05],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.7917": {
|
||||
"post": [1.27, 0.19, -0.61],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [0, 0.6, 0.2],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": [0, -0.28, 0.21],
|
||||
"2.25": [0, -2.1, 0.2],
|
||||
"2.6667": [0, -2.1, 0.2],
|
||||
"2.8333": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0.7766, 0.14679, -0.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"scale": {
|
||||
"0.5": [1, 1, 1],
|
||||
"0.5417": [0.9, 1, 0.9],
|
||||
"0.5833": [1, 0.1, 1],
|
||||
"1.1667": [1, 0.1, 1],
|
||||
"1.25": [0.9, 1.2, 0.9],
|
||||
"1.3333": [1, 1, 1],
|
||||
"2.0833": [1, 1, 1],
|
||||
"2.2083": [0.9, 1.2, 0.9],
|
||||
"2.25": [1, 0.1, 1],
|
||||
"2.6667": [1, 0.1, 1],
|
||||
"2.7917": [1, 1, 1],
|
||||
"3.0": [1, 1, 1]
|
||||
}
|
||||
},
|
||||
"body3": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [2.0871, -1.0039, 7.5008],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2917": {
|
||||
"post": [-0.4129, -1.0039, 7.5008],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4583": {
|
||||
"post": [4.454, -1.0178, 6.3469],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [-7.8238, -1.0361, "2.5001+math.sin(q.anim_time*90*6-60)*3"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.9167": {
|
||||
"post": [-26.56, -1.04, "2.26+math.sin(q.anim_time*90*6-60)*5"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": [-35.3238, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [32.1762, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [65.145, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2917": {
|
||||
"post": [59.6762, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.6667": {
|
||||
"post": [59.6762, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [15.1947, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [2.6947, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [2.0871, -1.0039, 7.5008],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, -0.3, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": [0, -0.23, 1],
|
||||
"1.2083": [0, -0.23, -3.04],
|
||||
"1.25": [0, 0.47, -2.96],
|
||||
"1.2917": [0, -0.6, -2.87],
|
||||
"1.3333": [0, 0.05, -2.79],
|
||||
"1.375": [0, -0.3, -2.7],
|
||||
"1.4167": [0, 0, -2.62],
|
||||
"1.5833": [0, -0.25, -2.28],
|
||||
"2.2083": [0, -0.3, 0],
|
||||
"2.25": [0, -1.3, 0],
|
||||
"2.75": [0, -2.1, 0.2],
|
||||
"2.875": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, -0.3, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"scale": {
|
||||
"0.0": [1, 1, 1],
|
||||
"1.125": [1, 1, 1],
|
||||
"1.2083": [0.8, 1, 1.35],
|
||||
"1.25": {"pre": [0.8, 1, 1.35], "post": [1.2, 1, 0.9]},
|
||||
"1.3333": [1, 1, 1],
|
||||
"2.2083": [1, 1, 1],
|
||||
"2.2917": [1, 0.1, 1],
|
||||
"2.75": [1, 0.1, 1],
|
||||
"2.8333": [1, 1, 1],
|
||||
"3.0": [1, 1, 1]
|
||||
}
|
||||
},
|
||||
"body3_2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [1.28558, 0, 1.92836],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": ["23.7856-math.sin(q.anim_time*90*16)*7.5", 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4583": {
|
||||
"post": [31.2856, 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [23.35, 0, 1.93],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.875": {
|
||||
"post": [8.7856, 0, "1.9284+math.sin(q.anim_time*90*6-120)*15"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.125": {
|
||||
"post": [-43.1823, 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [-57.1266, 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [21.2856, 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": {
|
||||
"post": [27.6157, 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.5833": {
|
||||
"post": [26.5571, 0, 1.994],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.8333": {
|
||||
"post": [44.7157, 0, 2.0597],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [13.7856, 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.25": {
|
||||
"post": [-15.4247, 0, 0.3886],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2917": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.75": {
|
||||
"post": [2.4019, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.9167": {
|
||||
"post": [-2.59808, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [1.28558, 0, 1.92836],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.7083": [0, 0, 0],
|
||||
"0.9583": [0, 0, 0],
|
||||
"1.125": [-0.05508, -1.63581, -0.30179],
|
||||
"1.2083": [-0.05508, -1.63581, -0.30179],
|
||||
"1.25": [0, 0, 0],
|
||||
"2.25": [0, 0, 0],
|
||||
"2.3333": [0, -8, 0],
|
||||
"2.75": [0, -4, 0],
|
||||
"2.9167": [0, 0, 0],
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eye_left2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.2083": {"pre": [0, 0, 0], "post": [-0.5, 0, 0]},
|
||||
"0.4583": {"pre": [-0.5, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.2083": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.4583": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.25": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.625": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.9583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"3.0": {"pre": [0, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_recoil_left2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.625": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"3.0": {"pre": [0, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_right2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.2083": {"pre": [0, 0, 0], "post": [-0.5, 0, 0]},
|
||||
"0.4583": {"pre": [-0.5, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"pupil_right2": {
|
||||
"position": [0, 0, 0]
|
||||
},
|
||||
"eyelid_right2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.2083": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.4583": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.25": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.625": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.9583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_happy_right2": {
|
||||
"position": [1, 0, 0]
|
||||
},
|
||||
"eyelid_recoil_right2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.625": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_left1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0.5, 0, 0]},
|
||||
"0.5833": {"pre": [0.5, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_angry_left1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.875": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"3.0": {"pre": [0, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.5833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.25": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.5": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.875": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"2.1667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.7917": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_happy_left1": {
|
||||
"position": [-1, 0, 0]
|
||||
},
|
||||
"eyelid_recoil_left1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.5": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_right1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0.5, 0, 0]},
|
||||
"0.5833": {"pre": [0.5, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_angry_right1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0, -0.5, -0.1]},
|
||||
"1.875": {"pre": [0, -0.5, -0.1], "post": [0, 0, -0.1]},
|
||||
"2.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"3.0": {"pre": [0, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_right1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.5833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.25": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.5": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.875": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"2.1667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.7917": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_recoil_right1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.5": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"3.0": {"pre": [0, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.2083": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.5833": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.7083": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.0": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.3333": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.0833": {"pre": [0, 0, -0.1], "post": [0, 0, 0.1]},
|
||||
"2.25": {"pre": [0, 0, 0.1], "post": [0, 0, -0.1]},
|
||||
"2.875": {"pre": [0, 0, -0.1], "post": [0, 0, 0.1]}
|
||||
}
|
||||
},
|
||||
"eyelid_recoil_left3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.0": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.3333": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_right3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.2083": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.5833": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.7083": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.0": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.3333": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.0833": {"pre": [0, 0, -0.1], "post": [0, 0, 0.1]},
|
||||
"2.25": {"pre": [0, 0, 0.1], "post": [0, 0, -0.1]},
|
||||
"2.875": {"pre": [0, 0, -0.1], "post": [0, 0, 0.1]}
|
||||
}
|
||||
},
|
||||
"eyelid_recoil_right3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.0": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.3333": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"3.0": {"pre": [0, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.dugtrio.faint": {
|
||||
"loop": "hold_on_last_frame",
|
||||
"animation_length": 3,
|
||||
@@ -328,13 +1034,13 @@
|
||||
"position": {
|
||||
"0.2917": [0, 0, 0],
|
||||
"0.3333": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.4583": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.4583": [0, 0, -0.1],
|
||||
"0.5": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.25": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"1.25": [0, 0, 0],
|
||||
"1.2917": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.4167": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"1.4167": [0, 0, -0.1],
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.75": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"1.75": [0, 0, 0],
|
||||
"1.7917": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
}
|
||||
},
|
||||
@@ -342,13 +1048,13 @@
|
||||
"position": {
|
||||
"0.2917": [0, 0, 0],
|
||||
"0.3333": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.4583": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.4583": [0, 0, -0.1],
|
||||
"0.5": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.25": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"1.25": [0, 0, 0],
|
||||
"1.2917": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.4167": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"1.4167": [0, 0, -0.1],
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.75": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"1.75": [0, 0, 0],
|
||||
"1.7917": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
}
|
||||
},
|
||||
@@ -372,13 +1078,13 @@
|
||||
"position": {
|
||||
"0.125": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.2917": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.2917": [0, 0, -0.1],
|
||||
"0.3333": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.7083": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"0.7083": [0, 0, 0],
|
||||
"0.75": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.875": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.875": [0, 0, -0.1],
|
||||
"0.9167": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.0417": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"1.0417": [0, 0, 0],
|
||||
"1.0833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
}
|
||||
},
|
||||
@@ -386,13 +1092,13 @@
|
||||
"position": {
|
||||
"0.125": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.2917": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.2917": [0, 0, -0.1],
|
||||
"0.3333": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.7083": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"0.7083": [0, 0, 0],
|
||||
"0.75": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.875": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.875": [0, 0, -0.1],
|
||||
"0.9167": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.0417": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"1.0417": [0, 0, 0],
|
||||
"1.0833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
}
|
||||
},
|
||||
@@ -416,13 +1122,13 @@
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.1667": [0, 0, -0.1],
|
||||
"0.2083": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.25": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"1.25": [0, 0, 0],
|
||||
"1.2917": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.4167": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"1.4167": [0, 0, -0.1],
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"2.375": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"2.375": [0, 0, 0],
|
||||
"2.4167": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
}
|
||||
},
|
||||
@@ -430,13 +1136,13 @@
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.1667": [0, 0, -0.1],
|
||||
"0.2083": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.25": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"1.25": [0, 0, 0],
|
||||
"1.2917": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.4167": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"1.4167": [0, 0, -0.1],
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"2.375": {"pre": [0, 0, 0], "post": [0, 0, 0]},
|
||||
"2.375": [0, 0, 0],
|
||||
"2.4167": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
}
|
||||
}
|
||||
@@ -462,14 +1168,14 @@
|
||||
"eyelid_right1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
@@ -495,14 +1201,14 @@
|
||||
"eyelid_right2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
@@ -528,14 +1234,14 @@
|
||||
"eyelid_right3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
|
||||
+850
-36
@@ -75,6 +75,712 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.dugtrio_alolan.physical": {
|
||||
"animation_length": 3,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.9167": {
|
||||
"post": ["-math.sin(q.anim_time*90*24)*02", 0, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.6667": {
|
||||
"post": ["-math.sin(q.anim_time*90*24)*02", 0, "math.sin(q.anim_time*90*17)*02"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.8333": {
|
||||
"post": [0, 0, -1.25],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.125": {
|
||||
"post": ["-math.sin(q.anim_time*90*6)*2", 0, -7.1],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [0, 0, -16],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.75": {
|
||||
"post": [0, 0, -16.7],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [0, 0, -16],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.4583": {
|
||||
"post": ["-math.sin(q.anim_time*90*6)*2", 0, -13.4],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.75": {
|
||||
"post": ["-math.sin(q.anim_time*90*6)*2", 0, -2.89],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"body1": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [7.5, -4, -5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.125": {
|
||||
"post": [11.9213, -50.9243, -13.7818],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": {
|
||||
"post": [11.6966, -74.0498, -19.4432],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [12.1827, -67.8747, -22.7017],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.625": {
|
||||
"post": [-1.1013, -13.7699, 2.8238],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": [3.28242, 7.51775, 0.56308],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [50.709, 2.0361, -22.8812],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.5417": {
|
||||
"post": [50.709, 2.0361, -22.8812],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.9167": {
|
||||
"post": [16.737, 14.4812, -21.7787],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.0833": {
|
||||
"post": [15, 0, -0.2392],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [-0.38018, -0.04695, -0.49598],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [7.5, -4, -5],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.625": [0, 0, 0],
|
||||
"0.7083": [0, -1, 0],
|
||||
"1.1667": [0, -2.1, 0.2],
|
||||
"1.25": {
|
||||
"pre": [-1.18301, -0.69289, -1.48301],
|
||||
"post": [-1.18301, -0.69289, -1.48301],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2917": [-0.9559, -1.11355, -0.74652],
|
||||
"1.3333": [-1.33194, -0.27231, -1.99076],
|
||||
"1.375": [-1.21126, -0.41201, -1.64918],
|
||||
"1.5833": {
|
||||
"pre": [-0.92, -0.13, -1.18],
|
||||
"post": [-0.92, -0.13, -1.18],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.0833": {
|
||||
"post": [0, 0.6, 0.2],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.1667": [0, -0.28, 0.21],
|
||||
"2.2083": [0, -2.1, 0.2],
|
||||
"2.5833": [0, -2.1, 0.2],
|
||||
"2.7917": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"scale": {
|
||||
"0.5833": [1, 1, 1],
|
||||
"0.625": [0.8, 0.75, 0.8],
|
||||
"0.6667": [1, 0.1, 1],
|
||||
"1.1667": [1, 0.1, 1],
|
||||
"1.25": [0.9, 1.2, 0.9],
|
||||
"1.3333": [1, 1, 1],
|
||||
"2.0417": [1, 1, 1],
|
||||
"2.1667": [0.9, 1.2, 0.9],
|
||||
"2.2083": [1, 0.1, 1],
|
||||
"2.5833": [1, 0.1, 1],
|
||||
"2.7083": [1, 1, 1],
|
||||
"3.0": [1, 1, 1]
|
||||
}
|
||||
},
|
||||
"body1_2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [-1.73205, 0, -2.59808],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.0833": {
|
||||
"post": [8.2679, 0, -2.5981],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [-6.7321, 0, -2.5981],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.625": {
|
||||
"post": [10.7679, 0, -2.5981],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.6667": {
|
||||
"post": [2.4019, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.875": {
|
||||
"post": [-2.59808, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [-1.73205, 0, -2.59808],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.625": [0, 0, 0],
|
||||
"0.6667": [0, -5, 0],
|
||||
"1.1667": [0, -5, 0],
|
||||
"1.25": [0, -2, 0],
|
||||
"2.6667": [0, -4, 0],
|
||||
"2.875": [0, 0, 0],
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"body2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [3.9762, 6.495, 10.7976],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.125": {
|
||||
"post": [10.3891, 24.9296, 12.6481],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [1.3318, 51.3394, 15.2992],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4167": {
|
||||
"post": [-3.8835, 53.834, 15.0282],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [7.6917, 14.8915, -0.6214],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5417": {
|
||||
"post": [0, 17.5, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": [3.28242, -7.51775, -0.56308],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [42.509, -8.8475, 30.2404],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.6667": {
|
||||
"post": [42.509, -8.8475, 30.2404],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.875": {
|
||||
"post": [10.6615, -8.0683, 18.5147],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [0, 0, -0.2392],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.25": {
|
||||
"post": [-0.38018, -0.04695, -0.49598],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [3.9762, 6.495, 10.7976],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0.7766, 0.14679, -0.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.125": {
|
||||
"post": [0.78, -0.45, -0.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": {
|
||||
"post": [0.7766, 0.14679, -0.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [0.7766, 0.14679, -0.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5417": {
|
||||
"post": [0.78, -1.55, -0.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": [0, -2.1, 0.2],
|
||||
"1.25": {
|
||||
"pre": [1.18301, -0.69289, -1.48301],
|
||||
"post": [1.18301, -0.69289, -1.48301],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2917": [0.9559, -1.11355, -0.74652],
|
||||
"1.3333": [1.33194, -0.27231, -1.99076],
|
||||
"1.375": [1.21126, -0.41201, -1.64918],
|
||||
"1.6667": {
|
||||
"pre": [0.88, -0.12, -1.05],
|
||||
"post": [0.88, -0.12, -1.05],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.7917": {
|
||||
"post": [1.27, 0.19, -0.61],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [0, 0.6, 0.2],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": [0, -0.28, 0.21],
|
||||
"2.25": [0, -2.1, 0.2],
|
||||
"2.6667": [0, -2.1, 0.2],
|
||||
"2.8333": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0.7766, 0.14679, -0.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"scale": {
|
||||
"0.5": [1, 1, 1],
|
||||
"0.5417": [0.9, 1, 0.9],
|
||||
"0.5833": [1, 0.1, 1],
|
||||
"1.1667": [1, 0.1, 1],
|
||||
"1.25": [0.9, 1.2, 0.9],
|
||||
"1.3333": [1, 1, 1],
|
||||
"2.0833": [1, 1, 1],
|
||||
"2.2083": [0.9, 1.2, 0.9],
|
||||
"2.25": [1, 0.1, 1],
|
||||
"2.6667": [1, 0.1, 1],
|
||||
"2.7917": [1, 1, 1],
|
||||
"3.0": [1, 1, 1]
|
||||
}
|
||||
},
|
||||
"body3": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [2.0871, -1.0039, 7.5008],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2917": {
|
||||
"post": [-0.4129, -1.0039, 7.5008],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4583": {
|
||||
"post": [4.454, -1.0178, 6.3469],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [-7.8238, -1.0361, "2.5001+math.sin(q.anim_time*90*6-60)*3"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.9167": {
|
||||
"post": [-26.56, -1.04, "2.26+math.sin(q.anim_time*90*6-60)*5"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": [-35.3238, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [32.1762, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [65.145, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2917": {
|
||||
"post": [59.6762, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.6667": {
|
||||
"post": [59.6762, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [15.1947, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [2.6947, -1.0361, 2.5001],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [2.0871, -1.0039, 7.5008],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, -0.3, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": [0, -0.23, 1],
|
||||
"1.2083": [0, -0.23, -3.04],
|
||||
"1.25": [0, 0.47, -2.96],
|
||||
"1.2917": [0, -0.6, -2.87],
|
||||
"1.3333": [0, 0.05, -2.79],
|
||||
"1.375": [0, -0.3, -2.7],
|
||||
"1.4167": [0, 0, -2.62],
|
||||
"1.5833": [0, -0.25, -2.28],
|
||||
"2.2083": [0, -0.3, 0],
|
||||
"2.25": [0, -1.3, 0],
|
||||
"2.75": [0, -2.1, 0.2],
|
||||
"2.875": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, -0.3, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"scale": {
|
||||
"0.0": [1, 1, 1],
|
||||
"1.125": [1, 1, 1],
|
||||
"1.2083": [0.8, 1, 1.35],
|
||||
"1.25": {"pre": [0.8, 1, 1.35], "post": [1.2, 1, 0.9]},
|
||||
"1.3333": [1, 1, 1],
|
||||
"2.2083": [1, 1, 1],
|
||||
"2.2917": [1, 0.1, 1],
|
||||
"2.75": [1, 0.1, 1],
|
||||
"2.8333": [1, 1, 1],
|
||||
"3.0": [1, 1, 1]
|
||||
}
|
||||
},
|
||||
"body3_2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [1.28558, 0, 1.92836],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": ["23.7856-math.sin(q.anim_time*90*16)*7.5", 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4583": {
|
||||
"post": [31.2856, 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [23.35, 0, 1.93],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.875": {
|
||||
"post": [8.7856, 0, "1.9284+math.sin(q.anim_time*90*6-120)*15"],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.125": {
|
||||
"post": [-43.1823, 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [-57.1266, 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": {
|
||||
"post": [21.2856, 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": {
|
||||
"post": [27.6157, 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.5833": {
|
||||
"post": [26.5571, 0, 1.994],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.8333": {
|
||||
"post": [44.7157, 0, 2.0597],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [13.7856, 0, 1.9284],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.25": {
|
||||
"post": [-15.4247, 0, 0.3886],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2917": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.75": {
|
||||
"post": [2.4019, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.9167": {
|
||||
"post": [-2.59808, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [1.28558, 0, 1.92836],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.7083": [0, 0, 0],
|
||||
"0.9583": [0, 0, 0],
|
||||
"1.125": [-0.05508, -1.63581, -0.30179],
|
||||
"1.2083": [-0.05508, -1.63581, -0.30179],
|
||||
"1.25": [0, 0, 0],
|
||||
"2.25": [0, 0, 0],
|
||||
"2.3333": [0, -8, 0],
|
||||
"2.75": [0, -4, 0],
|
||||
"2.9167": [0, 0, 0],
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eye_left2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.2083": {"pre": [0, 0, 0], "post": [-0.5, 0, 0]},
|
||||
"0.4583": {"pre": [-0.5, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.2083": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.4583": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.25": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.625": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.9583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_recoil_left2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.625": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eye_right2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.2083": {"pre": [0, 0, 0], "post": [-0.5, 0, 0]},
|
||||
"0.4583": {"pre": [-0.5, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"pupil_right2": {
|
||||
"position": [0, 0, 0]
|
||||
},
|
||||
"eyelid_right2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.2083": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.4583": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.25": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.625": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.9583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_happy_right2": {
|
||||
"position": [1, 0, 0]
|
||||
},
|
||||
"eyelid_recoil_right2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.625": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_left1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0.5, 0, 0]},
|
||||
"0.5833": {"pre": [0.5, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_angry_left1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.875": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_left1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.5833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.25": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.5": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.875": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"2.1667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.7917": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_happy_left1": {
|
||||
"position": [-1, 0, 0]
|
||||
},
|
||||
"eyelid_recoil_left1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.5": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_right1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0.5, 0, 0]},
|
||||
"0.5833": {"pre": [0.5, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_angry_right1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0, -0.5, -0.1]},
|
||||
"1.875": {"pre": [0, -0.5, -0.1], "post": [0, 0, -0.1]},
|
||||
"2.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_right1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.5833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.25": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.5": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.875": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"2.1667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.7917": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_recoil_right1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.5": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_left3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.2083": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.5833": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.7083": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.0": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.3333": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.0833": {"pre": [0, 0, -0.1], "post": [0, 0, 0.1]},
|
||||
"2.25": {"pre": [0, 0, 0.1], "post": [0, 0, -0.1]},
|
||||
"2.875": {"pre": [0, 0, -0.1], "post": [0, 0, 0.1]}
|
||||
}
|
||||
},
|
||||
"eyelid_recoil_left3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.0": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.3333": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_right3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.2083": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.5833": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.7083": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.0": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.3333": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"2.0833": {"pre": [0, 0, -0.1], "post": [0, 0, 0.1]},
|
||||
"2.25": {"pre": [0, 0, 0.1], "post": [0, 0, -0.1]},
|
||||
"2.875": {"pre": [0, 0, -0.1], "post": [0, 0, 0.1]}
|
||||
}
|
||||
},
|
||||
"eyelid_recoil_right3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.0": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.3333": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.dugtrio_alolan.faint": {
|
||||
"loop": "hold_on_last_frame",
|
||||
"animation_length": 3,
|
||||
@@ -327,29 +1033,59 @@
|
||||
"eyelid_left1": {
|
||||
"position": {
|
||||
"0.2917": [0, 0, 0],
|
||||
"0.3333": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.3333": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"0.4583": [0, 0, -0.1],
|
||||
"0.5": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.5": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"1.25": [0, 0, 0],
|
||||
"1.2917": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.2917": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"1.4167": [0, 0, -0.1],
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.4583": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"1.75": [0, 0, 0],
|
||||
"1.7917": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
"1.7917": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eyelid_right1": {
|
||||
"position": {
|
||||
"0.2917": [0, 0, 0],
|
||||
"0.3333": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.3333": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"0.4583": [0, 0, -0.1],
|
||||
"0.5": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.5": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"1.25": [0, 0, 0],
|
||||
"1.2917": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.2917": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"1.4167": [0, 0, -0.1],
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.4583": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"1.75": [0, 0, 0],
|
||||
"1.7917": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
"1.7917": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"ground2": {
|
||||
@@ -371,29 +1107,59 @@
|
||||
"eyelid_left2": {
|
||||
"position": {
|
||||
"0.125": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.1667": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"0.2917": [0, 0, -0.1],
|
||||
"0.3333": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.3333": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"0.7083": [0, 0, 0],
|
||||
"0.75": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.75": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"0.875": [0, 0, -0.1],
|
||||
"0.9167": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.9167": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"1.0417": [0, 0, 0],
|
||||
"1.0833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
"1.0833": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eyelid_right2": {
|
||||
"position": {
|
||||
"0.125": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.1667": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"0.2917": [0, 0, -0.1],
|
||||
"0.3333": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.3333": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"0.7083": [0, 0, 0],
|
||||
"0.75": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.75": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"0.875": [0, 0, -0.1],
|
||||
"0.9167": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.9167": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"1.0417": [0, 0, 0],
|
||||
"1.0833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
"1.0833": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"ground3": {
|
||||
@@ -415,29 +1181,59 @@
|
||||
"eyelid_left3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.0417": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"0.1667": [0, 0, -0.1],
|
||||
"0.2083": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.2083": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"1.25": [0, 0, 0],
|
||||
"1.2917": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.2917": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"1.4167": [0, 0, -0.1],
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.4583": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"2.375": [0, 0, 0],
|
||||
"2.4167": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
"2.4167": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eyelid_right3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.0417": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"0.1667": [0, 0, -0.1],
|
||||
"0.2083": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.2083": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"1.25": [0, 0, 0],
|
||||
"1.2917": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.2917": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"1.4167": [0, 0, -0.1],
|
||||
"1.4583": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.4583": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
},
|
||||
"2.375": [0, 0, 0],
|
||||
"2.4167": {"pre": [0, 0, 0], "post": [0, 0, -0.1]}
|
||||
"2.4167": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -463,14 +1259,20 @@
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
"0.1667": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eyelid_left1": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
"0.1667": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -496,14 +1298,20 @@
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
"0.1667": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eyelid_left2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
"0.1667": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -529,14 +1337,20 @@
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
"0.1667": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eyelid_left3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
"0.1667": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1035
-184
File diff suppressed because it is too large
Load Diff
+452
@@ -96,6 +96,458 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.poliwrath.ground_walk": {
|
||||
"loop": true,
|
||||
"animation_length": 1.3333,
|
||||
"bones": {
|
||||
"waist": {
|
||||
"rotation": ["9 - math.sin( q.anim_time * 90 * 6 - 45)*-4", "-math.sin( q.anim_time * 90 * 3)*8", "math.sin( q.anim_time * 90 * 3)*4"],
|
||||
"position": [0, "-0.3+math.sin( q.anim_time * 90 * 6)*1.5", 0]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": ["8 - math.sin( q.anim_time * 90 * 6 - 45)*8", "-math.sin( q.anim_time * 90 * 3 - 25)*-8", "math.sin( q.anim_time * 90 * 3 - 25)*-8"],
|
||||
"position": [0, "math.sin( q.anim_time * 90 * 6 + 45)*0.3", 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": ["-math.sin( q.anim_time * 90 * 6 - 45)*-4", "-math.sin( q.anim_time * 90 * 3 - 25)*-1", 0]
|
||||
},
|
||||
"arm_left1": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [-13.63, -16.48493, 36.18],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [-41, 8.77773, 38.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.625": {
|
||||
"post": [-8.15, -36.46773, 42.45],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0833": {
|
||||
"post": [24.5, -46.5535, 23.9],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [-13.63, -16.48493, 36.18],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"arm_left2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 61.31326, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2917": {
|
||||
"post": [0, 70.51, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [0, 45.6917, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.875": {
|
||||
"post": [0, 32.9252, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.125": {
|
||||
"post": [0, 33.79, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [0, 61.31326, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hand_left": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [-6.39933, 10.3524, 6.73624],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.375": {
|
||||
"post": [-6.4, 10.35, 6.74],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [-6.39933, 10.3524, 6.73624],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"finger_front_left1": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 67.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"finger_front_left2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 67.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"finger_back_left1": {
|
||||
"rotation": [0, 0, 70]
|
||||
},
|
||||
"finger_back_left2": {
|
||||
"rotation": [0, 0, 72.5]
|
||||
},
|
||||
"thumb_left1": {
|
||||
"rotation": [35.65498, -41.23664, 27.4926]
|
||||
},
|
||||
"arm_right1": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [-8.15, 36.46773, -42.45],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4167": {
|
||||
"post": [24.5, 46.5535, -23.9],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [-13.63, 16.48493, -36.18],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.9167": {
|
||||
"post": [-41, -8.77773, -38.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [-8.15, 36.46773, -42.45],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"arm_right2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, -45.6917, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [0, -32.9252, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4583": {
|
||||
"post": [0, -33.79, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [0, -61.31326, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.9583": {
|
||||
"post": [0, -70.51, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [0, -45.6917, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hand_right": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [-6.4, -10.35, -6.74],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [-6.39933, -10.3524, -6.73624],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0417": {
|
||||
"post": [-6.4, -10.35, -6.74],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [-6.4, -10.35, -6.74],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"finger_front_right1": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, -67.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [0, 0, -67.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [0, 0, -67.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"finger_front_right2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, -67.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [0, 0, -67.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [0, 0, -67.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"finger_back_right1": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, -70],
|
||||
"0.6667": [0, 0, -70],
|
||||
"1.3333": [0, 0, -70]
|
||||
}
|
||||
},
|
||||
"finger_back_right2": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, -72.5],
|
||||
"0.6667": [0, 0, -72.5],
|
||||
"1.3333": [0, 0, -72.5]
|
||||
}
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": {
|
||||
"0.0": [-3.5, 0, 0],
|
||||
"0.25": [28, 0, 0],
|
||||
"0.3333": [27, 0, 0],
|
||||
"0.4583": [36, 0, 0],
|
||||
"0.6667": {
|
||||
"pre": [-1, 0, 0],
|
||||
"post": [-1, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.8333": {
|
||||
"post": [-57.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0833": [-35, 0, 0],
|
||||
"1.3333": [-3.5, 0, 0]
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, -0.3, 0],
|
||||
"0.25": [0, -1.1, 2.3],
|
||||
"0.3333": [0, 0.25, 2.3],
|
||||
"0.4583": [0, 0.2, 1.8],
|
||||
"0.6667": {
|
||||
"pre": [0, 0.9, -0.4],
|
||||
"post": [0, 0.9, -0.4],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.8333": {
|
||||
"post": [0, 0.8, -2.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": [0, -0.7, -2.3],
|
||||
"1.0833": [0, -1.3, -2.3],
|
||||
"1.3333": [0, -0.3, 0]
|
||||
}
|
||||
},
|
||||
"leg_left2": {
|
||||
"rotation": {
|
||||
"0.0": [9, 0, 0],
|
||||
"0.25": [5, 0, 0],
|
||||
"0.3333": [14, 0, 0],
|
||||
"0.4583": [33, 0, 0],
|
||||
"0.5417": {
|
||||
"pre": [57.7, 0, 0],
|
||||
"post": [57.7, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [53, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.8333": {
|
||||
"post": [34.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": [17, 0, 0],
|
||||
"1.0833": [13, 0, 0],
|
||||
"1.3333": [9, 0, 0]
|
||||
}
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": {
|
||||
"0.0": [-5, 0, 0],
|
||||
"0.25": [-32, 0, 0],
|
||||
"0.3333": [1.5, 0, 0],
|
||||
"0.5": {
|
||||
"pre": [29, 0, 0],
|
||||
"post": [29, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [-1, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": [-13, 0, 0],
|
||||
"1.0833": [22, 0, 0],
|
||||
"1.3333": [-5, 0, 0]
|
||||
}
|
||||
},
|
||||
"toes_left": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, 0, 0],
|
||||
"0.3333": [-41, 0, 0],
|
||||
"0.5": {
|
||||
"pre": [-19, 0, 0],
|
||||
"post": [-19, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.875": {
|
||||
"post": [-23.89, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0417": {
|
||||
"post": [-20.18, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0833": [0, 0, 0],
|
||||
"1.3333": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [-1, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.1667": {
|
||||
"post": [-57.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4167": [-35, 0, 0],
|
||||
"0.6667": [-3.5, 0, 0],
|
||||
"0.9167": [28, 0, 0],
|
||||
"1.0": [27, 0, 0],
|
||||
"1.125": [36, 0, 0],
|
||||
"1.3333": {
|
||||
"pre": [-1, 0, 0],
|
||||
"post": [-1, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0.9, -0.4],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.1667": {
|
||||
"post": [0, 0.8, -2.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": [0, -0.7, -2.3],
|
||||
"0.4167": [0, -1.3, -2.3],
|
||||
"0.6667": [0, -0.3, 0],
|
||||
"0.9167": [0, -1.1, 2.3],
|
||||
"1.0": [0, 0.25, 2.3],
|
||||
"1.125": [0, 0.2, 1.8],
|
||||
"1.3333": {
|
||||
"pre": [0, 0.9, -0.4],
|
||||
"post": [0, 0.9, -0.4],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"leg_right2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [53, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.1667": {
|
||||
"post": [34.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": [17, 0, 0],
|
||||
"0.4167": [13, 0, 0],
|
||||
"0.9167": [5, 0, 0],
|
||||
"1.0": [-1, 0, 0],
|
||||
"1.125": [33, 0, 0],
|
||||
"1.2083": {
|
||||
"pre": [57.7, 0, 0],
|
||||
"post": [57.7, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [53, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [-1, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": [-13, 0, 0],
|
||||
"0.4167": [22, 0, 0],
|
||||
"0.9167": [-32, 0, 0],
|
||||
"1.0": [-6, 0, 0],
|
||||
"1.1667": {
|
||||
"pre": [29, 0, 0],
|
||||
"post": [29, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [-1, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"toes_right": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [-23.89, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.375": {
|
||||
"post": [-20.18, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4167": [0, 0, 0],
|
||||
"0.9167": [0, 0, 0],
|
||||
"1.0": [-41, 0, 0],
|
||||
"1.1667": {
|
||||
"pre": [-19, 0, 0],
|
||||
"post": [-19, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.poliwrath.battle_idle": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
|
||||
+2443
-137
File diff suppressed because it is too large
Load Diff
+2355
-115
File diff suppressed because it is too large
Load Diff
+5816
-71
File diff suppressed because it is too large
Load Diff
+3006
-1307
File diff suppressed because it is too large
Load Diff
+3950
-617
File diff suppressed because it is too large
Load Diff
+6505
-180
File diff suppressed because it is too large
Load Diff
+490
@@ -38,6 +38,496 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.staryu.physical": {
|
||||
"loop": true,
|
||||
"animation_length": 3,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0.2, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [12.8384, 24.0851, -4.3796],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4167": {
|
||||
"post": [17.8384, 24.0851, -4.3796],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5417": [-90, 0, 0],
|
||||
"0.7917": [-90, 0, 0],
|
||||
"0.8333": [-90, 0, 0],
|
||||
"0.875": {"pre": [-90, 0, 0], "post": [-90, 360, 0]},
|
||||
"1.1667": [-90, 360, 0],
|
||||
"1.25": {
|
||||
"pre": [0, 277.5, 0],
|
||||
"post": [0, 277.5, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.4167": {
|
||||
"post": [6.39, 117.88, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.0": {
|
||||
"post": [5.48, -33.58, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [21.1183, -47.3658, -26.7217],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.5417": {
|
||||
"post": [0, 15, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0.2, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0.18, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [0, -0.82, -1],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4167": {
|
||||
"post": [0, -0.82, -1.4],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [6.02, 0.94, 0.77],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [13.15, -0.88, 3.58],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.625": {
|
||||
"post": [15, -3, 5.6],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [14.57, -5.35, 6.54],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.75": {
|
||||
"post": [13.35, -3.68, 8.94],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.8333": {
|
||||
"post": [11.93, -5.63, 11.86],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.875": {
|
||||
"post": [11.18, -5.08, 13.37],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.9583": {
|
||||
"post": [7, -6, 14.6],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0417": {
|
||||
"post": [-6.26, -6.52, 13.55],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.125": {
|
||||
"post": [-15, -6, 1.6],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": [1, 1.4, -20.4],
|
||||
"1.2917": [0.43, 1.45, -20.36],
|
||||
"1.3333": [-1.24, 1.49, -21.13],
|
||||
"1.375": [-1.88, 1.68, -22.94],
|
||||
"1.4167": [-1.54, 1.81, -24.12],
|
||||
"1.5417": [-0.88, 1.67, -23.04],
|
||||
"1.625": [-1.19, 1.92, -22.77],
|
||||
"1.75": [-2.72, 1.42, -23.27],
|
||||
"1.9167": [-3.9, 0.72, -26.2],
|
||||
"2.0": [-3.13, -0.04, -27.22],
|
||||
"2.125": {
|
||||
"pre": [-2.63, -1.14, -29.12],
|
||||
"post": [-2.63, -1.14, -29.12],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2083": {
|
||||
"post": [-2.2, 5.12, -21.92],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.3333": {
|
||||
"post": [-1.31, 8.05, -13.11],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.4583": {
|
||||
"post": [-0.45, 6.18, -4.51],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.5417": {
|
||||
"post": [0, 0.18, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.7083": {
|
||||
"post": [0.03, -1.22, 0.37],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0.18, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"body_limb_left3": {
|
||||
"rotation": {
|
||||
"0.0": [0, 2.5, 0],
|
||||
"3.0": [0, 2.5, 0]
|
||||
}
|
||||
},
|
||||
"body_limb_bottom_left3": {
|
||||
"rotation": {
|
||||
"0.0": [-5, 0, 0],
|
||||
"3.0": [-5, 0, 0]
|
||||
}
|
||||
},
|
||||
"body_limb_top3": {
|
||||
"rotation": {
|
||||
"0.0": [2.5, 0, 0],
|
||||
"3.0": [2.5, 0, 0]
|
||||
}
|
||||
},
|
||||
"body_limb_left": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 7.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [0, 0, 7.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": {
|
||||
"post": [-10, -20, 20],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.875": {
|
||||
"post": [0, 0, 7.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.0": {
|
||||
"post": [5.1686, 19.3385, 5.9149],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.125": {
|
||||
"post": [4.7679, 3.7657, 12.0388],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.1667": {
|
||||
"post": [0, 5, 15],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, 7.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"scale": {
|
||||
"2.125": [1, 1, 1],
|
||||
"2.1667": [1.2, 0.9, 1],
|
||||
"2.2083": [1, 1, 1]
|
||||
}
|
||||
},
|
||||
"body_limb_bottom_left": {
|
||||
"rotation": {
|
||||
"0.0": [0.3, 0, 2.15],
|
||||
"2.5833": [8.66217, -7.5105, 6.41838],
|
||||
"2.7083": [-2.3895, -8.7088, 4.394],
|
||||
"3.0": [0.3, 0, 2.15]
|
||||
}
|
||||
},
|
||||
"body_limb_right": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, -7.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [0, 0, -7.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.3333": {
|
||||
"post": [0, -15, -7.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.8333": {
|
||||
"post": [0, 0, -7.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": {
|
||||
"post": [0, 0, -7.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"body_limb_bottom_right": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0.3, 0, -2.15],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [-12.5699, -2.2333, 16.2155],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": {
|
||||
"post": [-17.0419, 2.0337, 17.6707],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4167": {
|
||||
"post": [-11.9836, 2.1592, 17.6561],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4583": {
|
||||
"post": [0.2897, -0.0776, 12.85],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [0.3, 0, -2.15],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.5833": [-9.7324, -5.0125, 8.4786],
|
||||
"2.7083": [-21.5994, 2.9166, 17.3467],
|
||||
"3.0": {
|
||||
"pre": [0.3, 0, -2.15],
|
||||
"post": [0.3, 0, -2.15],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"scale": {
|
||||
"0.4167": [1, 1, 1],
|
||||
"0.4583": [1, 1.1, 1],
|
||||
"0.5": [1, 1, 1]
|
||||
}
|
||||
},
|
||||
"body_limb_bottom_right3": {
|
||||
"rotation": {
|
||||
"0.0": [-5, 0, 0],
|
||||
"3.0": [-5, 0, 0]
|
||||
}
|
||||
},
|
||||
"body_limb_top": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"face": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"2.5833": [0, 0, 0],
|
||||
"2.7083": [0, -7.5, 0],
|
||||
"2.875": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"body_limb_top2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [-7.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4167": {
|
||||
"post": [12.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5417": {
|
||||
"post": [-12.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"post": [0, 0, 5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.1667": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"body_limb_left2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.1667": {
|
||||
"post": [0, -12.5, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2917": {
|
||||
"post": [-0.0298, 17.7172, 0.0411],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [-0.1175, -19.5709, 0.2845],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7083": {
|
||||
"post": [0, 0, 12.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0833": {
|
||||
"post": [0, 0, 12.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [-0.0112, -22.4314, 11.7901],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.0": [0, 0, 0],
|
||||
"2.0833": [13.4251, -35.9563, -26.0018],
|
||||
"2.125": [17.7735, -35.6335, -34.2819],
|
||||
"2.1667": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"body_limb_right2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.1667": {
|
||||
"post": [0, 12.5, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2917": {
|
||||
"post": [-0.0298, -17.7172, -0.0411],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [-0.1175, 19.5709, -0.2845],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7083": {
|
||||
"post": [0, 0, 12.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0833": {
|
||||
"post": [0, 0, 12.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [-0.0112, 22.4314, 11.7901],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"body_limb_bottom_left2": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"2.5833": [0, 0, 0],
|
||||
"2.7083": [42.9952, 6.5597, 2.4923],
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"body_limb_bottom_right2": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [-18.586, -7.5206, -21.2677],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4167": {
|
||||
"post": [-22.8925, -9.0864, -26.0667],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4583": {
|
||||
"post": [20.9813, -9.8466, 17.4953],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.75": {
|
||||
"post": [0, 0, -10],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0833": {
|
||||
"post": [0, 0, -10],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.2083": {
|
||||
"post": [29.7624, 0.4222, -0.417],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.8333": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.25": {
|
||||
"post": [-13.6038, -3.6461, -10.334],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.4583": [-8.1623, 0.0203, 12.7371],
|
||||
"2.5833": [0, 0, 0],
|
||||
"2.7083": [35.3924, 9.0867, -26.0666],
|
||||
"3.0": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"torso": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, 0, 0],
|
||||
"0.2917": [0, 0, 0],
|
||||
"0.3333": {"pre": [0, 0, 0], "post": [0, 0, 1080]},
|
||||
"0.4167": [0, 0, 1080],
|
||||
"0.875": {
|
||||
"pre": [0, 0, 780],
|
||||
"post": [0, 0, 780],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.25": [0, 0, 201],
|
||||
"1.8333": [0, 0, 153.14],
|
||||
"2.0833": {
|
||||
"pre": [0, 0, 148.3],
|
||||
"post": [0, 0, 148.3],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.2917": {
|
||||
"post": [0, 0, 153.14],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"2.5": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"3.0": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.staryu.ground_walk": {
|
||||
"loop": true,
|
||||
"animation_length": 1.6,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user