Compare commits

...
Author SHA1 Message Date
jackowes 4b465090ad fixes 2026-10-05 20:49:31 -05:00
jackowes a039353a72 walk speed changes 2026-10-05 19:33:47 -05:00
ewwww 3e5733ceaf GREAVARD EMISSIVES 2026-10-05 19:29:25 -04:00
ewwww af29c99b03 properly defined vivillon's pattern forms as forms viewable in the pokedex with form names and dex entries 2026-10-05 18:42:09 -04:00
ewwww 60d596a24f riolu + lucario remodels 2026-10-05 17:14:24 -04:00
ewwww 4003456e5c slakoth animations + minor model tweaks 2026-10-05 05:41:06 -04:00
ewwww 1d21a52d28 shinx, luxio, and luxray remodels 2026-10-05 05:38:23 -04:00
ewwww 2d49c62f85 froakie, frogadier, greninja, & ash-greninja remodels + greninja animations 2026-10-05 05:38:23 -04:00
Kenji_64 da18b082a6 Fixed Alolan Bias Pichu and Pikachu referring to the wrong models and removed the old ones 2026-10-04 12:49:46 +02:00
ewwww f8a16e5081 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2026-10-03 22:23:06 -04:00
Polymeta cad39d8802 Merge branch 'form-move-fix' into 'implement_pokemon'
Form Move Fix

See merge request cable-mc/cobblemon!2420
2026-10-03 22:33:27 +00:00
Kenji_64 00905b8c32 Oops, fixed Pikachu's walk 2026-10-03 21:54:11 +02:00
ewwww 79b3cb8611 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2026-10-03 15:47:45 -04:00
ewwww 797e908621 restored placeholder animations for chespin and quilladin 2026-10-03 15:47:40 -04:00
Kenji_64 3df3c395de Cap Animations for the entire Pikachu line, updated Raichu animations, added faint to Pikachu and 1 new cosmetic for Pikachu!!! 2026-10-03 21:25:11 +02:00
Konoha 89bba8a67a Quick fix changelog and sneaky Spinda fix 2026-10-02 20:51:52 -04:00
Jerzykv 6d6e13be83 Changelog 2026-10-02 09:29:46 +02:00
Jerzykv 899bec77b6 Implemented Fennekin, Braixen and Delphox remodels 2026-10-02 09:28:58 +02:00
Jerzykv 6dd8325772 Implemented Chespin, Quilladin and Chesnaught remodels 2026-10-02 09:28:39 +02:00
JakotensandJakotens 79faadef59 Slight texture updates to Sudowoodo.
Signed-off-by: Jakotens <jjakobdupuyy@gmail.com>
2026-09-30 19:54:48 -06:00
ewwww d9ca7b483d tweaked sudowoodo textures 2026-09-30 19:40:29 -04:00
Instrafe 708f7fc1b8 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2026-09-30 18:59:11 -04:00
Instrafe 621db85845 The evolution knows where it is because it knows where it isn't 2026-09-30 18:59:01 -04:00
Instrafe b09066c580 Added negate tags to regional and Vivillon evolutions to prevent biome overlap 2026-09-30 18:58:23 -04:00
ewwww 7c45f28827 ekans remodel + animations 2026-09-30 13:39:45 -04:00
ewwww 9c1b2cae22 vikavolt fixed placeholder animations 2026-09-30 08:59:25 -04:00
ewwww 16b2f81bd4 arbok animations 2026-09-30 08:57:47 -04:00
Konoha 6e0c005587 Changelog 2026-09-29 16:25:13 -04:00
RedGenesectNinja db0fb8e287 Added implemented flag to Tympole, Palpitoad and Seismitoad 2026-09-28 15:06:55 -05:00
Jerzykv dae36a67d1 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2026-09-28 19:11:43 +02:00
JakotensandJerzykv 6f99862288 Fixed some small texture issues on Pidgeot.
Signed-off-by: Jakotens <jjakobdupuyy@gmail.com>
2026-09-28 19:11:27 +02:00
Jerzykv 0377747e1e implemented flag 2026-09-28 19:11:26 +02:00
JakotensandJakotens 154b653c57 Fixed some small texture issues on Pidgeot.
Signed-off-by: Jakotens <jjakobdupuyy@gmail.com>
2026-09-27 17:33:09 -06:00
Jerzykv 04489bc969 changelog 2026-09-27 12:39:00 +02:00
Jerzykv 25499b3e7a Fixed #2106 2026-09-27 12:37:49 +02:00
Instrafe bb6bda54dc Updated Changelog 2026-09-26 14:17:30 -04:00
Instrafe 9f3dbdc2d8 Implemented remodel for Shroomish 2026-09-26 14:13:33 -04:00
JakotensandJakotens 932148338c Added animations for Treecko and Bonsly. Added remodel and animations for Sudowoodo.
Signed-off-by: Jakotens <jjakobdupuyy@gmail.com>
2026-09-25 23:05:21 -06:00
Jerzykv 309f674853 Implemented Minior 2026-09-24 13:38:30 +02:00
Jerzykv dc705c7720 Fixed Alolan Diglett's cry 2026-09-24 09:48:23 +02:00
ewwww 9bfc577444 oddish, gloom, vileplume, and bellossom remodels + animations 2026-09-22 04:35:07 -04:00
ewwww 3ca6d350fe these were forgotten 2026-09-21 11:40:14 -04:00
Instrafe 2997ce8457 Updated Changelog 2026-09-21 09:54:23 -04:00
Instrafe ff279d8310 Poliwag and Politoed now have remodels + Implemented gender differences for Politoed 2026-09-21 09:53:53 -04:00
Polymeta cdb8ee0d8e [skip-ci] tidy up changelog
Signed-off-by: Polymeta <4726322-polymeta@users.noreply.gitlab.com>
2026-09-21 12:07:55 +01:00
Polymeta e7d86a382c Merge branch 'dex_molang' into 'main'
Molang: Individual Dex molang

See merge request cable-mc/cobblemon!2273
2026-09-21 09:16:10 +00:00
Konoha DandPolymeta eb911df830 Molang: Individual Dex molang 2026-09-21 09:16:10 +00:00
Polymeta 1c30acc53c Merge branch 'implement_pokemon' into 'main'
implement_pokemon

See merge request cable-mc/cobblemon!2417
2026-09-21 09:14:23 +00:00
Polymeta 2a0e8f6d47 [skip-ci] tidy up changelog
Signed-off-by: Polymeta <4726322-polymeta@users.noreply.gitlab.com>
2026-09-21 09:32:44 +01:00
Polymeta e6bd8ec529 Merge branch 'neoforge-reload-fix' into 'main'
Neoforge resource fix

See merge request cable-mc/cobblemon!2333
2026-09-21 08:30:54 +00:00
CraterandPolymeta 911a95e873 Neoforge resource fix 2026-09-21 08:30:53 +00:00
Polymeta 447cfc2ae5 Merge branch 'useful-misc-functions' into 'main'
Smoother ride rotations.

See merge request cable-mc/cobblemon!2407
2026-09-21 08:28:50 +00:00
Polymeta 8dfeb0d260 Merge branch 'no-glass-bottles-in-those' into 'main'
Fixed Mochis and Feathers dropping glass bottles when they shouldn't

See merge request cable-mc/cobblemon!2425
2026-09-21 08:24:28 +00:00
Polymeta caa7b19833 Merge branch 'Snowy-Burrow-Spawns-Fix' into 'main'
Fix Snowy burrows spawns and some floating water in one difting iceberg

See merge request cable-mc/cobblemon!2423
2026-09-21 08:23:17 +00:00
Polymeta 64dd8ae193 fix license header
Signed-off-by: Polymeta <4726322-polymeta@users.noreply.gitlab.com>
2026-09-21 09:17:44 +01:00
Polymeta 156ee6f290 new negate requirement
Signed-off-by: Polymeta <4726322-polymeta@users.noreply.gitlab.com>
2026-09-21 08:23:04 +01:00
Gertimoshka fe433d1417 Fixed Mochis and Feathers dropping glass bottles when they shouldn't 2026-09-20 20:10:25 +02:00
Hiroku 0dc662d295 Merge branch 'starter-screen-fixes' into 'main'
Fixes minor but annoying starter screen fixes

See merge request cable-mc/cobblemon!2424
2026-09-20 09:33:15 +00:00
Gertimoshka 081e370bfd User friendlier changelog 2026-09-20 11:13:08 +02:00
Gertimoshka 3ef0567287 simplifications 2026-09-20 11:05:26 +02:00
Gertimoshka 3cad9e5481 Forgor the Changelog 2026-09-20 11:01:52 +02:00
Gertimoshka dc8b7908be Fixed impropper rendering culling of entries, and random starter not being part of height calculation of the category 2026-09-20 10:52:15 +02:00
Slippy 85085a1eca Decaying Crypt tombstones now will generate with TMs in the gidled chest 2026-09-19 22:40:20 -05:00
Slippy bff59dee6e Fix Snowy burrows spawns and some floating water in one difting iceberg 2026-09-19 22:01:17 -05:00
Hiroku bb5828531a Merge branch 'type-gem-fix' into 'main'
Fix typo and update changelog.

See merge request cable-mc/cobblemon!2422
2026-09-20 02:29:36 +00:00
Deltric cd08e98c28 Fix typo and update changelog. 2026-09-19 21:09:32 -05:00
Jerzykv 331f7ca425 Implemented Burmy, Wormadam and Mothim 2026-09-18 07:15:33 +02:00
Konoha f445c05333 fix: Quick-fix For #updateMovesOnFormChange 2026-09-17 17:38:02 -04:00
RedGenesectNinja 71c9ac0ff0 Updated changelog 2026-09-17 15:15:20 -05:00
GenotypeXD 1404cc0ab5 Sun Lizards Implementation Tags 2026-09-17 15:11:31 -05:00
Konoha a62485fc1f Fix Calyrex form moves 2026-09-17 15:14:27 -04:00
Konoha 044f3080ff Fix Hoopa form moves 2026-09-17 15:09:43 -04:00
Konoha 28b0cab906 Adjust Form Change moves for Kyurem's level-gated ones. 2026-09-17 14:35:15 -04:00
Konoha 82f34d651c Add Kyurem's form moves 2026-09-17 14:32:47 -04:00
GenotypeXD 6ca908a91d Implemented Helioptile Line 2026-09-17 13:05:12 -05:00
Jerzykv 0948b8da9a Fixed Dragonair not using its idle correctly 2026-09-17 19:17:29 +02:00
Jerzykv 22e04a53b3 changelog 2026-09-17 18:39:10 +02:00
Jerzykv df3217b41b Fixed Bramblin always sleeping 2026-09-17 18:38:48 +02:00
Jerzykv 9ff15a1913 Flygon poser fix 2026-09-17 06:43:03 +02:00
RedGenesectNinja ca58801794 Implemented Tympole, Palpitoad and Seismitoad 2026-09-15 23:36:40 -05:00
Instrafe 38fa5e2628 Updated Changelog 2026-09-15 16:46:25 -04:00
Instrafe fae1ae7124 Implemented Absol's remodel 2026-09-15 16:45:59 -04:00
Jerzykv 3ec5f76c73 Implemented Deerling and Sawsbuck remodels 2026-09-15 14:15:37 +02:00
ewwww 5bb8aaba55 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2026-09-15 05:05:08 -04:00
ewwww 23ba41e981 wiglett + wugtrio underwater tweaks 2026-09-15 05:04:40 -04:00
Instrafe 29b049452b Updated Changelog 2026-09-14 19:24:03 -04:00
Instrafe 0b0f665804 Glimmet and Glimmora now have implemented remodels 2026-09-14 19:23:30 -04:00
Kenji_64 5d53fba2ce Fixed Rockruff line missing blinks 2026-09-14 20:47:40 +02:00
FrankTheFarmer 14cc851562 Tweaked Mimikyus poser. Hopefully fixes an issue nobody can replicate 😭 2026-09-14 09:46:55 +10:00
FrankTheFarmer 7223d1fd68 Merge branch 'main' into implement_pokemon 2026-09-14 09:21:43 +10:00
Instrafe 75f52e4cf4 Updated Changelog 2026-09-13 11:10:48 -04:00
Instrafe 55446dd4b1 Implemented remodels for Binacle and Barbaracle 2026-09-13 11:08:58 -04:00
ewwww 8b825d558f cacnea & cacturne remodels + animations 2026-09-13 06:28:57 -04:00
jackowes 9a7f97f11f changelog 2026-09-12 21:52:56 -05:00
jackowes 95b8d62e4a Fix issue with quat spring and replace orientation controller tick slerp with quat spring 2026-09-12 21:45:26 -05:00
Kenji_64 f25a676bd5 Changelog 2026-09-10 13:26:54 +02:00
Kenji_64 a9906762a0 Fixed head_ai and removed battle condition on Lycanroc (all forms) 2026-09-10 13:23:03 +02:00
Kenji_64 7b5b88eca2 Added head movement to Archaludon and added missing sleep poses to Duraludon line 2026-09-10 13:22:34 +02:00
Kenji_64 291682ba52 Added Diglett line faints (which were in the files, but not implemented) 2026-09-10 12:50:56 +02:00
Kenji_64 546d403b45 Fixed Kingambit waddling its legs around when moving 2026-09-10 12:50:22 +02:00
FrankTheFarmer c9f40e32a1 Changedog 2026-09-09 20:42:39 +10:00
FrankTheFarmer d642b8dd07 Candle dog's dad 🪦 🐶 2026-09-09 20:41:42 +10:00
FrankTheFarmer 549a11116e Candle dog. Dog with the candle. We put candle on him 🕯🐶 2026-09-09 20:39:45 +10:00
Polymeta b5468a4a4f Merge branch 'main' into implement_pokemon 2026-09-09 09:06:51 +01:00
ewwww c5d278ccb7 spheal. 2026-09-09 03:42:50 -04:00
ewwww bf5e15de45 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2026-09-09 03:40:21 -04:00
Jerzykvandewwww f4af417267 Fixed Alolan Raticate's cry 2026-09-09 03:40:14 -04:00
FrankTheFarmerandewwww 69c04acaeb ⚡ Vikavolt 2026-09-09 03:40:14 -04:00
FrankTheFarmerandewwww 83a6bb188f 🚎Charjabug💖 2026-09-09 03:40:14 -04:00
FrankTheFarmerandewwww 494a8b5e91 🐛Grubbin 2026-09-09 03:40:14 -04:00
FrankTheFarmerandewwww c8021f2f08 Im putting bugs into cobblemon changelog 2026-09-09 03:40:14 -04:00
Jerzykvandewwww 8cdf3af047 Ampharos now has eye locators 2026-09-09 03:40:14 -04:00
ewwww c90a24e1ab switcheroo part two 2026-09-09 03:40:14 -04:00
FrankTheFarmerandewwww 83e3cfc34e Placeholder idle animation for snover 2026-09-09 03:40:14 -04:00
FrankTheFarmerandewwww 133dd4e5b7 🏔 Added snover line 🌲 2026-09-09 03:40:13 -04:00
FrankTheFarmerandewwww a8cca14b86 Obamasnow 2026-09-09 03:40:13 -04:00
FrankTheFarmerandewwww 9b0f356fa4 Donald Snover 2026-09-09 03:40:13 -04:00
FrankTheFarmerandewwww f2b0a102b6 What if we started implementing pokemon rn rn 2026-09-09 03:40:13 -04:00
FrankTheFarmer a7d01b230a Merge branch 'main' into implement_pokemon 2026-09-09 16:04:20 +10:00
jackowes 2a7db4b9b8 bring in util functions 2026-09-08 20:15:54 -05:00
Jerzykv 77e5f2501d Fixed Alolan Raticate's cry 2026-09-08 19:56:35 +02:00
FrankTheFarmer e6513717bd ⚡ Vikavolt 2026-09-08 21:34:26 +10:00
FrankTheFarmer 0e0c98f693 🚎Charjabug💖 2026-09-08 21:32:56 +10:00
FrankTheFarmer 528bfa4e22 🐛Grubbin 2026-09-08 21:32:09 +10:00
FrankTheFarmer 83c87779d7 Im putting bugs into cobblemon changelog 2026-09-08 21:30:42 +10:00
FrankTheFarmer dc33235144 Merge branch 'refs/heads/main' into implement_pokemon 2026-09-08 21:29:01 +10:00
FrankTheFarmer 935c658c5f Merge branch 'main' into implement_pokemon 2026-09-08 17:59:22 +10:00
Jerzykv 0426f4fbf9 Ampharos now has eye locators 2026-09-07 08:31:09 +02:00
ewwww 46e771a062 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2026-09-05 22:07:28 -04:00
ewwww 4c0095844b Merge remote-tracking branch 'origin/implement_pokemon_2' into implement_pokemon 2026-09-05 22:06:39 -04:00
ewwww 10a2ef27d6 switcheroo part two 2026-08-24 15:36:02 -04:00
FrankTheFarmer 3c7637515c Placeholder idle animation for snover 2026-08-10 13:03:00 +10:00
FrankTheFarmer 0a5abdb331 🏔 Added snover line 🌲 2026-08-09 11:15:45 +10:00
FrankTheFarmer 4ed7413dd2 Obamasnow 2026-08-09 11:13:17 +10:00
FrankTheFarmer 40b66c24fc Donald Snover 2026-08-09 11:12:56 +10:00
FrankTheFarmer 20a35de3d8 What if we started implementing pokemon rn rn 2026-08-08 14:58:20 +10:00
989 changed files with 225023 additions and 37711 deletions
+105 -6
View File
@@ -7,38 +7,137 @@
- Iron Ball, Metal Coat, Throat Spray, HP Up, Protein, Iron, Carbos, Calcium, Zinc, PP Up, PP Max, Upgrade, Dubious Disc, and Loaded Dice.
- The following items can now be placed on various surfaces:
- Galarica Wreath, Magnet, Flame Orb, Life Orb, Toxic Orb, Light Ball, and Smoke Ball.
- The following items can now be placed as blocks, and have additional functionality:
- The following items can now be placed as blocks and have additional functionality:
- Ring Target, Metronome, and Eject Button.
- The following items can now be worn by Players and Pokémon:
- Galarica Wreath, Cleanse Tag, Spell Tag, Sharp Beak, Covert Cloak, Shell Helmet, and Never-Melt Ice.
- Wearable items can now be equipped by a player by holding it and right-clicking (or rebound use/interact)
- Wearable items that can be placed down are exempt from this behaviour.
- New Cosmetic Item for Pikachu: Paper
### New rideable Pokémon
### Fixes
- Fixed #updateMovesOnFormChange not properly initializing a form-swapped Pokemon's non-form_change moves.
### TEST
### Pokémon Added
#### Generation 4
- Snover
- Abomasnow
- Burmy
- Wormadam
- Mothim
#### Regional Forms
#### Generation 5
- Tympole
- Palpitoad
- Seismitoad
#### Generation 6
- Helioptile
- Heliolisk
#### Generation 7
- Grubbin
- Charjabug
- Vikavolt
- Minior
#### Generation 8
- Eternatus
#### Generation 9
- Greavard
- Houndstone
### Model updates for the following Pokémon
- Sudowoodo
- Spheal
- Cacnea
- Cacturne
- Binacle
- Barbaracle
- Glimmet
- Glimmora
- Deerling
- Sawsbuck (All forms)
- Absol
- Poliwag
- Politoed
- Ekans
- Oddish
- Gloom
- Vileplume
- Bellossom
- Shroomish
- Chespin
- Quilladin
- Chesnaught
- Fennekin
- Braixen
- Delphox
- Froakie
- Frogadier
- Greninja
- Shinx
- Luxio
- Luxray
- Slakoth
- Riolu
- Lucario
### Animation updates for the following Pokémon
#### Added sounds to the following moves
- Treecko (New Shoulder Mount!)
- Bonsly (New Shoulder Mount!)
- Sudowoodo
- Cacnea
- Cacturne
- Ekans
- Arbok
- Oddish
- Gloom
- Vileplume
- Bellossom
- Pichu
- Pikachu
- Raichu (+ Alolan)
- Greninja
- Slakoth
### Changes
- Updated various recipes to display in Recipe Groups within the Recipe Book
- Updated most recipes to display more logically/consistently within the Recipe Book's categories
- Make ride rotations less jittery in multiplayer.
- Made regional and Vivillon split-evo locations now mutually exclusive
- Vivillon's patterns are now viewable as forms with form names and unique Pokedex entries displayed.
### Fixes
- Correctly grants "They're Minerals!" advancement when planting a type gem
- Type Gem Blocks now have advancements to give you the recipe in the recipe book (the data for the advancements were inside the recipes somehow??)
- Some other recipes without advancements have also been corrected
- Corrected the TM Recipes for Charge Beam and Payday
- Type Gem blocks now properly generate clusters off of the block.
- Starter Screen Categories will no longer stop rendering if they are bigger than the viewport, and you are not viewing top or bottom edges
- Random Starter option now properly handled in height calculation, so now it won't run off into other categories or be un-accessible due to scroll limits if it causes a new row
- Mochi and Feathers no longer drop glass bottles on use
- Fixed a rare set of concurrency bugs related to reloading packs on NeoForge; fixes a ModernFix issue
- Removed unnecessary conditions for Mimikyu's standing pose. Hopefully fixes the rare instance of it using its shoulder animations during battle in multiplayer scenarios.
- Fixed Rockruff line not blinking
- Fixed Flygon sometimes using its running animation instead of walking
- Fixed Bramblin always sleeping outside of battle
- Fixed Dragonair using its battle idle as a normal idle
- Fixed Lycanroc's head movement
- Added head movement to Archaludon
- Fixed Duraludon line not having any sleep animations
- Fixed Diglett line not having their faint animations
- Fixed Kingambit moving its legs while walking
- Fixed Alolan Diglett's cry not playing
- Fixed shiny alpha Snorlax using the non-shiny texture
- Various Structure fixes
### Developer
### Molang & Datapacks
- A new `negate` variant for evolution requirements has been added, which will negate (invert) the provided inner condition.
- Added Molang functions for individual Pokédex ids, wherein a subdex is passed in as a string to `dex_caught_count` etc.
### Particles
-9
View File
@@ -1,9 +0,0 @@
- Some kind of particle effect for them? they're meant to have glowing eyes, so maybe some red particles on the eye locator
--- global posers? stacked posers?
--- red texture seems to be what some people wanted.
/- shoulder mounts part of it
- omni boost
- roar when player comes within reach, adjust levels
- Riding settings to control what the min scale is for a pokemon to be ridable.
@@ -16,6 +16,7 @@ import com.cobblemon.mod.common.api.molang.ObjectValue
import com.cobblemon.mod.common.api.pokedex.AbstractPokedexManager
import com.cobblemon.mod.common.api.pokedex.CaughtCount
import com.cobblemon.mod.common.api.pokedex.CaughtPercent
import com.cobblemon.mod.common.api.pokedex.Dexes
import com.cobblemon.mod.common.api.pokedex.PokedexEntryProgress
import com.cobblemon.mod.common.api.pokedex.PokedexManager
import com.cobblemon.mod.common.api.pokedex.SeenCount
@@ -74,6 +75,27 @@ object PokedexMoLangFunctions : AbstractMoLangFunctionHolder<AbstractPokedexMana
functions["caught_percent"] = { DoubleValue(pokedex.getGlobalCalculatedValue(CaughtPercent)) }
functions["seen_percent"] = { DoubleValue(pokedex.getGlobalCalculatedValue(SeenPercent)) }
functions["dex_caught_count"] = { params ->
val dexId = params.getString(0).asIdentifierDefaultingNamespace()
if (Dexes.dexEntryMap.containsKey(dexId)) DoubleValue(pokedex.getDexCalculatedValue(dexId, CaughtCount))
else DoubleValue.ZERO
}
functions["dex_seen_count"] = { params ->
val dexId = params.getString(0).asIdentifierDefaultingNamespace()
if (Dexes.dexEntryMap.containsKey(dexId)) DoubleValue(pokedex.getDexCalculatedValue(dexId, SeenCount))
else DoubleValue.ZERO
}
functions["dex_caught_percent"] = { params ->
val dexId = params.getString(0).asIdentifierDefaultingNamespace()
if (Dexes.dexEntryMap.containsKey(dexId)) DoubleValue(pokedex.getDexCalculatedValue(dexId, CaughtPercent).toDouble())
else DoubleValue.ZERO
}
functions["dex_seen_percent"] = { params ->
val dexId = params.getString(0).asIdentifierDefaultingNamespace()
if (Dexes.dexEntryMap.containsKey(dexId)) DoubleValue(pokedex.getDexCalculatedValue(dexId, SeenPercent).toDouble())
else DoubleValue.ZERO
}
when (pokedex) {
is PokedexManager -> {
functions["player_id"] = { StringValue(pokedex.uuid.toString()) }
@@ -8,8 +8,10 @@
package com.cobblemon.mod.common.api.orientation
import com.cobblemon.mod.common.util.math.QuatSpring
import com.cobblemon.mod.common.util.math.geometry.toDegrees
import com.cobblemon.mod.common.util.math.geometry.toRadians
import com.cobblemon.mod.common.util.math.simpleSpringDamperQuat
import net.minecraft.client.Minecraft
import net.minecraft.util.Mth
import net.minecraft.world.entity.LivingEntity
@@ -26,6 +28,8 @@ open class OrientationController(val entity: LivingEntity) {
val FORWARDS: Vector3f = Vector3f(0.0f, 0.0f, -1.0f)
val UP: Vector3f = Vector3f(0.0f, 1.0f, 0.0f)
val LEFT: Vector3f = Vector3f(-1.0f, 0.0f, 0.0f)
private const val TICK_DT = 1f / 20f // Minecraft server tick rate
private const val RENDER_SMOOTH_HALFLIFE = 0.1f // seconds to close ~half the gap
}
open var active: Boolean = false
@@ -33,6 +37,8 @@ open class OrientationController(val entity: LivingEntity) {
var orientation: Matrix3f? = null
private set
private val renderSpring = QuatSpring()
private var renderOrientationO: Matrix3f? = null
private var renderOrientation: Matrix3f? = null
@@ -54,6 +60,8 @@ open class OrientationController(val entity: LivingEntity) {
orientation = null
renderOrientationO = null
renderOrientation = null
renderSpring.quat.identity()
renderSpring.angVel.set(0f, 0f, 0f)
active = false
}
@@ -77,18 +85,26 @@ open class OrientationController(val entity: LivingEntity) {
return oldQuat
}
/** Every tick move the current render orientation towards the last known true orientation **/
fun tick() {
if (!active || orientation == null) return
renderOrientationO = renderOrientation
val current = orientation
val renderMatrix = this.renderOrientation ?: current
val renderQuat = Quaternionf().setFromUnnormalized(renderMatrix)
val targetQuat = Quaternionf().setFromUnnormalized(current)
val dampingFactor = 0.66f // Smooth interpolation to reduce jitter of orientations recieved from the server.
renderQuat.slerp(targetQuat, dampingFactor)
val current = orientation!!
val targetQuat = Quaternionf().setFromUnnormalized(current)
if (renderOrientation == null) {
// First tick: snap the spring to the target instead of easing in from identity
renderSpring.quat.set(targetQuat)
renderSpring.angVel.set(0f, 0f, 0f)
}
// Use a "quat spring" to smoothly move the render orientation towards the goal orientation.
// It takes into account the orientations angular velocities and should be much more resilient
// to sharp changes in goal orientation or late/missed packets.
simpleSpringDamperQuat(renderSpring, targetQuat, 0.15f, TICK_DT)
val newRenderOrientation = Matrix3f()
renderQuat.get(newRenderOrientation)
renderSpring.quat.get(newRenderOrientation)
renderOrientation = newRenderOrientation
}
@@ -0,0 +1,62 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.riding.util
import net.minecraft.core.BlockPos
import net.minecraft.world.level.BlockGetter
import net.minecraft.world.phys.AABB
import kotlin.math.floor
/**
* Walks every block position inside [searchBox] and turns each solid block into one
* full-cube [FieldPrimitive].
*
* @author Jackson
* @since July 27th, 2026
*/
fun collectPrimitivesFromBlocks(
level: BlockGetter,
searchBox: AABB,
shape: PrimitiveShape,
includeFluids: Boolean = false
): List<FieldPrimitive> {
val primitives = mutableListOf<FieldPrimitive>()
val minX = floor(searchBox.minX).toInt()
val maxX = floor(searchBox.maxX).toInt()
val minY = floor(searchBox.minY).toInt()
val maxY = floor(searchBox.maxY).toInt()
val minZ = floor(searchBox.minZ).toInt()
val maxZ = floor(searchBox.maxZ).toInt()
val pos = BlockPos.MutableBlockPos()
for (x in minX..maxX) {
for (y in minY..maxY) {
for (z in minZ..maxZ) {
pos.set(x, y, z)
val state = level.getBlockState(pos)
val isSolid = !state.getCollisionShape(level, pos).isEmpty
val isFluid = includeFluids && !state.fluidState.isEmpty
if (!isSolid && !isFluid) continue
primitives.add(
FieldPrimitive(
shape = shape,
centerX = x + 0.5f, centerY = y + 0.5f, centerZ = z + 0.5f,
halfWidth = 0.5f, halfHeight = 0.5f, halfDepth = 0.5f
)
)
}
}
}
return primitives
}
@@ -0,0 +1,155 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.riding.util
import net.minecraft.world.phys.Vec3
import kotlin.math.abs
import kotlin.math.max
import kotlin.math.min
import kotlin.math.sqrt
/**
* Helpful Functions when working with signed distance fields/functions.
* https://iquilezles.org/articles/distfunctions/
*
* @author Jackson
* @since July 27th, 2026
*/
/** Which distance formula a primitive uses. */
enum class PrimitiveShape {
BOX,
ROUNDED_BOX,
ELLIPSOID
}
/** Tunable constants for the field. */
data class DistanceFieldTuning(
val smoothingRange: Float = 0.5f,
val roundingRadius: Float = 0.08f
)
/** A single shape in the field - a center position, half-extents, and which formula to use. */
data class FieldPrimitive(
val shape: PrimitiveShape,
val centerX: Float, val centerY: Float, val centerZ: Float,
val halfWidth: Float, val halfHeight: Float, val halfDepth: Float
)
/** Fast approximate 1/sqrt(x) - the Quake III trick, cheaper than a real sqrt + divide. */
fun fastInverseSqrt(value: Float): Float {
var x = value
val halfX = 0.5f * x
var bits = java.lang.Float.floatToIntBits(x)
bits = 0x5f3759df - (bits shr 1)
x = java.lang.Float.intBitsToFloat(bits)
x *= (1.5f - halfX * x * x)
return x
}
/** Exact distance from a point to an axis-aligned box. Inputs are relative to the box's own center. */
fun boxDistance(relX: Float, relY: Float, relZ: Float, halfWidth: Float, halfHeight: Float, halfDepth: Float): Float {
val qx = abs(relX) - halfWidth
val qy = abs(relY) - halfHeight
val qz = abs(relZ) - halfDepth
val ox = max(qx, 0f)
val oy = max(qy, 0f)
val oz = max(qz, 0f)
val outside = sqrt(ox * ox + oy * oy + oz * oz)
val inside = min(max(qx, max(qy, qz)), 0f)
return outside + inside
}
/** Same as boxDistance but with rounded corners/edges https://iquilezles.org/articles/distfunctions/ */
fun roundedBoxDistance(relX: Float, relY: Float, relZ: Float, halfWidth: Float, halfHeight: Float, halfDepth: Float, roundingRadius: Float): Float =
boxDistance(relX, relY, relZ, halfWidth - roundingRadius, halfHeight - roundingRadius, halfDepth - roundingRadius) - roundingRadius
/** Approximate (lower-bound) distance to an ellipsoid https://iquilezles.org/articles/ellipsoids/. */
fun ellipsoidDistance(relX: Float, relY: Float, relZ: Float, halfWidth: Float, halfHeight: Float, halfDepth: Float): Float {
val px = relX / halfWidth
val py = relY / halfHeight
val pz = relZ / halfDepth
val inverseMagnitude = fastInverseSqrt(px * px + py * py + pz * pz)
val trueDistance = sqrt(relX * relX + relY * relY + relZ * relZ)
return trueDistance * (1.0f - inverseMagnitude)
}
/** Distance from a point to one primitive, dispatched by its shape. */
fun distanceToPrimitive(primitive: FieldPrimitive, sampleX: Float, sampleY: Float, sampleZ: Float, tuning: DistanceFieldTuning): Float {
val relX = sampleX - primitive.centerX
val relY = sampleY - primitive.centerY
val relZ = sampleZ - primitive.centerZ
return when (primitive.shape) {
PrimitiveShape.BOX -> boxDistance(relX, relY, relZ, primitive.halfWidth, primitive.halfHeight, primitive.halfDepth)
PrimitiveShape.ROUNDED_BOX -> roundedBoxDistance(relX, relY, relZ, primitive.halfWidth, primitive.halfHeight, primitive.halfDepth, tuning.roundingRadius)
PrimitiveShape.ELLIPSOID -> ellipsoidDistance(relX, relY, relZ, primitive.halfWidth, primitive.halfHeight, primitive.halfDepth)
}
}
///** Normalized quadratic smooth-min https://iquilezles.org/articles/smin/ */
//fun smoothMinimum(a: Float, b: Float, smoothingRange: Float): Float {
// if (smoothingRange <= 0.001f) return min(a, b)
// val k = smoothingRange * 4.0f
// val h = (0.5f + 0.5f * (b - a) / k).coerceIn(0f, 1f)
// return b + (a - b) * h - k * h * (1f - h)
//}
//
///** Folds every primitive's distance together into one field value at a point. */
//fun sampleField(primitives: List<FieldPrimitive>, sampleX: Float, sampleY: Float, sampleZ: Float, tuning: DistanceFieldTuning): Float {
// var result = Float.POSITIVE_INFINITY
// for (primitive in primitives) {
// val distance = distanceToPrimitive(primitive, sampleX, sampleY, sampleZ, tuning)
// result = if (result == Float.POSITIVE_INFINITY) distance else smoothMinimum(result, distance, tuning.smoothingRange)
// }
// return result
//}
/** Normalized quadratic smooth-min https://iquilezles.org/articles/smin/ */
fun smoothMinimum(a: Float, b: Float, smoothingRange: Float): Float {
if (smoothingRange <= 0.001f) return min(a, b)
val k = smoothingRange * 4.0f
val h = (0.5f + 0.5f * (b - a) / k).coerceIn(0f, 1f)
return b + (a - b) * h - k * h * (1f - h)
}
/** Folds nearby primitive distances together into one field value at a point. */
fun sampleField(primitives: List<FieldPrimitive>, sampleX: Float, sampleY: Float, sampleZ: Float, tuning: DistanceFieldTuning): Float {
if (primitives.isEmpty()) return Float.POSITIVE_INFINITY
val distances = FloatArray(primitives.size) { distanceToPrimitive(primitives[it], sampleX, sampleY, sampleZ, tuning) }
val minDistance = distances.min()
if (tuning.smoothingRange <= 0.001f) return minDistance
// Anything more than a few blend-widths past the closest primitive is cut - its
// contribution would be negligible in a correct blend anyway, but left in, it still
// drags the chained result down the more of them there are.
val cutoff = tuning.smoothingRange * 3f
var result = Float.POSITIVE_INFINITY
for (distance in distances) {
if (distance - minDistance > cutoff) continue
result = if (result == Float.POSITIVE_INFINITY) distance else smoothMinimum(result, distance, tuning.smoothingRange)
}
return result
}
/** Finite-difference gradient of the field at a point - points away from the surface, magnitude ~1 for a clean field. */
fun estimateGradient(primitives: List<FieldPrimitive>, point: Vec3, tuning: DistanceFieldTuning, epsilon: Float = 0.05f): Vec3 {
val px = point.x.toFloat()
val py = point.y.toFloat()
val pz = point.z.toFloat()
val dx = sampleField(primitives, px + epsilon, py, pz, tuning) - sampleField(primitives, px - epsilon, py, pz, tuning)
val dy = sampleField(primitives, px, py + epsilon, pz, tuning) - sampleField(primitives, px, py - epsilon, pz, tuning)
val dz = sampleField(primitives, px, py, pz + epsilon, tuning) - sampleField(primitives, px, py, pz - epsilon, tuning)
val gradient = Vec3(dx.toDouble(), dy.toDouble(), dz.toDouble())
return if (gradient.lengthSqr() > 1e-8) gradient.normalize() else Vec3(0.0, 1.0, 0.0)
}
@@ -0,0 +1,105 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.riding.util
import net.minecraft.core.particles.DustParticleOptions
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.Entity
import net.minecraft.world.phys.AABB
import net.minecraft.world.phys.Vec3
import org.joml.Vector3f
/** One shell to draw - a target field value, a color, a particle size. */
data class DistanceFieldLayer(
val isoValue: Float,
val color: Vector3f,
val particleSize: Float = 1.0f
)
/**
* Marches a grid of vertical columns through the field around [center] and spawns a
* particle everywhere it crosses one of [layers]' target values. Server-side only.
*/
fun visualizeDistanceField(
referenceEntity: Entity,
center: Vec3,
layers: List<DistanceFieldLayer>,
shape: PrimitiveShape = PrimitiveShape.BOX,
horizontalRadius: Double = 4.0,
verticalRange: Double = 4.0,
sampleSpacing: Double = 0.5,
marchStep: Double = 0.1,
tuning: DistanceFieldTuning = DistanceFieldTuning()
) {
val level = referenceEntity.level()
if (level !is ServerLevel) return
val searchBox = AABB(
center.x - horizontalRadius, center.y - verticalRange, center.z - horizontalRadius,
center.x + horizontalRadius, center.y, center.z + horizontalRadius
)
val primitives = collectPrimitivesFromBlocks(level, searchBox, shape, includeFluids = true)
if (primitives.isEmpty()) return
var x = -horizontalRadius
while (x <= horizontalRadius) {
var z = -horizontalRadius
while (z <= horizontalRadius) {
marchColumn(level, primitives, center, x, z, verticalRange, marchStep, layers, tuning)
z += sampleSpacing
}
x += sampleSpacing
}
}
private fun marchColumn(
level: ServerLevel,
primitives: List<FieldPrimitive>,
center: Vec3,
offsetX: Double,
offsetZ: Double,
verticalRange: Double,
marchStep: Double,
layers: List<DistanceFieldLayer>,
tuning: DistanceFieldTuning
) {
val previousValue = FloatArray(layers.size) { Float.NaN }
var y = verticalRange
while (y >= -verticalRange) {
val worldX = (center.x + offsetX).toFloat()
val worldY = (center.y + y).toFloat()
val worldZ = (center.z + offsetZ).toFloat()
val fieldValue = sampleField(primitives, worldX, worldY, worldZ, tuning)
for (layerIndex in layers.indices) {
val layer = layers[layerIndex]
val previous = previousValue[layerIndex]
if (!previous.isNaN() && crossedTarget(previous, fieldValue, layer.isoValue)) {
val t = (layer.isoValue - previous) / (fieldValue - previous)
val crossingY = (y + marchStep) - marchStep * t
spawnLayerParticle(level, center.add(offsetX, crossingY, offsetZ), layer)
}
previousValue[layerIndex] = fieldValue
}
y -= marchStep
}
}
private fun crossedTarget(previous: Float, current: Float, target: Float): Boolean =
(previous - target) * (current - target) < 0f
private fun spawnLayerParticle(level: ServerLevel, pos: Vec3, layer: DistanceFieldLayer) {
val particle = DustParticleOptions(layer.color, layer.particleSize)
level.sendParticles(particle, pos.x, pos.y, pos.z, 1, 0.0, 0.0, 0.0, 0.0)
}
@@ -71,7 +71,7 @@ open class VariableObjectSelectionList(x: Int, y: Int, width: Int, height: Int):
var stackHeight = -scrollAmount.toInt()
guiGraphics.enableScissor(x, y, x + width, y + height)
children.forEachIndexed { index, entry ->
if (stackHeight in 1..<height || stackHeight + entry.height in 1..<height) {
if (stackHeight < height && stackHeight + entry.height > 0) {
entry.render(guiGraphics, index, x, y + stackHeight, mouseX, mouseY, partialTick)
}
stackHeight += entry.height
@@ -8,12 +8,10 @@
package com.cobblemon.mod.common.client.gui.startselection.widgets
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.api.gui.blitk
import com.cobblemon.mod.common.api.text.bold
import com.cobblemon.mod.common.client.gui.CobblemonRenderable
import com.cobblemon.mod.common.client.gui.PokemonGUIAnimationStyle
import com.cobblemon.mod.common.client.gui.VariableObjectSelectionList
import com.cobblemon.mod.common.client.gui.drawProfilePokemon
import com.cobblemon.mod.common.client.gui.startselection.StarterSelectionScreen
@@ -29,12 +27,11 @@ import org.joml.Quaternionf
import org.joml.Vector3f
class CategoryList(
private val paneWidth: Int,
private val paneHeight: Int,
paneWidth: Int,
paneHeight: Int,
private val categories: List<RenderableStarterCategory>,
val listX: Int,
val listY: Int,
private val minecraft: Minecraft = Minecraft.getInstance(),
private val starterSelectionScreen: StarterSelectionScreen
) : VariableObjectSelectionList(
listX,
@@ -70,7 +67,8 @@ class CategoryList(
}
private fun createEntries() = categories.map { category ->
val rows = (category.pokemon.size - 1) / 3 + 1
val pokemonCount = category.pokemon.size - if (category.randomStarter) 0 else 1
val rows = pokemonCount / 3 + 1
val height = CONTAINER_BUTTON_SIZE * rows + BUTTON_SEPERATION * (rows + 1) + HEADER_HEIGHT + 3
Category(category, height)
}
@@ -1,104 +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.WaveAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.animation.WaveSegment
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.Companion.X_AXIS
import com.cobblemon.mod.common.client.render.models.blockbench.pose.ModelPartTransformation.Companion.Y_AXIS
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
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.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 EkansModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
override val rootPart = root.registerChildWithAllChildren("ekans")
private val body = getPart("body")
override val head = getPart("head")
private val tail = getPart("tail")
private val tail2 = getPart("tail2")
private val tail3 = getPart("tail3")
private val tail4 = getPart("tail4")
private val tail5 = getPart("tail5")
private val tail6 = getPart("tail6")
val tailSegment = WaveSegment(modelPart = tail, length = 9F)
val tail2Segment = WaveSegment(modelPart = tail2, length = 9F)
val tail3Segment = WaveSegment(modelPart = tail3, length = 9F)
val tail4Segment = WaveSegment(modelPart = tail4, length = 9F)
val tail5Segment = WaveSegment(modelPart = tail5, length = 10F)
val tail6Segment = WaveSegment(modelPart = tail6, length = 10F)
override var portraitScale = 1.7F
override var portraitTranslation = Vec3(-0.3, -0.45, 0.0)
override var profileScale = 0.7F
override var profileTranslation = Vec3(-0.05, 0.6, 0.0)
lateinit var sleep: Pose
override val cryAnimation = CryProvider { bedrockStateful("ekans", "cry") }
override fun registerPoses() {
sleep = registerPose(
poseType = PoseType.SLEEP,
animations = arrayOf(bedrock("ekans", "sleep"))
)
val blink = quirk { bedrockStateful("ekans", "blink") }
registerPose(
poseName = "normal",
poseTypes = STATIONARY_POSES + MOVING_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("ekans", "ground_idle"),
WaveAnimation(
waveFunction = sineFunction(
period = 8F,
amplitude = 0.8F
),
basedOnLimbSwing = true,
oscillationsScalar = 5F,
head = head,
rotationAxis = Y_AXIS,
motionAxis = X_AXIS,
moveHead = false,
headLength = 16F,
segments = arrayOf(
tailSegment,
tail2Segment,
tail3Segment,
tail4Segment,
tail5Segment,
tail6Segment
)
)
)
)
registerPose(
poseName = "portrait",
poseTypes = UI_POSES,
quirks = arrayOf(blink),
animations = arrayOf(bedrock("ekans", "summary_idle"))
)
}
override fun getFaintAnimation(state: PosableState) = bedrockStateful("ekans", "faint")
}
@@ -1,63 +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.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 net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class GloomModel(root: ModelPart) : PokemonPosableModel(root) {
override val rootPart = root.registerChildWithAllChildren("gloom")
override var portraitScale = 1.8F
override var portraitTranslation = Vec3(-0.0, -1.0, 0.0)
override var profileScale = 1.05F
override var profileTranslation = Vec3(0.0, 0.19, 0.0)
lateinit var sleep: Pose
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("gloom", "cry") }
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
transformTicks = 10,
animations = arrayOf(
bedrock("gloom", "ground_idle")
)
)
sleep = registerPose(
poseType = PoseType.SLEEP,
animations = arrayOf(bedrock("gloom", "sleep"))
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
transformTicks = 10,
animations = arrayOf(
bedrock("gloom", "ground_walk")
)
)
}
override fun getFaintAnimation(state: PosableState) = bedrockStateful("gloom", "faint")
}
@@ -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.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.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 net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class OddishModel(root: ModelPart) : PokemonPosableModel(root) {
override val rootPart = root.registerChildWithAllChildren("oddish")
override var portraitScale = 2.0F
override var portraitTranslation = Vec3(-0.0, -1.0, 0.0)
override var profileScale = 0.85F
override var profileTranslation = Vec3(0.0, 0.5, 0.0)
lateinit var sleep: Pose
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("oddish", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("oddish", "blink")}
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("oddish", "ground_idle")
)
)
sleep = registerPose(
poseType = PoseType.SLEEP,
animations = arrayOf(bedrock("oddish", "sleep"))
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("oddish", "ground_walk")
)
)
}
override fun getFaintAnimation(state: PosableState) = bedrockStateful("oddish", "faint")
}
@@ -1,75 +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.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.STANDING_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 PoliwagModel(root: ModelPart) : PokemonPosableModel(root) {
override val rootPart = root.registerChildWithAllChildren("poliwag")
override var portraitScale = 1.8F
override var portraitTranslation = Vec3(0.0, -0.7, 0.0)
override var profileScale = 0.9F
override var profileTranslation = Vec3(0.0, 0.38, 0.0)
lateinit var sleep: Pose
lateinit var standing: Pose
lateinit var float: Pose
lateinit var swim: Pose
override val cryAnimation = CryProvider { bedrockStateful("poliwag", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("poliwag", "blink")}
standing = registerPose(
poseName = "standing",
poseTypes = STANDING_POSES + UI_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("poliwag", "ground_idle")
)
)
sleep = registerPose(
poseType = PoseType.SLEEP,
animations = arrayOf(bedrock("poliwag", "sleep"))
)
float = registerPose(
poseName = "float",
poseType = PoseType.FLOAT,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("poliwag", "water_idle")
)
)
swim = registerPose(
poseName = "swim",
poseType = PoseType.SWIM,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("poliwag", "water_swim")
)
)
}
// override fun getFaintAnimation(
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("poliwag", "faint") else null
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
}
@@ -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.pokemon.PokemonPosableModel
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.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 net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class VileplumeModel(root: ModelPart) : PokemonPosableModel(root) {
override val rootPart = root.registerChildWithAllChildren("vileplume")
override var portraitScale = 1.8F
override var portraitTranslation = Vec3(-0.35, -0.8, 0.0)
override var profileScale = 0.8F
override var profileTranslation = Vec3(0.0, 0.53, 0.0)
lateinit var sleep: Pose
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("vileplume", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("vileplume", "blink")}
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("vileplume", "idle")
)
)
sleep = registerPose(
poseType = PoseType.SLEEP,
animations = arrayOf(bedrock("vileplume", "sleep"))
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("vileplume", "ground_walk")
)
)
}
override fun getFaintAnimation(state: PosableState) = bedrockStateful("vileplume", "faint")
}
@@ -1,95 +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.createTransformation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
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.entity.PoseType
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.SHOULDER_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 BellossomModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
override val rootPart = root.registerChildWithAllChildren("bellossom")
override val head = getPart("head")
override var portraitScale = 1.8F
override var portraitTranslation = Vec3(0.0, -0.2, 0.0)
override var profileScale = 1.0F
override var profileTranslation = Vec3(0.0, 0.21, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
lateinit var shoulderLeft: Pose
lateinit var shoulderRight: Pose
val shoulderOffset = 5
override fun registerPoses() {
val blink = quirk { bedrockStateful("bellossom", "blink") }
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("bellossom", "ground_idle"),
singleBoneLook()
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("bellossom", "ground_idle"),
bedrock("bellossom", "ground_walk"),
singleBoneLook()
)
)
shoulderLeft = registerPose(
poseType = PoseType.SHOULDER_LEFT,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("bellossom", "ground_idle")
),
transformedParts = arrayOf(
rootPart.createTransformation().addPosition(ModelPartTransformation.X_AXIS, shoulderOffset)
)
)
shoulderRight = registerPose(
poseType = PoseType.SHOULDER_RIGHT,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("bellossom", "ground_idle")
),
transformedParts = arrayOf(
rootPart.createTransformation().addPosition(ModelPartTransformation.X_AXIS, -shoulderOffset)
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("bellossom", "faint") else null
}
@@ -1,80 +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.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
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.UI_POSES
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class PolitoedModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame {
override val rootPart = root.registerChildWithAllChildren("politoed")
override val head = getPart("head")
override val leftLeg = getPart("leftleg")
override val rightLeg = getPart("rightleg")
override var portraitScale = 2.4F
override var portraitTranslation = Vec3(-0.04, -0.55, 0.0)
override var profileScale = 1.1F
override var profileTranslation = Vec3(0.0, 0.1, 0.0)
lateinit var standing: Pose
lateinit var walking: Pose
lateinit var float: Pose
lateinit var swim: Pose
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = UI_POSES + PoseType.STAND,
animations = arrayOf(
singleBoneLook(),
bedrock("politoed", "ground_idle")
)
)
walking = registerPose(
poseName = "walking",
poseType = PoseType.WALK,
animations = arrayOf(
singleBoneLook(),
bedrock("politoed", "ground_idle")
)
)
float = registerPose(
poseName = "float",
poseTypes = setOf(PoseType.FLOAT, PoseType.HOVER),
animations = arrayOf(
singleBoneLook(),
bedrock("politoed", "water_idle")
)
)
swim = registerPose(
poseName = "swim",
poseTypes = setOf(PoseType.SWIM, PoseType.FLY),
animations = arrayOf(
singleBoneLook(),
bedrock("politoed", "water_swim")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("politoed", "faint") else null
}
@@ -1,72 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen2
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BimanualSwingAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
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.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 SudowoodoModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
override val rootPart = root.registerChildWithAllChildren("sudowoodo")
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 = 1.9F
override var portraitTranslation = Vec3(-0.7, 1.6, 0.0)
override var profileScale = 0.5F
override var profileTranslation = Vec3(-0.1, 0.95, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override fun registerPoses() {
val blink = quirk { bedrockStateful("sudowoodo", "blink") }
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(yawMultiplier = 0F),
bedrock("sudowoodo", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(yawMultiplier = 0F),
bedrock("sudowoodo", "ground_idle"),
BipedWalkAnimation(this, periodMultiplier = 0.6F, amplitudeMultiplier = 0.9F),
BimanualSwingAnimation(this, swingPeriodMultiplier = 0.6F, amplitudeMultiplier = 0.9F)
//bedrock("sudowoodo", "ground_walk")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("sudowoodo", "faint") else null
}
@@ -1,91 +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.gen3
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.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.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 ShroomishModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame {
override val rootPart = root.registerChildWithAllChildren("shroomish")
override val head = getPart("torso")
override val leftLeg = getPart("foot_left")
override val rightLeg = getPart("foot_right")
override var portraitScale = 2.0F
override var portraitTranslation = Vec3(-0.1, -1.2, 0.0)
override var profileScale = 1.0F
override var profileTranslation = Vec3(0.0, 0.3, 0.0)
lateinit var standing: Pose
lateinit var battling: Pose
lateinit var sleeping: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("shroomish", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("shroomish", "blink") }
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
quirks = arrayOf(blink),
condition = { !it.isBattling },
animations = arrayOf(
singleBoneLook(pitchMultiplier = 0.5F),
bedrock("shroomish", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(pitchMultiplier = 0.5F),
bedrock("shroomish", "ground_walk")
)
)
battling = registerPose(
poseName = "battlestanding",
poseTypes = STATIONARY_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { it.isBattling },
animations = arrayOf(
singleBoneLook(pitchMultiplier = 0.5F),
bedrock("shroomish", "battle_idle")
)
)
sleeping = registerPose(
poseName = "sleeping",
poseType = PoseType.SLEEP,
transformTicks = 10,
animations = arrayOf(
bedrock("shroomish", "sleep")
)
)
}
override fun getFaintAnimation(state: PosableState) = if (state.isPosedIn(standing, walk, battling, sleeping)) bedrockStateful("shroomish", "faint") else null
}
@@ -1,102 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen4
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.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 BonslyModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame {
override val rootPart = root.registerChildWithAllChildren("bonsly")
override val head = getPart("torso")
override val leftLeg = getPart("leg_left")
override val rightLeg = getPart("leg_right")
override var portraitScale = 2.2F
override var portraitTranslation = Vec3(-0.2, -0.8, 0.0)
override var profileScale = 0.72F
override var profileTranslation = Vec3(0.0, 0.65, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
lateinit var battleidle: Pose
lateinit var sleep: Pose
lateinit var battlesleep: Pose
override fun registerPoses() {
val blink = quirk { bedrockStateful("bonsly", "blink") }
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
quirks = arrayOf(blink),
condition = { !it.isBattling },
animations = arrayOf(
singleBoneLook(),
bedrock("bonsly", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("bonsly", "ground_walk")
)
)
sleep = registerPose(
poseName = "sleep",
poseType = PoseType.SLEEP,
condition = { !it.isBattling },
animations = arrayOf(
bedrock("bonsly", "sleep_pot")
)
)
battlesleep = registerPose(
poseName = "battlesleep",
poseType = PoseType.SLEEP,
condition = { it.isBattling },
animations = arrayOf(
bedrock("bonsly", "sleep")
)
)
battleidle = registerPose(
poseName = "battle_idle",
poseTypes = PoseType.STATIONARY_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { it.isBattling },
animations = arrayOf(
singleBoneLook(),
bedrock("bonsly", "battle_idle")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk))
// bedrockStateful("bonsly", "faint")
// else null
}
@@ -1,72 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen4
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
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.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class LuxioModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, QuadrupedFrame {
override val rootPart = root.registerChildWithAllChildren("luxio")
override val head = getPart("head")
override val foreLeftLeg = getPart("front_leg_left")
override val foreRightLeg = getPart("front_leg_right")
override val hindLeftLeg = getPart("back_leg_left")
override val hindRightLeg = getPart("back_leg_right")
override var portraitScale = 1.8F
override var portraitTranslation = Vec3(-0.6, -0.25, 0.0)
override var profileScale = 0.7F
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
lateinit var sleep: Pose
override fun registerPoses() {
// val blink = quirk { bedrockStateful("luxio", "blink") }
sleep = registerPose(
poseType = PoseType.SLEEP,
animations = arrayOf(bedrock("luxio", "sleep"))
)
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.UI_POSES + PoseType.STATIONARY_POSES,
// quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("luxio", "idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
// quirks = arrayOf(blink),
animations = arrayOf(
QuadrupedWalkAnimation(this, periodMultiplier = 1.1F),
singleBoneLook(),
bedrock("luxio", "idle")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("luxio", "faint") else null
}
@@ -1,67 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen4
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
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.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class LuxrayModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, QuadrupedFrame {
override val rootPart = root.registerChildWithAllChildren("luxray")
override val head = getPart("head")
override val foreLeftLeg = getPart("front_leg_left")
override val foreRightLeg = getPart("front_leg_right")
override val hindLeftLeg = getPart("back_leg_left")
override val hindRightLeg = getPart("back_leg_right")
override var portraitScale = 1.8F
override var portraitTranslation = Vec3(-0.9, 0.6, 0.0)
override var profileScale = 0.66F
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override fun registerPoses() {
// val blink = quirk { bedrockStateful("luxray", "blink") }
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.UI_POSES + PoseType.STATIONARY_POSES,
// quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("luxray", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
// quirks = arrayOf(blink),
animations = arrayOf(
QuadrupedWalkAnimation(this, periodMultiplier = 1.1F),
bedrock("luxray", "ground_idle"),
singleBoneLook()
// bedrock("luxray", "idle")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("luxray", "faint") else null
}
@@ -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.gen4
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.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 ShinxModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, QuadrupedFrame {
override val rootPart = root.registerChildWithAllChildren("shinx")
override val head = getPart("head")
override val foreLeftLeg = getPart("leg_left")
override val foreRightLeg = getPart("leg_right")
override val hindLeftLeg = getPart("back_leg_left")
override val hindRightLeg = getPart("back_leg_right")
override var portraitScale = 1.8F
override var portraitTranslation = Vec3(-0.6, -0.25, 0.0)
override var profileScale = 0.66F
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override fun registerPoses() {
// val blink = quirk { bedrockStateful("shinx", "blink") }
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.UI_POSES + PoseType.STATIONARY_POSES,
// quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("shinx", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
// quirks = arrayOf(blink),
animations = arrayOf(
QuadrupedWalkAnimation(this, periodMultiplier = 1.1F),
singleBoneLook(),
bedrock("shinx", "ground_idle")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("shinx", "faint") else null
}
@@ -1,63 +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.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.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 DeerlingModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, QuadrupedFrame {
override val rootPart = root.registerChildWithAllChildren("deerling")
override val head = getPart("head")
override var portraitScale = 3.5F
override var portraitTranslation = Vec3(-0.55, -1.1, 0.0)
override var profileScale = 1.0F
override var profileTranslation = Vec3(0.0, 0.25, 0.0)
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")
lateinit var standing: Pose
lateinit var walk: Pose
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
animations = arrayOf(
singleBoneLook(),
// bedrock("deerling", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
animations = arrayOf(
singleBoneLook(),
QuadrupedWalkAnimation(this, periodMultiplier = 0.8F, amplitudeMultiplier = 0.8F)
// bedrock("deerling", "ground_walk")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("deerling", "faint") else null
}
@@ -1,63 +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.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.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 SawsbuckModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, QuadrupedFrame {
override val rootPart = root.registerChildWithAllChildren("sawsbuck")
override val head = getPart("head")
override var portraitScale = 2.0F
override var portraitTranslation = Vec3(-0.5, 1.1, 0.0)
override var profileScale = 0.65F
override var profileTranslation = Vec3(0.0, 0.75, 0.0)
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")
lateinit var standing: Pose
lateinit var walk: Pose
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
animations = arrayOf(
singleBoneLook(),
// bedrock("sawsbuck", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
animations = arrayOf(
singleBoneLook(),
QuadrupedWalkAnimation(this, periodMultiplier = 0.9F, amplitudeMultiplier = 0.9F)
// bedrock("sawsbuck", "ground_walk")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("sawsbuck", "faint") else null
}
@@ -1,70 +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.gen6
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BimanualSwingAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
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.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 ChesnaughtModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
override val rootPart = root.registerChildWithAllChildren("chesnaught")
override val head = getPart("head")
override val rightArm = getPart("arm_right")
override val leftArm = getPart("arm_left")
override val leftLeg = getPart("leg_left")
override val rightLeg = getPart("leg_right")
override var portraitScale = 2.2F
override var portraitTranslation = Vec3(-1.0, 1.65, 0.0)
override var profileScale = 0.6F
override var profileTranslation = Vec3(0.0, 0.85, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("chesnaught", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("chesnaught", "blink")}
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("chesnaught", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
BimanualSwingAnimation(this),
BipedWalkAnimation(this),
bedrock("chesnaught", "ground_idle")
)
)
}
}
@@ -1,70 +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.gen6
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 ChespinModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
override val rootPart = root.registerChildWithAllChildren("chespin")
override val head = getPart("head")
override val rightArm = getPart("arm_right")
override val leftArm = getPart("arm_left")
override val leftLeg = getPart("leg_left")
override val rightLeg = getPart("leg_right")
override var portraitScale = 2.03F
override var portraitTranslation = Vec3(-0.12, -0.44, 0.0)
override var profileScale = 0.77F
override var profileTranslation = Vec3(0.0, 0.6, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
lateinit var sleep: Pose
override val cryAnimation = CryProvider { bedrockStateful("chespin", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("chespin", "blink")}
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("chespin", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("chespin", "ground_walk")
)
)
sleep = registerPose(
poseType = PoseType.SLEEP,
transformTicks = 10,
animations = arrayOf(bedrock("chespin", "sleep"))
)
}
}
@@ -1,118 +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.gen6
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.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.util.isBattling
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class FroakieModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
override val rootPart = root.registerChildWithAllChildren("froakie")
override val head = getPart("head")
override val rightArm = getPart("arm_right")
override val leftArm = getPart("arm_left")
override val rightLeg = getPart("leg_right")
override val leftLeg = getPart("leg_left")
override var portraitScale = 1.86F
override var portraitTranslation = Vec3(-0.25, -0.51, 0.0)
override var profileScale = 0.75F
override var profileTranslation = Vec3(0.0, 0.56, 0.0)
lateinit var sleep: Pose
lateinit var standing: Pose
lateinit var float: Pose
lateinit var swim: Pose
lateinit var walk: Pose
lateinit var battleidle: Pose
override val cryAnimation = CryProvider { bedrockStateful("froakie", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("froakie", "blink")}
sleep = registerPose(
poseType = PoseType.SLEEP,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(bedrock("froakie", "sleep"))
)
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.UI_POSES + PoseType.STATIONARY_POSES - PoseType.FLOAT,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { !it.isBattling },
animations = arrayOf(
singleBoneLook(),
bedrock("froakie", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseType = PoseType.WALK,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { !it.isBattling },
animations = arrayOf(
singleBoneLook(),
bedrock("froakie", "ground_walk")
)
)
float = registerPose(
poseName = "swim_idle",
poseTypes = setOf(PoseType.FLOAT, PoseType.HOVER),
transformTicks = 10,
quirks = arrayOf(blink),
condition = { !it.isBattling },
animations = arrayOf(
singleBoneLook(),
bedrock("froakie", "water_idle")
)
)
swim = registerPose(
poseName = "swim",
poseTypes = setOf(PoseType.SWIM, PoseType.FLY),
transformTicks = 10,
quirks = arrayOf(blink),
condition = { !it.isBattling },
animations = arrayOf(
singleBoneLook(),
bedrock("froakie", "water_swim")
)
)
battleidle = registerPose(
poseName = "battle_idle",
poseTypes = PoseType.STATIONARY_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { it.isBattling },
animations = arrayOf(
singleBoneLook(),
bedrock("froakie", "battle_idle")
)
)
}
override fun getFaintAnimation(state: PosableState) = if (state.isPosedIn(standing, walk, battleidle, swim, float, sleep)) bedrockStateful("froakie", "faint") else null
}
@@ -1,118 +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.gen6
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.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.util.isBattling
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class FrogadierModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
override val rootPart = root.registerChildWithAllChildren("frogadier")
override val head = getPart("head")
override val rightArm = getPart("arm_right")
override val leftArm = getPart("arm_left")
override val rightLeg = getPart("leg_right")
override val leftLeg = getPart("leg_left")
override var portraitScale = 1.9F
override var portraitTranslation = Vec3(-0.1, 1.4, 0.0)
override var profileScale = 0.7F
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
lateinit var sleep: Pose
lateinit var standing: Pose
lateinit var float: Pose
lateinit var swim: Pose
lateinit var walk: Pose
lateinit var battleidle: Pose
override val cryAnimation = CryProvider { bedrockStateful("frogadier", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("frogadier", "blink")}
sleep = registerPose(
poseType = PoseType.SLEEP,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(bedrock("frogadier", "sleep"))
)
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.UI_POSES + PoseType.STATIONARY_POSES - PoseType.FLOAT,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { !it.isBattling },
animations = arrayOf(
singleBoneLook(),
bedrock("frogadier", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseType = PoseType.WALK,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { !it.isBattling },
animations = arrayOf(
singleBoneLook(),
bedrock("frogadier", "ground_walk")
)
)
float = registerPose(
poseName = "swim_idle",
poseTypes = setOf(PoseType.FLOAT, PoseType.HOVER),
transformTicks = 10,
quirks = arrayOf(blink),
condition = { !it.isBattling },
animations = arrayOf(
singleBoneLook(),
bedrock("frogadier", "water_idle")
)
)
swim = registerPose(
poseName = "swim",
poseTypes = setOf(PoseType.SWIM, PoseType.FLY),
transformTicks = 10,
quirks = arrayOf(blink),
condition = { !it.isBattling },
animations = arrayOf(
singleBoneLook(),
bedrock("frogadier", "water_swim")
)
)
battleidle = registerPose(
poseName = "battle_idle",
poseTypes = PoseType.STATIONARY_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { it.isBattling },
animations = arrayOf(
singleBoneLook(),
bedrock("frogadier", "battle_idle")
)
)
}
override fun getFaintAnimation(state: PosableState) = if (state.isPosedIn(standing, walk, battleidle, swim, float, sleep)) bedrockStateful("frogadier", "faint") else null
}
@@ -1,142 +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.gen6
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
import com.cobblemon.mod.common.client.render.models.blockbench.createTransformation
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 com.cobblemon.mod.common.util.isBattling
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class GreninjaModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
override val rootPart = root.registerChildWithAllChildren("greninja")
override val head = getPart("head")
override val rightArm = getPart("arm_right")
override val leftArm = getPart("arm_left")
override val rightLeg = getPart("leg_right")
override val leftLeg = getPart("leg_left")
val shurikenright = getPart("hand_shuriken_right")
val shurikenleft = getPart("hand_shuriken_left")
override var portraitScale = 2.2F
override var portraitTranslation = Vec3(-0.1, 1.34, 0.0)
override var profileScale = 0.7F
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
lateinit var sleep: Pose
lateinit var standing: Pose
lateinit var float: Pose
lateinit var swim: Pose
lateinit var walk: Pose
lateinit var battleidle: Pose
override val cryAnimation = CryProvider { bedrockStateful("greninja", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("greninja", "blink")}
sleep = registerPose(
poseType = PoseType.SLEEP,
transformTicks = 10,
transformedParts = arrayOf(
shurikenleft.createTransformation().withVisibility(visibility = false),
shurikenright.createTransformation().withVisibility(visibility = false)
),
animations = arrayOf(bedrock("greninja", "sleep"))
)
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.UI_POSES + PoseType.STATIONARY_POSES - PoseType.FLOAT,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { !it.isBattling },
transformedParts = arrayOf(
shurikenleft.createTransformation().withVisibility(visibility = false),
shurikenright.createTransformation().withVisibility(visibility = false)
),
animations = arrayOf(
singleBoneLook(),
bedrock("greninja", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseType = PoseType.WALK,
transformTicks = 10,
quirks = arrayOf(blink),
transformedParts = arrayOf(
shurikenleft.createTransformation().withVisibility(visibility = false),
shurikenright.createTransformation().withVisibility(visibility = false)
),
animations = arrayOf(
singleBoneLook(),
bedrock("greninja", "ground_walk")
)
)
float = registerPose(
poseName = "swim_idle",
poseTypes = setOf(PoseType.FLOAT, PoseType.HOVER),
transformTicks = 10,
quirks = arrayOf(blink),
condition = { !it.isBattling },
transformedParts = arrayOf(
shurikenleft.createTransformation().withVisibility(visibility = false),
shurikenright.createTransformation().withVisibility(visibility = false)
),
animations = arrayOf(
singleBoneLook(),
bedrock("greninja", "water_idle")
)
)
swim = registerPose(
poseName = "swim",
poseTypes = setOf(PoseType.SWIM, PoseType.FLY),
transformTicks = 10,
quirks = arrayOf(blink),
condition = { !it.isBattling },
transformedParts = arrayOf(
shurikenleft.createTransformation().withVisibility(visibility = false),
shurikenright.createTransformation().withVisibility(visibility = false)
),
animations = arrayOf(
singleBoneLook(),
bedrock("greninja", "water_swim")
)
)
battleidle = registerPose(
poseName = "battle_idle",
poseTypes = PoseType.STATIONARY_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { it.isBattling },
transformedParts = arrayOf(
shurikenleft.createTransformation().withVisibility(visibility = false),
shurikenright.createTransformation().withVisibility(visibility = false)
),
animations = arrayOf(
singleBoneLook(),
bedrock("greninja", "battle_idle")
)
)
}
override fun getFaintAnimation(state: PosableState) = if (state.isPosedIn(standing, walk, battleidle, swim, float, sleep)) bedrockStateful("greninja", "faint") else null
}
@@ -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.gen6
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 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 QuilladinModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
override val rootPart = root.registerChildWithAllChildren("quilladin")
override val head = getPart("torso")
override val rightArm = getPart("arm_right")
override val leftArm = getPart("arm_left")
override val leftLeg = getPart("leg_left")
override val rightLeg = getPart("leg_right")
override var portraitScale = 2F
override var portraitTranslation = Vec3(-0.3, 0.1, 0.0)
override var profileScale = 0.7F
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
lateinit var sleep: Pose
override val cryAnimation = CryProvider { bedrockStateful("quilladin", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("quilladin", "blink")}
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("quilladin", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("quilladin", "ground_walk")
)
)
sleep = registerPose(
poseType = PoseType.SLEEP,
transformTicks = 10,
animations = arrayOf(bedrock("quilladin", "sleep"))
)
}
}
@@ -29,7 +29,7 @@ class VivillonModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, B
override var portraitTranslation = Vec3(-0.3, 0.2, 0.0)
override var profileScale = 0.7F
override var profileTranslation = Vec3(0.1, 0.8, 0.0)
override var profileTranslation = Vec3(0.0, 0.8, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
@@ -1,90 +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.gen9
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
import com.cobblemon.mod.common.client.render.models.blockbench.createTransformation
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.entity.PoseType
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class GlimmetModel (root: ModelPart) : PokemonPosableModel(root) {
override val rootPart = root.registerChildWithAllChildren("glimmet")
override var portraitScale = 2.0F
override var portraitTranslation = Vec3(-0.5, 1.3, 0.0)
override var profileScale = 0.7F
override var profileTranslation = Vec3(0.0, 0.8, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
lateinit var sleep: Pose
lateinit var shoulderLeft: Pose
lateinit var shoulderRight: Pose
val shoulderOffset = 8
override val cryAnimation = CryProvider { bedrockStateful("glimmet", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("glimmet", "blink") }
sleep = registerPose(
poseType = PoseType.SLEEP,
animations = arrayOf(bedrock("glimmet", "sleep"))
)
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("glimmet", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("glimmet", "ground_walk")
)
)
shoulderLeft = registerPose(
poseType = PoseType.SHOULDER_LEFT,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("glimmet", "ground_idle")
),
transformedParts = arrayOf(
rootPart.createTransformation().addPosition(ModelPartTransformation.X_AXIS, shoulderOffset)
)
)
shoulderRight = registerPose(
poseType = PoseType.SHOULDER_RIGHT,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("glimmet", "ground_idle")
),
transformedParts = arrayOf(
rootPart.createTransformation().addPosition(ModelPartTransformation.X_AXIS, -shoulderOffset)
)
)
}
override fun getFaintAnimation(state: PosableState) = if (state.isPosedIn(standing, walk)) bedrockStateful("glimmet", "faint") else null
}
@@ -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.gen9
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.Pose
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.util.isBattling
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class GlimmoraModel (root: ModelPart) : PokemonPosableModel(root) {
override val rootPart = root.registerChildWithAllChildren("glimmora")
override var portraitScale = 2.0F
override var portraitTranslation = Vec3(-0.6, -0.1, 0.0)
override var profileScale = 0.7F
override var profileTranslation = Vec3(0.0, 0.8, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
lateinit var sleep: Pose
lateinit var battleidle: Pose
override val cryAnimation = CryProvider { bedrockStateful("glimmora", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("glimmora", "blink") }
sleep = registerPose(
poseType = PoseType.SLEEP,
animations = arrayOf(bedrock("glimmora", "sleep"))
)
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
transformTicks = 10,
condition = { !it.isBattling },
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("glimmora", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("glimmora", "ground_walk")
)
)
battleidle = registerPose(
poseName = "battle_idle",
poseTypes = PoseType.STATIONARY_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { it.isBattling },
animations = arrayOf(
bedrock("glimmora", "battle_idle")
)
)
}
override fun getFaintAnimation(state: PosableState) = if (state.isPosedIn(standing, walk, sleep)) bedrockStateful("glimmora", "faint") else
if (state.isPosedIn(battleidle)) bedrockStateful("glimmora", "faint2")
else null
}
@@ -231,13 +231,8 @@ object VaryingModelRepository {
inbuilt("paras", ::ParasModel)
inbuilt("mankey", ::MankeyModel)
inbuilt("primeape", ::PrimeapeModel)
inbuilt("oddish", ::OddishModel)
inbuilt("gloom", ::GloomModel)
inbuilt("vileplume", ::VileplumeModel)
inbuilt("bellossom", ::BellossomModel)
inbuilt("voltorb", ::VoltorbModel)
inbuilt("electrode", ::ElectrodeModel)
inbuilt("ekans", ::EkansModel)
inbuilt("machop", ::MachopModel)
inbuilt("machoke", ::MachokeModel)
inbuilt("machamp", ::MachampModel)
@@ -266,8 +261,6 @@ object VaryingModelRepository {
inbuilt("nidorino", ::NidorinoModel)
inbuilt("persian", ::PersianModel)
inbuilt("pinsir", ::PinsirModel)
inbuilt("poliwag", ::PoliwagModel)
inbuilt("politoed", ::PolitoedModel)
inbuilt("ponyta", ::PonytaModel)
inbuilt("psyduck", ::PsyduckModel)
inbuilt("rapidash", ::RapidashModel)
@@ -304,8 +297,6 @@ object VaryingModelRepository {
inbuilt("sizzlipede", ::SizzlipedeModel)
inbuilt("kleavor", ::KleavorModel)
inbuilt("pyukumuku", ::PyukumukuModel)
inbuilt("deerling", ::DeerlingModel)
inbuilt("sawsbuck", ::SawsbuckModel)
inbuilt("natu", ::NatuModel)
inbuilt("xatu", ::XatuModel)
inbuilt("milcery", :: MilceryModel)
@@ -320,9 +311,6 @@ object VaryingModelRepository {
inbuilt("morelull", :: MorelullModel)
inbuilt("shiinotic", :: ShiinoticModel)
inbuilt("spiritomb", :: SpiritombModel)
inbuilt("chespin", :: ChespinModel)
inbuilt("quilladin", :: QuilladinModel)
inbuilt("chesnaught", :: ChesnaughtModel)
inbuilt("pineco", :: PinecoModel)
inbuilt("lotad", :: LotadModel)
inbuilt("lombre", :: LombreModel)
@@ -350,9 +338,6 @@ object VaryingModelRepository {
inbuilt("walkingwake", ::WalkingwakeModel)
inbuilt("ironleaves", ::IronleavesModel)
inbuilt("miltank", ::MiltankModel)
inbuilt("froakie", ::FroakieModel)
inbuilt("frogadier", ::FrogadierModel)
inbuilt("greninja", ::GreninjaModel)
inbuilt("grookey", ::GrookeyModel)
inbuilt("thwackey", ::ThwackeyModel)
inbuilt("rillaboom", ::RillaboomModel)
@@ -377,7 +362,6 @@ object VaryingModelRepository {
inbuilt("gliscor", ::GliscorModel)
inbuilt("poochyena", ::PoochyenaModel)
inbuilt("mightyena", ::MightyenaModel)
inbuilt("shroomish", ::ShroomishModel)
inbuilt("breloom", ::BreloomModel)
inbuilt("charcadet", ::CharcadetModel)
inbuilt("flittle", ::FlittleModel)
@@ -399,10 +383,6 @@ object VaryingModelRepository {
inbuilt("sirfetchd", ::SirfetchdModel)
inbuilt("duskull", ::DuskullModel)
inbuilt("dusclops", ::DusclopsModel)
inbuilt("glimmet", ::GlimmetModel)
inbuilt("glimmora", ::GlimmoraModel)
inbuilt("bonsly", ::BonslyModel)
inbuilt("sudowoodo", ::SudowoodoModel)
inbuilt("cetoddle", ::CetoddleModel)
inbuilt("cetitan", ::CetitanModel)
inbuilt("aipom", ::AipomModel)
@@ -410,9 +390,6 @@ object VaryingModelRepository {
inbuilt("hoothoot", ::HoothootModel)
inbuilt("wingull", ::WingullModel)
inbuilt("pelipper", ::PelipperModel)
inbuilt("shinx", ::ShinxModel)
inbuilt("luxio", ::LuxioModel)
inbuilt("luxray", ::LuxrayModel)
inbuilt("numel", ::NumelModel)
inbuilt("roggenrola", ::RoggenrolaModel)
inbuilt("boldore", ::BoldoreModel)
@@ -55,8 +55,10 @@ import java.util.UUID
import net.minecraft.resources.ResourceLocation
import net.minecraft.server.level.ServerPlayer
import net.minecraft.server.packs.PackType
import net.minecraft.server.packs.resources.PreparableReloadListener
import net.minecraft.server.packs.resources.ResourceManager
import net.minecraft.server.packs.resources.ResourceManagerReloadListener
import org.jetbrains.annotations.ApiStatus
object CobblemonDataProvider : DataProvider {
@@ -67,6 +69,11 @@ object CobblemonDataProvider : DataProvider {
private val scheduledActions = mutableMapOf<UUID, MutableList<() -> Unit>>()
// client is public only so we can use it cross-module. maybe a more elegant solution exists, but this works
@ApiStatus.Internal
val clientResourceReloader: PreparableReloadListener = SimpleResourceReloader(PackType.CLIENT_RESOURCES)
private val serverResourceReloader: PreparableReloadListener = SimpleResourceReloader(PackType.SERVER_DATA)
fun registerDefaults() {
this.register(CobblemonScripts, reloadable = true)
this.register(SpeciesFeatures, reloadable = false)
@@ -119,9 +126,9 @@ object CobblemonDataProvider : DataProvider {
}
ifClient {
Cobblemon.implementation.registerResourceReloader(cobblemonResource("client_resources"), SimpleResourceReloader(PackType.CLIENT_RESOURCES), PackType.CLIENT_RESOURCES, emptyList())
Cobblemon.implementation.registerResourceReloader(cobblemonResource("client_resources"), clientResourceReloader, PackType.CLIENT_RESOURCES, emptyList())
}
Cobblemon.implementation.registerResourceReloader(cobblemonResource("data_resources"), SimpleResourceReloader(PackType.SERVER_DATA), PackType.SERVER_DATA, emptyList())
Cobblemon.implementation.registerResourceReloader(cobblemonResource("data_resources"), serverResourceReloader, PackType.SERVER_DATA, emptyList())
}
override fun <T : DataRegistry> register(registry: T, reloadable: Boolean): T {
@@ -31,8 +31,6 @@ interface EVIncreaseItem: PokemonSelectingItem {
override fun canUseOnPokemon(stack: ItemStack, pokemon: Pokemon) = pokemon.evs.getOrDefault(stat) < EVs.MAX_STAT_VALUE &&
super.canUseOnPokemon(stack, pokemon)
val sound: SoundEvent
override fun applyToPokemon(
player: ServerPlayer,
stack: ItemStack,
@@ -40,14 +38,12 @@ interface EVIncreaseItem: PokemonSelectingItem {
): InteractionResultHolder<ItemStack> {
val evsGained = pokemon.evs.add(stat, evIncreaseAmount, ItemEvSource(player, stack, pokemon))
return if (evsGained > 0) {
pokemon.entity?.playSound(sound, 1F, 1F)
stack.consume(1, player)
if (!player.hasInfiniteMaterials()) {
player.giveOrDropItemStack(ItemStack(Items.GLASS_BOTTLE))
}
onSuccessfulApply(player, stack, pokemon)
InteractionResultHolder.success(stack)
} else {
InteractionResultHolder.fail(stack)
}
}
fun onSuccessfulApply(player: ServerPlayer, stack: ItemStack, pokemon: Pokemon)
}
@@ -11,8 +11,8 @@ package com.cobblemon.mod.common.item.interactive
import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.api.pokemon.stats.Stat
import com.cobblemon.mod.common.item.CobblemonItem
import com.cobblemon.mod.common.pokemon.Pokemon
import net.minecraft.server.level.ServerPlayer
import net.minecraft.sounds.SoundEvent
import net.minecraft.world.InteractionHand
import net.minecraft.world.InteractionResultHolder
import net.minecraft.world.entity.player.Player
@@ -21,7 +21,6 @@ import net.minecraft.world.level.Level
class FeatherItem(override val stat: Stat): CobblemonItem(Properties()), EVIncreaseItem {
override val evIncreaseAmount: Int = 1
override val sound: SoundEvent = CobblemonSounds.MEDICINE_FEATHER_USE
override fun use(world: Level, user: Player, hand: InteractionHand): InteractionResultHolder<ItemStack> {
if (user is ServerPlayer) {
@@ -29,4 +28,9 @@ class FeatherItem(override val stat: Stat): CobblemonItem(Properties()), EVIncre
}
return InteractionResultHolder.success(user.getItemInHand(hand))
}
override fun onSuccessfulApply(player: ServerPlayer, stack: ItemStack, pokemon: Pokemon) {
pokemon.entity?.playSound(CobblemonSounds.MEDICINE_FEATHER_USE)
stack.consume(1, player)
}
}
@@ -13,7 +13,6 @@ import com.cobblemon.mod.common.api.pokemon.stats.Stat
import com.cobblemon.mod.common.item.CobblemonItem
import com.cobblemon.mod.common.pokemon.Pokemon
import net.minecraft.server.level.ServerPlayer
import net.minecraft.sounds.SoundEvent
import net.minecraft.world.InteractionHand
import net.minecraft.world.InteractionResultHolder
import net.minecraft.world.entity.player.Player
@@ -22,7 +21,6 @@ import net.minecraft.world.level.Level
class MochiItem(override val stat: Stat): CobblemonItem(Properties()), EVIncreaseItem {
override val evIncreaseAmount: Int = 4
override val sound: SoundEvent = CobblemonSounds.MOCHI_USE
override fun applyToPokemon(player: ServerPlayer, stack: ItemStack, pokemon: Pokemon): InteractionResultHolder<ItemStack> {
if (!canUseOnPokemon(stack, pokemon)) {
@@ -40,4 +38,9 @@ class MochiItem(override val stat: Stat): CobblemonItem(Properties()), EVIncreas
}
return InteractionResultHolder.success(user.getItemInHand(hand))
}
override fun onSuccessfulApply(player: ServerPlayer, stack: ItemStack, pokemon: Pokemon) {
pokemon.entity?.playSound(CobblemonSounds.MOCHI_USE)
stack.consume(1, player)
}
}
@@ -10,19 +10,20 @@ package com.cobblemon.mod.common.item.interactive
import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.api.pokemon.stats.Stat
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.giveOrDropItemStack
import net.minecraft.server.level.ServerPlayer
import net.minecraft.sounds.SoundEvent
import net.minecraft.world.InteractionHand
import net.minecraft.world.InteractionResultHolder
import net.minecraft.world.entity.player.Player
import net.minecraft.world.item.ItemNameBlockItem
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Items
import net.minecraft.world.level.Level
import net.minecraft.world.level.block.Block
class VitaminItem(override val stat: Stat, block: Block): ItemNameBlockItem(block, Properties()), EVIncreaseItem {
override val evIncreaseAmount: Int = 10
override val sound: SoundEvent = CobblemonSounds.MEDICINE_PILLS_USE
override fun use(world: Level, user: Player, hand: InteractionHand): InteractionResultHolder<ItemStack> {
if (user is ServerPlayer) {
@@ -30,4 +31,12 @@ class VitaminItem(override val stat: Stat, block: Block): ItemNameBlockItem(bloc
}
return InteractionResultHolder.success(user.getItemInHand(hand))
}
override fun onSuccessfulApply(player: ServerPlayer, stack: ItemStack, pokemon: Pokemon) {
pokemon.entity?.playSound(CobblemonSounds.MEDICINE_PILLS_USE)
stack.consume(1, player)
if (!player.hasInfiniteMaterials()) {
player.giveOrDropItemStack(Items.GLASS_BOTTLE.defaultInstance)
}
}
}
@@ -211,8 +211,9 @@ open class Pokemon : ShowdownIdentifiable {
// Species updates already update HP but just a form change may require it
// Moved to before the field was set else it won't actually do the hp calc proper <3
val quotient = clamp(currentHealth / maxHealth.toFloat(), 0F, 1F)
val oldForm = field
field = value
this.updateMovesOnFormChange(value)
this.updateMovesOnFormChange(oldForm)
// Evo proxy is already cleared on species update but the form may be changed by itself, this is fine and no unnecessary packets will be sent out
this.evolutionProxy.current().clear()
checkGender()
@@ -2301,15 +2302,16 @@ open class Pokemon : ShowdownIdentifiable {
*
* E.g, Removing Overheat from Rotom when it is no longer Rotom-Heat and the target form is not compatible with Overheat.
*/
private fun updateMovesOnFormChange(newForm: FormData) {
private fun updateMovesOnFormChange(oldForm: FormData) {
if (this.isClient) return
val oldFormChangeMoves = this.form.moves.formChangeMoves.toSet()
val newForm = this.form
val oldFormChangeMoves = oldForm.moves.formChangeMoves.toSet()
// Only remove moves that were provided by the old form's form-change moves AND are not learnable by the new form
for (i in 0 until MoveSet.MOVE_COUNT) {
val move = this.moveSet[i]
if (move != null && move.template in oldFormChangeMoves) {
if (move != null && move.template in oldFormChangeMoves && !LearnsetQuery.ANY.canLearn(move.template, newForm.moves)) {
this.moveSet.setMove(i, null)
}
}
@@ -2322,16 +2324,8 @@ open class Pokemon : ShowdownIdentifiable {
}
}
// Add new form's form-change moves
newForm.moves.formChangeMoves.forEach { move ->
if (this.moveSet.filterNotNull().none { it.template == move }) {
if (this.moveSet.hasSpace()) {
this.moveSet.add(move.create())
} else {
this.benchedMoves.add(BenchedMove(move, 0))
}
}
}
// Add the new form's form-change moves (skipping any the Pokémon isn't high enough level for yet).
grantEligibleFormChangeMoves()
// If moveset is empty try to find one valid move to fill it
if (this.moveSet.filterNotNull().isEmpty()) {
@@ -2343,6 +2337,30 @@ open class Pokemon : ShowdownIdentifiable {
}
}
/**
* Grants any of the current form's `form_change` moves that this Pokémon doesn't already know and is high
* enough level for (form-change moves that are also level-up moves, e.g. Glaciate on Kyurem, shouldn't be
* granted until that level is reached).
*/
private fun grantEligibleFormChangeMoves() {
if (this.isClient) return
this.form.moves.formChangeMoves.forEach { move ->
if (this.moveSet.filterNotNull().none { it.template == move } && this.benchedMoves.none { it.moveTemplate == move }) {
val requiredLevel = this.form.moves.levelUpMoves.entries.firstOrNull { move in it.value }?.key
if (requiredLevel != null && this.level < requiredLevel) {
return@forEach
}
if (this.moveSet.hasSpace()) {
this.moveSet.add(move.create())
} else {
this.benchedMoves.add(BenchedMove(move, 0))
}
}
}
}
companion object {
/**
* The [FriendshipMutationCalculator] used when a Pokémon levels up.
@@ -68,6 +68,7 @@ object CobblemonRequirementAdapter : RequirementAdapter {
this.registerType(AdvancementRequirement.ADAPTER_VARIANT, AdvancementRequirement::class)
this.registerType(OwnerHoldsItemRequirement.ADAPTER_VARIANT, OwnerHoldsItemRequirement::class)
this.registerType(ChanceRequirement.ADAPTER_VARIANT, ChanceRequirement::class)
this.registerType(NegateRequirement.ADAPTER_VARIANT, NegateRequirement::class)
}
val gson: Gson by lazy {
@@ -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.pokemon.requirements
import com.cobblemon.mod.common.api.pokemon.requirement.Requirement
import com.cobblemon.mod.common.pokemon.Pokemon
class NegateRequirement(val inner: Requirement) : Requirement {
override fun check(pokemon: Pokemon) = !inner.check(pokemon)
companion object {
const val ADAPTER_VARIANT = "negate"
}
}
@@ -53,4 +53,60 @@ fun Quaternionf.toEulerXYZDegrees(): Vector3f {
vector.z = vector.z.toDegrees()
return vector
}
/* // is not allocation free so just inline ".get(AxisAngle4f)" like in the function below this
fun Quaternionf.toScaledAngleAxis(angAxisScaled: Vector3f) {
val axisAng4 = AxisAngle4f()
this.get(axisAng4)
angAxisScaled.x = axisAng4.x
angAxisScaled.y = axisAng4.y
angAxisScaled.z = axisAng4.z
angAxisScaled.mul(axisAng4.angle)
} */
fun Quaternionf.toScaledAngleAxis(dest: Vector3f) {
var x = this.x
var y = this.y
var z = this.z
var w = this.w
if (w > 1.0f) {
val invNorm = 1.0f / kotlin.math.sqrt(x * x + y * y + z * z + w * w)
x *= invNorm
y *= invNorm
z *= invNorm
w *= invNorm
}
val angle = 2.0f * kotlin.math.acos(w)
val s = kotlin.math.sqrt(1.0f - w * w)
if (s < 0.001f) {
dest.x = x * angle
dest.y = y * angle
dest.z = z * angle
} else {
val invS = angle / s
dest.x = x * invS
dest.y = y * invS
dest.z = z * invS
}
}
fun Quaternionf.setFromScaledAngleAxis(angAxisScaled: Vector3f) {
val len = angAxisScaled.length()
if (len > 1e-5f) {
this.rotationAxis(
len,
angAxisScaled.x / len,
angAxisScaled.y / len,
angAxisScaled.z / len
)
} else {
this.identity()
}
}
@@ -0,0 +1,163 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.util.math
import net.minecraft.util.Mth
import kotlin.math.max
import kotlin.math.sqrt
import kotlin.math.abs
import org.joml.Quaternionf
import org.joml.Vector3f
/**
* Much of the code here is directly taken or inspired off this great article:
* https://theorangeduck.com/page/spring-roll-call#critical
*
* Very much worth the read.
*
* Util funcitons for using springs to smoothly/naturally approach one value towards a target
*/
/**
* Need to pass in and mutate both a value and a velocity to a spring
*/
class FloatSpring(
var value: Float = 0f,
var velocity: Float = 0f
)
class QuatSpring(
var quat: Quaternionf = Quaternionf(),
var angVel: Vector3f = Vector3f()
)
/**
* Provides a fast negative exponent approximation for e^-x
*/
fun negExp(x: Float): Float {
return 1.0f / (1.0f + x + 0.48f*x*x + 0.235f*x*x*x)
}
fun halflifeToDamping(halflife: Float, eps: Float = 1e-5f): Float {
return (4.0f * 0.69314718056f) / (halflife + eps)
}
fun simpleSpringDamper(
spring: FloatSpring,
goalValue: Float,
halflife: Float,
dt: Float,
isAngle: Boolean = false
) {
val y = halflifeToDamping(halflife) / 2.0f
val j0 = if (isAngle) Mth.wrapDegrees(spring.value - goalValue) else spring.value - goalValue
val j1 = spring.velocity + j0*y;
val eydt = negExp(y*dt);
spring.value = eydt*(j0 + j1*dt) + goalValue;
spring.velocity = eydt*(spring.velocity - j1*y*dt);
}
fun simpleSpringDamperQuat(
spring: QuatSpring,
goalQuat: Quaternionf,
halflife: Float,
dt: Float
) {
val y = halflifeToDamping(halflife) / 2.0f
// Quaternions have double cover q and -q represent the same rotation.
// so an accidentally rotation the long way could be calculated.
// account for that specifically
val goal = if (spring.quat.dot(goalQuat) < 0f) {
Quaternionf(-goalQuat.x, -goalQuat.y, -goalQuat.z, -goalQuat.w)
} else {
goalQuat
}
// Gather the rotation from the goal to the current
val goalToCurrQuat = Quaternionf(spring.quat).mul(Quaternionf(goal).conjugate())
val j0 = Vector3f()
goalToCurrQuat.toScaledAngleAxis(j0)
val j1: Vector3f = Vector3f(spring.angVel).add(Vector3f(j0).mul(y))
val eydt: Float = negExp(y * dt)
val scaledAxis = Vector3f(j0).add(Vector3f(j1).mul(dt)).mul(eydt)
spring.quat.setFromScaledAngleAxis(scaledAxis)
spring.quat.mul(goal)
spring.angVel.sub(j1.mul(y * dt))
spring.angVel.mul(eydt)
}
/**
* Below is essentially the same code as found here: https://github.com/orangeduck/Spring-It-On/blob/main/inertialeasing.c
* https://theorangeduck.com/page/inertial-easing <- the blogpost
*/
// Class to hold the "time" along the curve/function and scale of the function currently
// Held in this class so both can be mutated and returned in one function call
class InertialVals(
var t: Float = 0f,
var s: Float = 0f,
var offset: Float = 0f,
)
// Includes the negative portion
fun smoothstep(t: Float, s: Float): Float {
return s * (if(t > 1.0f) 1.0f else 3*t*t - 2*t*t*t)
}
// Derivative of the above smoothstep
fun smoothstepDt(t: Float, s: Float): Float {
return s * (if(t > 1.0f) 0.0f else 6*t - 6*t*t)
}
// Solve for smoothstep parameters `t` and `s` given new target `x` and velocity `v`
fun smoothstepSolve( //TODO change these names to make more sense
vals: InertialVals,
x: Float, // Target Value x
v: Float, // Goal velocity
overshoot: Float = 0.05f,
eps: Float = 1e-8f
) {
// If velocity is low enough then start from time zero
if (abs(v) < 1e-8f) {
vals.t = 0f
vals.s = x
return
}
// If x is negative then invert signs and re-Solve
if (x < 0f) {
smoothstepSolve(vals, -x, -v, overshoot, eps)
vals.s *= -1f
return
}
// Find the possible times that solve for the given `x` and `v`
// Quadratic formula!
val q: Float = sqrt(max((6*x - v)*(6*x - v) + 8*v*v, eps))
val t0: Float = (v - 6*x + q) / (4*v)
val t1: Float = (v - 6*x - q) / (4*v)
// Overshoot if the alternative time is between -0.5f and -(0.5f + overshoot)
vals.t = if(-0.5f > t1 && t1 > -(0.5f + overshoot)) t1 else t0;
// Find the un-scaled velocity at the fitted time
val vt: Float = smoothstepDt(vals.t, 1f);
// Find the scaling factor so that the velocity at the fitted time matches
vals.s = if(abs(vt) < eps) 0f else v / vt;
}
@@ -43,7 +43,7 @@ class TypeGemFeature : Feature<BlockStateConfiguration>(BlockStateConfiguration.
val coreState = TYPE_GEM_CORE.defaultBlockState()
// Place the gem first then make sure it placed before placing the core.
worldGenLevel.setBlock(origin, coreState, UPDATE_ALL)
worldGenLevel.setBlock(chosenPos, gemState, UPDATE_ALL)
if (!worldGenLevel.getBlockState(chosenPos).`is`(gemBlock)) {
return false
}
@@ -0,0 +1,75 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:greninja_cloud",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particle/vanilla/big_smoke_white"
}
},
"events": {
"cloudfade": {
"particle_effect": {
"effect": "cobblemon:greninja_cloud_fade",
"type": "particle_with_velocity"
}
}
},
"components": {
"minecraft:emitter_rate_instant": {
"num_particles": "math.random_integer(10,12)"
},
"minecraft:emitter_lifetime_once": {
"active_time": 1
},
"minecraft:emitter_shape_box": {
"offset": [0, 1, 0],
"half_dimensions": [0.35, 0.75, 0.35],
"direction": ["math.round(math.random(-1,1))", 0, "math.round(math.random(-1,1))"]
},
"minecraft:particle_initialization": {
"per_render_expression": "v.smoke_color = v.particle_random_3;v.smoke_rotation = math.round(v.particle_random_2)*90;"
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": "0.7+(0.1*math.round(v.particle_random_4))"
},
"minecraft:particle_lifetime_events": {
"expiration_event": "cloudfade"
},
"minecraft:particle_initial_spin": {
"rotation": "v.smoke_rotation"
},
"minecraft:particle_initial_speed": 0.85,
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, "0.75+(0.75*math.round(v.particle_random_4))", 0],
"linear_drag_coefficient": 2
},
"minecraft:particle_appearance_billboard": {
"size": [0.4, 0.4],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 16,
"texture_height": 192,
"flipbook": {
"base_UV": [0, 160],
"size_UV": [16, 16],
"step_UV": [0, -16],
"frames_per_second": 28,
"max_frame": 7
}
}
},
"minecraft:particle_appearance_lighting": {},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.smoke_color",
"gradient": {
"0.0": "#FFE8E8E8",
"1.0": "#FFC1C1C1"
}
}
}
}
}
}
@@ -0,0 +1,57 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:greninja_cloud_fade",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particle/vanilla/big_smoke_white"
}
},
"components": {
"minecraft:emitter_rate_instant": {
"num_particles": 1
},
"minecraft:emitter_lifetime_once": {
"active_time": 1
},
"minecraft:emitter_shape_point": {},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.2
},
"minecraft:particle_initial_spin": {
"rotation": "v.smoke_rotation"
},
"minecraft:particle_initial_speed": 0.85,
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, 1.5, 0],
"linear_drag_coefficient": 2
},
"minecraft:particle_appearance_billboard": {
"size": [0.3, 0.3],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 16,
"texture_height": 192,
"flipbook": {
"base_UV": [0, 80],
"size_UV": [16, 16],
"step_UV": [0, 16],
"frames_per_second": 32,
"max_frame": 7
}
}
},
"minecraft:particle_appearance_lighting": {},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.smoke_color",
"gradient": {
"0.0": "#FFE8E8E8",
"1.0": "#FFC1C1C1"
}
}
}
}
}
}
@@ -0,0 +1,82 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:greninja_smoke",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particle/vanilla/generic"
}
},
"curves": {
"variable.smokesize": {
"type": "linear",
"input": "v.particle_age",
"horizontal_range": "v.particle_lifetime",
"nodes": [0.37, 0.85, 1, 1, 1, 0.88, 0.55, 0]
}
},
"events": {
"cloud": {
"particle_effect": {
"effect": "cobblemon:greninja_cloud",
"type": "particle"
}
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 150,
"max_particles": 200
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.15
},
"minecraft:emitter_lifetime_events": {
"creation_event": "cloud"
},
"minecraft:emitter_shape_disc": {
"offset": [0, "v.particle_random_4*0.75", 0],
"radius": 0.35,
"direction": "outwards"
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": "math.random(0.55,0.65)"
},
"minecraft:particle_initial_spin": {
"rotation": "math.round(v.particle_random_4*3)*90"
},
"minecraft:particle_initial_speed": 2,
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, "math.random(0.75,1)", 0],
"linear_drag_coefficient": 0.85
},
"minecraft:particle_appearance_billboard": {
"size": ["(0.13*v.smokesize)-(v.particle_random_3*0.07)", "(0.13*v.smokesize)-(v.particle_random_3*0.07)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 64,
"texture_height": 8,
"flipbook": {
"base_UV": [56, 0],
"size_UV": [8, 8],
"step_UV": [-8, 0],
"frames_per_second": 10,
"max_frame": 8
}
}
},
"minecraft:particle_appearance_lighting": {},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.particle_random_3",
"gradient": {
"0.0": "#FFBDBDBD",
"0.5": "#FF8F8F8F",
"1.0": "#FF666666"
}
}
}
}
}
}
@@ -5,396 +5,722 @@
"loop": true,
"bones": {
"body": {
"rotation": [-5, 0, 0],
"position": [0, "(math.sin(q.anim_time*90*2+90)*1-1)*0.15", 0]
"position": [0, 0, -8]
},
"head": {
"rotation": ["5-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", 0, 0]
"rotation": ["72.5-math.sin(q.anim_time*90*2-180)*1.25", -2.5, -10],
"position": [0, 0, 0]
},
"neck2": {
"rotation": ["7.5-math.sin(q.anim_time*90*2-90)", -5, -2.5],
"position": [0, -0.4, 0]
},
"tail": {
"rotation": ["-2.5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0]
"rotation": [0, 52.5, 0]
},
"tail2": {
"rotation": ["5+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0]
"rotation": [0, -45, 0],
"position": [0.7, 0, -0.55]
},
"tail3": {
"rotation": [2.5, 0, 0]
"rotation": [0, -70, 0],
"position": [1.6, 0, -1.2]
},
"jaw": {
"rotation": ["5-(math.sin(q.anim_time*90*2+90)*1-0.5)*1", 0, 0]
"tail4": {
"rotation": [0, -55, 0],
"position": [0.95, 0, -0.8]
},
"tail5": {
"rotation": [0, "57.5-math.sin(q.anim_time*90*2-120)*0.75", 0],
"position": [-1, 0, -0.75]
},
"tail6": {
"rotation": [0, "57.5-math.sin(q.anim_time*90*2-180)", 0],
"position": [-0.7, 0, -0.8]
},
"tail7": {
"rotation": ["5-math.sin(q.anim_time*90-240)*2", "45-math.sin(q.anim_time*90*2-240)*1.25", 0],
"position": [-0.3, 0, -0.1]
},
"tail8": {
"rotation": ["12.5-math.sin(q.anim_time*90-300)*2.5", "37.5-math.sin(q.anim_time*90*2-300)*1.5", 7.5],
"position": [0, 0.25, 0]
},
"tail9": {
"rotation": ["22.5-math.sin(q.anim_time*90-360)*3", "40-math.sin(q.anim_time*90*2-360)*2", 5]
},
"tail_rattle": {
"rotation": ["22.5-math.sin(q.anim_time*90-30)*4", "-math.sin(q.anim_time*90*2-10)*4", 0]
},
"tail_rattle2": {
"rotation": ["6.4956-math.sin(q.anim_time*90-70)*6", "-math.sin(q.anim_time*90*2-70)*6", 0]
},
"coiled_body": {
"scale": 0
},
"neck": {
"rotation": ["-70-math.sin(q.anim_time*90*2)*0.5", 17.5, -2.5],
"position": [0.2, -0.4, -0.3]
}
}
},
"animation.ekans.summary_idle": {
"animation.ekans.battle_idle": {
"loop": true,
"bones": {
"ekans": {
"position": [0, -0.5, 0]
},
"body": {
"position": [0, 9, 12]
"position": [0, 6, 0]
},
"head": {
"rotation": ["7.5-math.sin(q.anim_time*90*2-45)*0.5", 0, 0]
"rotation": ["35-math.sin(q.anim_time*90*3-180)*2", -11.5, -8.5],
"position": [0.75, 0, -1.1]
},
"neck2": {
"rotation": ["42.5-math.sin(q.anim_time*90*3-60)*1.25", -7.5, -5],
"position": [0, -0.3, 0]
},
"tail": {
"rotation": [-37.5, 0, 0]
"rotation": [90, -32, -272.5],
"position": [-3, -0.5, 1],
"scale": 0
},
"tail2": {
"rotation": [91.18096, -64.66751, -112.80195]
"rotation": [-176.62147, -67.38079, 169.49348]
},
"tail3": {
"rotation": [56.22229, -69.76781, -69.82589]
"rotation": [160, -85, -180]
},
"tail8": {
"rotation": [77.80887, 32.27264, 55.07287],
"position": [-1, -1.1, -2]
},
"tail9": {
"rotation": [18.4215, -23.19625, -12.13932]
},
"tail4": {
"rotation": [0, -65, 0]
"rotation": [87.73292, -75.69796, -92.26708]
},
"tail5": {
"rotation": [0, "-52.5+math.sin(q.anim_time*90*2-120)*1", 0]
"rotation": [-2.5, -87.5, 0]
},
"tail6": {
"rotation": ["8.5+(math.sin(q.anim_time*90*2+90)*1-1)*0.5", "-57.5+math.sin(q.anim_time*90*2-90)*0.5", "-math.sin(q.anim_time*90*2)*0.25"]
"rotation": [0, -62.5, 0]
},
"rattle": {
"rotation": [40, "-10-math.sin(q.anim_time*90*32)*2", 0]
},
"rattle2": {
"rotation": [12.5, "-math.sin(q.anim_time*90*32-30)*2", 0]
},
"rattle3": {
"rotation": [12.5, "-math.sin(q.anim_time*90*32-30*2)*2", 0]
},
"rattle4": {
"rotation": [5, "-math.sin(q.anim_time*90*32-30*3)*2", 0]
},
"rattle5": {
"rotation": [5, "-math.sin(q.anim_time*90*32-30*4)*2", 0]
"tail7": {
"rotation": [-1.41397, -67.50536, -1.13438]
},
"jaw": {
"rotation": ["5-math.sin(q.anim_time*90*2-45)*1", 0, 0]
"rotation": ["12.5-math.sin(q.anim_time*90*3-150)*1.5", 0, 0],
"position": [0, -0.55, 0.25]
},
"coiled_body": {
"rotation": [0, "30-math.sin(q.anim_time*90*3-120)*0.25", 0],
"position": [0, 0, -5]
},
"coiled_body_top": {
"rotation": ["-math.sin(q.anim_time*90*3-60)*0.5", "math.sin(q.anim_time*90*3-60)*0.25", "-2.5-math.sin(q.anim_time*90*1.5+45)*0.5"]
},
"tail_rattle2": {
"rotation": [9.09308, -27.20461, 4.52273]
},
"head_ai": {
"rotation": [0, -5, 5]
},
"neck": {
"rotation": ["-67.5-math.sin(q.anim_time*90*3)", 27.5, "-6.5+math.sin(q.anim_time*90*1.5-90)*1.5"],
"position": [-2, 0, 1.5]
},
"coiled_tail": {
"rotation": ["25+math.sin(q.anim_time*90*1.5-30)*1.5", "-10+math.sin(q.anim_time*90*12-30)*0.75", 7.5]
},
"coiled_tail2": {
"rotation": ["27.5+math.sin(q.anim_time*90*1.5-60)*2", "-22.5+math.sin(q.anim_time*90*12-90)*2.25", 0]
},
"coiled_tail_rattle": {
"rotation": ["27.5+math.sin(q.anim_time*90*1.5-90)*3", "-12.5+math.sin(q.anim_time*90*24-150)*3", -2.5]
},
"coiled_tail_rattle2": {
"rotation": ["math.sin(q.anim_time*90*1.5-120)*3", "math.sin(q.anim_time*90*24-210)*6", 0]
},
"coiled_tail_rattle3": {
"rotation": ["math.sin(q.anim_time*90*1.5-150)*4", "math.sin(q.anim_time*90*24-270)*8", 0]
}
}
},
"animation.ekans.faint": {
"animation_length": 3,
"animation.ekans.ground_walk": {
"loop": true,
"bones": {
"body": {
"rotation": {
"0.0": [-32.5, 0, 0],
"0.05": [-42.5, 0, 0],
"0.2": [-65.02089, -1.05627, 2.26603],
"0.35": [-90, 0, 5],
"0.7": [-97.10022, 0, 5],
"1.0": [-102.1, 0, 5],
"1.1": [-95.59, -0.25, 4.03],
"1.3": [-8.5468, -1.25885, 0.16067],
"1.45": [-7.0468, -1.25885, 0.16067]
},
"position": {
"0.0": [0, "-4.4+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -1.6],
"0.05": [0, "-2.6+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -1.1],
"0.2": [0, "-3.6+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -2.7],
"0.3": [0, -4.83, -6.77],
"0.35": [0, "-4.9+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -8.8],
"0.7": [0, "-3.8+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -9.6],
"1.0": [0, "-3.4+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -10.2],
"1.1": [0, -4, -9.26],
"1.15": [0, "-5.6+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -5.73],
"1.25": [0, -4.59, -2.31],
"1.3": [0, "-2.45+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -0.7],
"1.45": [0, "-2.25+(math.sin(q.anim_time*90*2+90)*1-1)*0.05", -0.7]
}
"position": ["-math.sin(q.anim_time*90*3-60)*3", 0, -13]
},
"head": {
"rotation": {
"0.0": ["65-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", 0, 0],
"0.1": ["75-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", 0, 0],
"0.25": ["15.1228-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", 7.24656, 1.9384],
"0.4": ["-21.1683-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", 18.759, -7.06381],
"0.5": [-22.32668, 16.91862, -6.3202],
"0.9": ["-25.7603-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -13.61143, 6.36351],
"0.95": ["-26.04-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -15.87438, 7.46234],
"1.0": ["-26.04-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -15.87, 7.46],
"1.15": ["-51.04-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -15.87, 7.46],
"1.3": ["-51.04-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -15.87, 7.46],
"1.35": ["19.4806-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -11.956, -14.52],
"1.4": ["10.9676-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -19.92467, 13.66498],
"1.45": ["20.3399-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.1", -14.86025, -1.19814]
},
"position": {
"1.3": [0, 0, 0],
"1.45": [0, 0.5, 0]
}
"rotation": [55, "math.sin(q.anim_time*90*3+270)*16", "math.sin(q.anim_time*90*3+240)*10"]
},
"neck2": {
"rotation": [-25, "math.sin(q.anim_time*90*3+180)*16", 0]
},
"tail": {
"rotation": {
"0.0": ["5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
"0.05": ["-7.5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
"0.2": ["-7.5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
"0.35": ["7.5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
"1.0": ["7.5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
"1.15": ["7.5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
"1.35": ["7.5-(math.sin(q.anim_time*90*2+90)*1-1)*0.25", 0, 0]
}
"rotation": [0, "math.sin(q.anim_time*90*3)*14", 0]
},
"tail2": {
"rotation": {
"0.0": ["20+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
"0.05": ["32.5+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
"0.2": ["45+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
"0.35": ["55+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
"0.95": ["60+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
"1.0": ["60+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
"1.1": [50.55, 0, 0],
"1.3": ["(math.sin(q.anim_time*90*2+90)*1-1)*0.5", 0, 0]
}
"rotation": [0, "math.sin(q.anim_time*90*3-60)*8", 0]
},
"tail3": {
"rotation": [0, "math.sin(q.anim_time*90*3-120)*12", 0]
},
"tail4": {
"rotation": [0, "math.sin(q.anim_time*90*3-180)*16", 0]
},
"tail5": {
"rotation": [0, "math.sin(q.anim_time*90*3-210)*16", 0]
},
"tail6": {
"rotation": [0, "math.sin(q.anim_time*90*3-240)*14", 0]
},
"tail7": {
"rotation": [0, "math.sin(q.anim_time*90*3-270)*12", 0]
},
"tail8": {
"rotation": [0, "math.sin(q.anim_time*90*3-300)*14", 0]
},
"tail9": {
"rotation": [0, "math.sin(q.anim_time*90*3-330)*18", 0]
},
"tail_rattle": {
"rotation": [0, "math.sin(q.anim_time*90*3-10)*20", 0]
},
"coiled_body": {
"scale": 0
},
"neck": {
"rotation": [-30, "math.sin(q.anim_time*90*3+60)*20", 0],
"position": [0, 0, 0.25]
}
}
},
"animation.ekans.ground_run": {
"loop": true,
"bones": {
"body": {
"position": ["-math.sin(q.anim_time*90*5-60)*3", 0, -13]
},
"head": {
"rotation": [0, "math.sin(q.anim_time*90*5+270)*18", 0]
},
"neck2": {
"rotation": [0, "math.sin(q.anim_time*90*5+180)*16", 0]
},
"tail": {
"rotation": [0, "math.sin(q.anim_time*90*5)*16", 0]
},
"tail2": {
"rotation": [0, "math.sin(q.anim_time*90*5-60)*12", 0]
},
"tail3": {
"rotation": [0, "math.sin(q.anim_time*90*5-120)*14", 0]
},
"tail4": {
"rotation": [0, "math.sin(q.anim_time*90*5-180)*16", 0]
},
"tail5": {
"rotation": [0, "math.sin(q.anim_time*90*5-210)*18", 0]
},
"tail6": {
"rotation": [0, "math.sin(q.anim_time*90*5-240)*18", 0]
},
"tail7": {
"rotation": [0, "math.sin(q.anim_time*90*5-270)*16", 0]
},
"tail8": {
"rotation": [0, "math.sin(q.anim_time*90*5-300)*14", 0]
},
"tail9": {
"rotation": [0, "math.sin(q.anim_time*90*5-330)*12", 0]
},
"tail_rattle": {
"rotation": [0, "math.sin(q.anim_time*90*5-10)*18", 0]
},
"coiled_body": {
"scale": 0
},
"neck": {
"rotation": [0, "math.sin(q.anim_time*90*5+60)*18", 0]
}
}
},
"animation.ekans.snake_ground_walk": {
"loop": true,
"bones": {
"body": {
"position": ["-q.r.yaw_change(3)*1", 0, 0]
},
"head": {
"rotation": [0, 0, "q.r.yaw_change(0)*5"],
"position": ["-q.r.yaw_change(0)*-0.2", "q.r.yaw_change(0)*0.25", 0]
},
"neck2": {
"rotation": [0, "-q.r.yaw_change(0)*-15", 0],
"position": ["-q.r.yaw_change(0)*0.3", 0, 0]
},
"tail": {
"rotation": [0, "-q.r.yaw_change(3)*-7.5", 0],
"position": ["-q.r.yaw_change(3)*-0.15", 0, "math.abs(q.r.yaw_change(3)*0.5)"]
},
"tail2": {
"rotation": [0, "-q.r.yaw_change(5)*5", 0]
},
"tail3": {
"rotation": [0, "-q.r.yaw_change(10)*2.5", 0]
},
"tail4": {
"rotation": [0, "-q.r.yaw_change(12)*7.5", 0]
},
"tail5": {
"rotation": [0, "-q.r.yaw_change(15)*7.5", 0]
},
"tail6": {
"rotation": [0, "-q.r.yaw_change(17)*10", 0]
},
"tail7": {
"rotation": [0, "-q.r.yaw_change(20)*7.5", 0]
},
"tail8": {
"rotation": [0, "-q.r.yaw_change(22)*5", 0]
},
"tail9": {
"rotation": [0, "-q.r.yaw_change(24)*5", 0]
},
"tail_rattle": {
"rotation": [0, "-q.r.yaw_change(26)*2.5", 0]
},
"neck": {
"rotation": [0, "-q.r.yaw_change(0)*-25", 0],
"position": ["-q.r.yaw_change(0)*0.25", 0, 0]
}
}
},
"animation.ekans.snake_ground_run": {
"loop": true,
"bones": {
"body": {
"position": ["-q.r.yaw_change(3)*2", 0, 0]
},
"head": {
"rotation": [0, "-q.r.yaw_change(0)*-10", 0],
"position": ["-q.r.yaw_change(0)*-0.2", "q.r.yaw_change(0)*0.25", 0]
},
"neck2": {
"rotation": [0, "-q.r.yaw_change(0)*-15", 0],
"position": ["-q.r.yaw_change(0)*0.25", 0, 0]
},
"tail": {
"rotation": [0, "-q.r.yaw_change(3)*-10", 0],
"position": ["-q.r.yaw_change(3)*-0.15", 0, 0]
},
"tail2": {
"rotation": [0, "-q.r.yaw_change(5)*5", 0]
},
"tail3": {
"rotation": [0, "-q.r.yaw_change(10)*5", 0]
},
"tail4": {
"rotation": [0, "-q.r.yaw_change(12)*7.5", 0]
},
"tail5": {
"rotation": [0, "-q.r.yaw_change(15)*10", 0]
},
"tail6": {
"rotation": [0, "-q.r.yaw_change(17)*7.5", 0]
},
"tail7": {
"rotation": [0, "-q.r.yaw_change(20)*10", 0]
},
"tail8": {
"rotation": [0, "-q.r.yaw_change(22)*5", 0]
},
"tail9": {
"rotation": [0, "-q.r.yaw_change(24)*5", 0]
},
"tail_rattle": {
"rotation": [0, "-q.r.yaw_change(26)*2.5", 0]
},
"neck": {
"rotation": [0, "-q.r.yaw_change(0)*-35", 0]
}
}
},
"animation.ekans.cry": {
"animation_length": 1.5,
"bones": {
"head": {
"rotation": {
"0.0": [7.5, 0, 0],
"0.05": [17.5, 0, 0],
"0.2": [27.5, 0, 0],
"0.7": [35, 0, 0],
"1.0": [35, 0, 0],
"1.6": [34.96463, -9.99962, 0.08301],
"2.0": [0.01002, 0.32522, 0.69041]
"0.0": [0, 0, 0],
"0.0833": {
"pre": [5, 0, 0],
"post": [5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.2083": {
"post": ["-40-math.sin(q.anim_time*90*30)*1.5", 0, 0],
"lerp_mode": "catmullrom"
},
"0.625": {
"post": [-35, 0, 0],
"lerp_mode": "catmullrom"
},
"1.125": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"1.375": [0, 0, 0]
},
"position": {
"0.0": [0, 0, 0],
"0.0833": [0, 0, 0],
"0.2083": {
"pre": [0, 0, -0.25],
"post": [0, 0, -0.25],
"lerp_mode": "catmullrom"
},
"1.125": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"1.375": [0, 0, 0]
}
},
"jaw": {
"rotation": {
"0.0": ["5-(math.sin(q.anim_time*90*2+90)*1-0.5)*1", 0, 0],
"0.05": ["-35-(math.sin(q.anim_time*90*2+90)*1-0.5)*1", 0, 0],
"0.5": ["27.5-(math.sin(q.anim_time*90*2+90)*1-0.5)*1", 0, 0],
"0.85": ["27.5-(math.sin(q.anim_time*90*2+90)*1-0.5)*1", 0, 0],
"1.1": ["-25-(math.sin(q.anim_time*90*2+90)*1-0.5)*1", 0, 0],
"1.15": ["-15-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", 0, 0]
"0.0": [0, 0, 0],
"0.0833": {
"pre": [-5, 0, 0],
"post": [-5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.2083": {
"post": [37.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5833": {
"post": [11.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.7083": {
"post": [7.26, 0, 0],
"lerp_mode": "catmullrom"
},
"0.875": {
"post": [1, 0, 0],
"lerp_mode": "catmullrom"
},
"1.375": [0, 0, 0]
}
},
"eyelid_right": {
"position": {
"0.0": [-0.1, 0, 0],
"0.1": [-0.1, 0, 0],
"0.15": [0, 0, 0],
"1.1": [0, 0, 0],
"1.15": [-0.1, 0, 0]
}
},
"eyelid_left": {
"position": {
"0.0": [0.1, 0, 0],
"0.1": [0.1, 0, 0],
"0.15": [0, 0, 0],
"1.1": [0, 0, 0],
"1.15": [0.1, 0, 0]
}
},
"tail4": {
"neck2": {
"rotation": {
"0.0": [0, 0, 0],
"0.5": [22.5, 0, 0],
"0.65": [25, 0, 0],
"0.95": [32.5, 0, 0],
"1.0": [32.5, 0, 0],
"1.35": [39.56059, -8.33248, 5.56948],
"2.15": [0.00946, 0.60916, 0.36323]
"0.0833": {
"pre": [7.5, 0, 0],
"post": [7.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.2083": {
"post": [-5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5": [-5, 0, 0],
"1.125": {
"pre": [0, 0, 0],
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"1.375": [0, 0, 0]
}
},
"tail5": {
"rotation": {
"0.0": [5, 0, 0],
"0.1": [15, 0, 0],
"0.2": [25, 0, 0],
"0.5": [42.82744, -9.23501, -8.46088],
"0.55": [45.68718, -8.80348, -8.90928],
"0.65": [48.18718, -8.80348, -8.90928],
"1.0": [47.64681, 4.67606, 5.90982],
"1.45": [54.85234, 2.05205, 11.11128],
"2.3": [-0.0412, 8.51931, 0.3767]
}
},
"tail6": {
"neck": {
"rotation": {
"0.0": [0, 0, 0],
"0.05": [0, 0, 0],
"0.3": [22.5, 0, 0],
"0.65": [45, 0, 0],
"1.0": [45, 0, 0],
"1.55": [51.77676, 2.80672, 7.84455],
"2.45": [-1.96924, -1.43601, -6.55108]
}
},
"rattle": {
"rotation": {
"0.0": [0, 0, 0],
"0.05": [-10, 0, 0],
"0.75": [15, 0, 0],
"1.0": [15, 0, 0],
"1.65": [20, 10, 5],
"2.55": [0, -2.5, -2.5]
}
},
"rattle4": {
"rotation": {
"0.0": [0, 0, 0],
"0.1": [-10, 0, 0],
"0.55": [10, 0, 0],
"1.0": [15, 0, 0],
"1.75": [20, 10, 5],
"2.65": [2.5, -5, 0]
}
},
"rattle2": {
"rotation": {
"0.0": [0, 0, 0],
"0.05": [-20, 0, 0],
"1.0": [20, 0, 0],
"1.25": [15, 0, 0],
"1.9": [20, 10, 5],
"2.55": [-2.5, -2.5, -2.5]
}
},
"rattle3": {
"rotation": {
"0.0": [0, 0, 0],
"0.05": [-20, 0, 0],
"1.25": [25, 0, 0],
"1.5": [15, 0, 0],
"2.15": [20, 10, 5],
"2.55": [0, -2.5, -2.5]
}
},
"rattle5": {
"rotation": {
"0.0": [0, 0, 0],
"0.1": [-10, 0, 0],
"0.8": [20, 0, 0],
"1.25": [10, 0, 0],
"2.0": [15, 10, 5],
"2.65": [2.5, -5, 0]
"0.0833": {
"pre": [2.5, 0, 0],
"post": [2.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.2083": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5": [0, 0, 0],
"1.125": {
"pre": [0, 0, 0],
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"1.375": [0, 0, 0]
}
}
},
"sound_effects": {
"0.1667": {
"effect": "pokemon.ekans.cry"
}
}
},
"animation.ekans.sleep": {
"loop": true,
"bones": {
"ekans": {
"position": [0, 3, 7]
"body": {
"position": [0, 6, 0]
},
"head": {
"rotation": [42.91333, 68.7346, 43.12956]
"rotation": ["17.5-math.sin(q.anim_time*90-180)", -49, -6]
},
"jaw": {
"rotation": [-10, 0, 0]
},
"eyelid_right": {
"position": [-0.1, 0, 0]
},
"eyelid_left": {
"position": [0.1, 0, 0]
"neck2": {
"rotation": ["15-math.sin(q.anim_time*90-60)*0.75", -50, -7.5],
"position": [-0.25, 0, 0.5]
},
"tail": {
"rotation": [-7.5, 55, 0]
"rotation": [90, -32, -272.5],
"position": [-3, -0.5, 1],
"scale": 0
},
"tail2": {
"rotation": [-3.9416, -55.3577, -4.33386]
"rotation": [-176.62147, -67.38079, 169.49348]
},
"tail3": {
"rotation": [20.41084, -54.0129, -21.47388]
"rotation": [160, -85, -180]
},
"tail8": {
"rotation": [77.80887, 32.27264, 55.07287],
"position": [-1, -1.1, -2]
},
"tail9": {
"rotation": [18.4215, -23.19625, -12.13932]
},
"tail4": {
"rotation": [0, -62.5, 0]
"rotation": [87.73292, -75.69796, -92.26708]
},
"tail5": {
"rotation": [0, -55, 0]
"rotation": [-2.5, -87.5, 0]
},
"tail6": {
"rotation": [0, -57.5, 0]
"rotation": [0, -62.5, 0]
},
"rattle": {
"rotation": [-7.5, -62.5, 0]
"tail7": {
"rotation": [-1.41397, -67.50536, -1.13438]
},
"coiled_body": {
"rotation": [0, "-math.sin(q.anim_time*90-120)*0.25", 0],
"position": [0, 0, -3]
},
"coiled_body_top": {
"rotation": ["-math.sin(q.anim_time*90-60)*0.5", "math.sin(q.anim_time*90-60)*0.25", "-2.5-math.sin(q.anim_time*90*0.5+45)*0.5"]
},
"tail_rattle2": {
"rotation": [9.09308, -27.20461, 4.52273]
},
"eyelid_right": {
"position": [-1, 0, 0]
},
"neck": {
"rotation": ["-5-math.sin(q.anim_time*90)*0.75", 17.5, "-6.5+math.sin(q.anim_time*90*0.5-90)*0.5"],
"position": [-3.5, -0.75, 3.5]
},
"eyelid_left": {
"position": [1, 0, 0]
},
"coiled_tail": {
"rotation": [-2.5, "-40+math.sin(q.anim_time*90-30)", 0],
"position": [1, 0, 0]
},
"coiled_tail2": {
"rotation": [0, "-30+math.sin(q.anim_time*90-90)", 0]
},
"coiled_tail_rattle": {
"rotation": [-10, "-27.5+math.sin(q.anim_time*90-150)", 0]
},
"coiled_tail_rattle2": {
"rotation": [5, "math.sin(q.anim_time*90-210)", 0]
},
"coiled_tail_rattle3": {
"rotation": [0, "math.sin(q.anim_time*90-270)", 0]
}
}
},
"animation.ekans.cry": {
"animation_length": 0.95833,
"animation.ekans.recoil": {
"animation_length": 1,
"bones": {
"head": {
"rotation": {
"0.0": {
"0.0": [0, 0, 0],
"0.0833": {
"pre": [2.5, 0, 0],
"post": [2.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.2083": {
"post": [5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.4583": {
"post": [-1, 0, 0],
"lerp_mode": "catmullrom"
},
"0.7083": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.0833": {
"post": [-5, 0, 0],
"0.9583": [0, 0, 0]
},
"position": {
"0.0": [0, 0, 0],
"0.0833": [0, 0, 0],
"0.2083": {
"pre": [0, 0, -0.25],
"post": [0, 0, -0.25],
"lerp_mode": "catmullrom"
},
"0.5833": {
"0.4583": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.7083": [0, 0, 0]
}
},
"jaw": {
"rotation": {
"0.0": [0, 0, 0],
"0.0833": {
"pre": [-2.5, 0, 0],
"post": [-2.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": [15, 0, 0],
"lerp_mode": "catmullrom"
},
"0.4583": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.7083": [0, 0, 0]
}
},
"neck2": {
"rotation": {
"0.0": [0, 0, 0],
"0.0833": {
"pre": [15, 0, 0],
"post": [15, 0, 0],
"lerp_mode": "catmullrom"
},
"0.2083": {
"post": [7.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.4583": {
"post": [-2.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.7083": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.9583": [0, 0, 0]
}
},
"jaw": {
"pupil_right": {
"position": {
"0.0": [0, 0, 0],
"0.125": {"pre": [0, 0, 0], "post": [1, 0, 0]},
"0.5417": {"pre": [1, 0, 0], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [-1, 0, 0],
"0.125": {"pre": [-1, 0, 0], "post": [0, 0, 0]}
}
},
"pupil_surprised_right": {
"position": {
"0.0": [0, 0, 0],
"0.125": {"pre": [0, 0, 0], "post": [-1, 0, 0]},
"0.5417": {"pre": [-1, 0, 0], "post": [0, 0, 0]}
}
},
"neck": {
"rotation": {
"0.0": {
"0.0": [0, 0, 0],
"0.0833": {
"pre": [0, 0, 0],
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.125": {
"post": [12.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": [14.79, 0, 0],
"lerp_mode": "catmullrom"
},
"0.2083": {
"post": [12.5, 0, 0],
"post": [-10, 0, 0],
"lerp_mode": "catmullrom"
},
"0.25": {
"post": [14.79, 0, 0],
"0.4583": {
"post": [-2.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.2917": {
"post": [12.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.3333": {
"post": [14.79, 0, 0],
"lerp_mode": "catmullrom"
},
"0.6667": {
"0.7083": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.9583": [0, 0, 0]
}
},
"eyelid_left": {
"position": {
"0.0": [1, 0, 0],
"0.125": {"pre": [1, 0, 0], "post": [0, 0, 0]}
}
},
"pupil_left": {
"position": {
"0.0": [0, 0, 0],
"0.125": {"pre": [0, 0, 0], "post": [-1, 0, 0]},
"0.5417": {"pre": [-1, 0, 0], "post": [0, 0, 0]}
}
},
"pupil_surprised_left": {
"position": {
"0.0": [0, 0, 0],
"0.125": {"pre": [0, 0, 0], "post": [1, 0, 0]},
"0.5417": {"pre": [1, 0, 0], "post": [0, 0, 0]}
}
}
},
"sound_effects": {
"0.0833": {
"effect": "pokemon.ekans.cry"
}
},
"animation.ekans.walkspeedtest": {
"loop": true,
"bones": {
"body": {
"position": [0, 0, "120-q.anim_time*16*1.5"]
}
}
},
"animation.ekans.runspeedtest": {
"loop": true,
"bones": {
"body": {
"position": [0, 0, "120-q.anim_time*16*3.5"]
}
}
},
"animation.ekans.blink": {
"animation_length": 0.16667,
"animation_length": 0.1667,
"bones": {
"eyelid_right": {
"position": {
"0.0": [-0.1, 0, 0],
"0.125": [-0.1, 0, 0],
"0.1667": [0, 0, 0]
"0.0": [-1, 0, 0],
"0.1667": {"pre": [-1, 0, 0], "post": [0, 0, 0]}
}
},
"eyelid_left": {
"position": {
"0.0": [0.1, 0, 0],
"0.125": [0.1, 0, 0],
"0.1667": [0, 0, 0]
"0.0": [1, 0, 0],
"0.1667": {"pre": [1, 0, 0], "post": [0, 0, 0]}
}
}
}
@@ -833,7 +833,7 @@
},
"sound_effects": {
"0.125": {
"effect": "pokemon.diglett_alolan.cry"
"effect": "pokemon.diglett.cry"
}
}
}
@@ -1,10 +1,10 @@
{
"format_version": "1.8.0",
"animations": {
"animation.poliwag.ground_idle": {
"animation.poliwag.ground_idle_placeholder": {
"loop": true,
"bones": {
"tail1": {
"tail": {
"rotation": [30, 0, 0]
},
"tail2": {
@@ -15,32 +15,28 @@
}
}
},
"animation.poliwag.ground_walk": {
"animation.poliwag.ground_walk_placeholder": {
"loop": true,
"bones": {
"body": {
"position": [0, "0 - (6/11) + math.abs(math.sin(((query.anim_time) - (1/3)) * 90 * 3) * (6/11))", 0]
},
"head": {
"rotation": ["0 - (0 * 1.5)", "math.sin(((query.anim_time) - (0.5/3)) * 90 * 3) * (4 * 1.5)", 0],
"position": [0, 0, "0 - (0 / 10)"]
},
"arm_left": {
"rotation": [0, "0 - math.sin(((query.anim_time) - (0.5/3)) * 90 * 3) * 28", "0 - -48"]
},
"arm_left2": {
"rotation": [0, "math.clamp(math.sin(((query.anim_time) + (0.75/3)) * 90 * 3) * 28, 0, 28)", 0]
},
"arm_right": {
"rotation": [0, "0 - math.sin(((query.anim_time) - (0.5/3)) * 90 * 3) * 28", -48]
},
"arm_right2": {
"rotation": [0, "0 - math.clamp(math.sin(((query.anim_time) - (0.75/3)) * 90 * 3) * 28, 0, 28)", 0]
},
"torso2": {
"rotation": [0, "0 - math.sin(((query.anim_time) - (0.5/3)) * 90 * 3) * 4", 0]
"body": {
"position": [0, "0 - (6/11) + math.abs(math.sin(((query.anim_time) - (1/3)) * 90 * 3) * (6/11))", 0]
},
"leg_left": {
"torso": {
"rotation": [0, "0 - math.sin(((query.anim_time) - (0.25/3)) * 90 * 3) * 4", 0]
},
"tail": {
"rotation": [30, 0, 0]
},
"tail2": {
"rotation": [15, 0, 0]
},
"tail3": {
"rotation": [15, 0, 0]
},
"left_leg": {
"rotation": [
"0 -math.sin((query.anim_time) * 90 * 3) * 6",
0,
@@ -48,10 +44,10 @@
],
"position": [0, "math.clamp(math.sin(((query.anim_time) + (1/3)) * 90 * 3) * 1, 0, 1)", 0]
},
"leg_left2": {
"rotation": ["0 - math.clamp(math.sin(((query.anim_time) - (0.75/3)) * 90 * 3) * 0, -0, 0)", 0, 0]
"left_foot": {
"rotation": ["0 - math.clamp(math.sin(((query.anim_time) - (0.75/3)) * 90 * 3) * v.foot, -v.foot, 0)", 0, 0]
},
"leg_right": {
"right_leg": {
"rotation": [
"math.sin((query.anim_time) * 90 * 3) * 6",
0,
@@ -59,39 +55,19 @@
],
"position": [0, "math.clamp(math.sin(((query.anim_time) - (1/3)) * 90 * 3) * 1, 0, 1)", 0]
},
"leg_right2": {
"rotation": ["math.clamp(math.sin(((query.anim_time) - (0.75/3)) * 90 * 3) * 0, 0, 0)", 0, 0]
},
"foot_left": {
"rotation": ["0 - math.clamp(math.sin(((query.anim_time) - (0.75/3)) * 90 * 3) * v.foot, -v.foot, 0)", 0, 0]
},
"foot_right": {
"right_foot": {
"rotation": ["math.clamp(math.sin(((query.anim_time) - (0.75/3)) * 90 * 3) * v.foot, 0, v.foot)", 0, 0]
},
"hand_right": {
"rotation": [0, -70, 0]
},
"hand_left": {
"rotation": [0, 70, 0]
},
"tail1": {
"rotation": [30, 0, 0]
},
"tail2": {
"rotation": [15, 0, 0]
},
"tail3": {
"rotation": [15, 0, 0]
},
"torso": {
"rotation": [0, "0 - math.sin(((query.anim_time) - (0.25/3)) * 90 * 3) * 4", 0]
}
}
},
"animation.poliwag.water_idle": {
"animation.poliwag.water_idle_placeholder": {
"loop": true,
"animation_length": 0.4583,
"bones": {
"tail1": {
"body": {
"rotation": [15, 0, 0]
},
"tail": {
"rotation": [-15, 0, 0]
},
"tail2": {
@@ -100,27 +76,27 @@
"tail3": {
"rotation": [15, 0, 0]
},
"body": {
"left_leg": {
"rotation": [15, 0, 0]
},
"leg_right": {
"left_foot": {
"rotation": [15, 0, 0]
},
"foot_right1": {
"right_leg": {
"rotation": [15, 0, 0]
},
"leg_left": {
"rotation": [15, 0, 0]
},
"foot_left1": {
"right_foot": {
"rotation": [15, 0, 0]
}
}
},
"animation.poliwag.water_swim": {
"animation.poliwag.water_swim_placeholder": {
"loop": true,
"bones": {
"tail1": {
"body": {
"rotation": [45, 0, 0]
},
"tail": {
"rotation": [-45, 0, 0]
},
"tail2": {
@@ -129,43 +105,54 @@
"tail3": {
"rotation": [5, 0, 0]
},
"body": {
"rotation": [45, 0, 0]
},
"leg_right": {
"left_leg": {
"rotation": [15, 0, 0]
},
"leg_left": {
"left_foot": {
"rotation": [15, 0, 0]
},
"foot_right1": {
"right_leg": {
"rotation": [15, 0, 0]
},
"foot_left1": {
"right_foot": {
"rotation": [15, 0, 0]
}
}
},
"animation.poliwag.blink": {
"animation_length": 0.16667,
"animation.poliwag.blink_placeholder": {
"animation_length": 0.1667,
"bones": {
"eyelid_left": {
"left_eyelid": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
},
"eyelid_right": {
"right_eyelid": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
},
"left_pupil": {
"position": {
"0.0": [0, 0, 0.1],
"0.125": [0, 0, 0.1],
"0.1667": [0, 0, 0]
}
},
"right_pupil": {
"position": {
"0.0": [0, 0, 0.1],
"0.125": [0, 0, 0.1],
"0.1667": [0, 0, 0]
}
}
}
},
"animation.poliwag.sleep": {
"animation.poliwag.sleep_placeholder": {
"loop": true,
"bones": {
"body": {
@@ -175,29 +162,6 @@
"eyelids": {
"position": [0, 0, -0.1]
},
"leg_right": {
"rotation": [-56.86824, 13.96782, -1.24205],
"position": [0, 0.25, -0.75]
},
"foot_right1": {
"rotation": [45, 0, 0]
},
"foot_right2": {
"rotation": [10, 0, 0]
},
"leg_left": {
"rotation": [-27.43103, -15.68951, 1.9062],
"position": [0, 0.5, -0.75]
},
"foot_left1": {
"rotation": [12.5, 0, 0]
},
"foot_left2": {
"rotation": [10, 0, 0]
},
"tail1": {
"rotation": [-0.16127, 25.11621, 5.5184]
},
"tail2": {
"rotation": [12.30936, 7.61658, -1.09051],
"position": [0, 0, -0.35]
@@ -206,52 +170,129 @@
"rotation": [10, 7.5, 0],
"position": [0, 0, -0.5]
},
"eyelid_left": {
"left_eyelid2": {
"position": [0, 0, -0.1]
},
"eyelid_right": {
"right_eyelid2": {
"position": [0, 0, -0.1]
}
}
},
"animation.poliwag.render": {
"loop": true,
"bones": {
"body": {
"rotation": [-5, 0, -10],
"position": [0, 6, 0]
},
"leg_right": {
"rotation": [24.26391, -14.269, 7.17267]
"tail": {
"rotation": [-0.16127, 25.11621, 5.5184]
},
"foot_right2": {
"left_leg": {
"rotation": [-27.43103, -15.68951, 1.9062],
"position": [0, 0.5, -0.75]
},
"left_foot": {
"rotation": [12.5, 0, 0]
},
"leg_left": {
"rotation": [17.44401, 5.64135, -19.34918]
"left_toe": {
"rotation": [10, 0, 0]
},
"foot_left2": {
"rotation": [-7.5, 0, 0]
"right_leg": {
"rotation": [-56.86824, 13.96782, 1.24205],
"position": [0, 0.25, -0.75]
},
"tail1": {
"rotation": [-63.87343, -4.37224, -50.6695]
"right_foot": {
"rotation": [45, 0, 0]
},
"tail2": {
"rotation": [0, 7.5, 0],
"position": [0, 0, -0.3]
},
"tail3": {
"rotation": [0, 0, 0]
"right_toe": {
"rotation": [10, 0, 0]
}
}
},
"animation.poliwag.cry": {
"animation_length": 1.25,
"sound_effects": {
"0.0417": {
"effect": "pokemon.poliwag.cry"
}
}
}
"animation.poliwag.cry": {
"animation_length": 1.25,
"sound_effects": {
"0.0417": {
"effect": "pokemon.poliwag.cry"
}
}
},
"animation.poliwag.test": {
"animation_length": 4,
"bones": {
"torso": {
"rotation": [-2.4905, 0.21782, 4.99527],
"position": [0, 0.25, 0]
},
"left_eye": {
"rotation": [0, 0, 0]
},
"right_eye": {
"rotation": [0, 0, 0]
},
"left_leg": {
"rotation": [20.22183, -9.6955, -1.73294],
"position": [0, 0, 0.25]
},
"left_foot": {
"rotation": [24.63136, -5.82612, 3.55184]
},
"right_leg": {
"rotation": [-32.29039, 6.33954, 2.12126],
"position": [-0.5, 0.5, -2]
},
"right_foot": {
"rotation": [2.92249, 12.46442, 1.89155]
},
"tail": {
"rotation": [34.30897, -18.48624, -45.57625]
},
"tail2": {
"rotation": [20, 0, 0]
},
"tail3": {
"rotation": [17.5, 0, 0]
},
"poliwag": {
"position": [0, 1, 0]
},
"mouth": {
"position": {
"0.0": [0, 0, 2],
"2.0": {"pre": [0, 0, 2], "post": [0, 0, 0]}
}
},
"left_toe": {
"rotation": [-45, 0, 0]
},
"right_toe": {
"rotation": [7.5, 0, 0],
"position": [0, 0, 0.15]
},
"mouth_open": {
"position": {
"0.0": [0, 0, -2],
"2.0": {"pre": [0, 0, -2], "post": [0, 0, 0]}
}
},
"eyelids": {
"position": {
"0.0": [0, 0, 0],
"1.5": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"1.6667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"left_eyelid": {
"position": [0.25, 0, 0]
},
"left_pupil": {
"position": {
"0.0": [0, 0, 0],
"1.5": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.6667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
},
"scale": [-1, 1, 1]
},
"right_pupil": {
"position": {
"0.0": [0, 0, 0],
"1.5": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.6667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
}
}
}
}
}
@@ -4,93 +4,937 @@
"animation.politoed.ground_idle": {
"loop": true,
"bones": {
"leftleg": {
"left_thigh": {
"rotation": [0, -5, 0]
},
"rightleg": {
"rotation": [0, 5, 0]
},
"leftarm": {
"left_arm": {
"rotation": [0, 0, 45]
},
"leftforearm": {
"left_lower_arm": {
"rotation": [0, 0, 15]
},
"rightarm": {
"right_thigh": {
"rotation": [0, 5, 0]
},
"right_arm": {
"rotation": [0, 0, -45]
},
"rightforearm": {
"right_lower_arm": {
"rotation": [0, 0, -15]
},
"tongue_long_base": {
"scale": 0
}
}
},
"animation.politoed.water_idle": {
"loop": true,
"bones": {
"leftleg": {
"rotation": [7.5, -5, 0]
},
"rightleg": {
"rotation": [7.5, 5, 0]
},
"leftarm": {
"rotation": [0, -10, 30]
},
"leftforearm": {
"rotation": [0, 0, 15]
},
"rightarm": {
"rotation": [0, 10, -30]
},
"rightforearm": {
"rotation": [0, 0, -15]
},
"body": {
"rotation": [30, 0, 0]
},
"head": {
"rotation": [-25, 0, 0]
},
"leftfoot": {
"left_thigh": {
"rotation": [7.5, -5, 0]
},
"left_foot": {
"rotation": [15, 0, 0]
},
"rightfoot": {
"left_arm": {
"rotation": [0, -10, 30]
},
"left_lower_arm": {
"rotation": [0, 0, 15]
},
"right_thigh": {
"rotation": [7.5, 5, 0]
},
"right_foot": {
"rotation": [15, 0, 0]
},
"right_arm": {
"rotation": [0, 10, -30]
},
"right_lower_arm": {
"rotation": [0, 0, -15]
},
"tongue_long_base": {
"scale": 0
}
}
},
"animation.politoed.water_swim": {
"loop": true,
"bones": {
"leftleg": {
"rotation": [15, -5, 0]
},
"rightleg": {
"rotation": [15, 5, 0]
},
"leftarm": {
"rotation": [0, -10, 45]
},
"leftforearm": {
"rotation": [0, 0, 15]
},
"rightarm": {
"rotation": [0, 10, -45]
},
"rightforearm": {
"rotation": [0, 0, -15]
},
"body": {
"rotation": [60, 0, 0]
},
"head": {
"rotation": [-55, 0, 0]
},
"leftfoot": {
"left_thigh": {
"rotation": [15, -5, 0]
},
"left_foot": {
"rotation": [30, 0, 0]
},
"rightfoot": {
"left_arm": {
"rotation": [0, -10, 45]
},
"left_lower_arm": {
"rotation": [0, 0, 15]
},
"right_thigh": {
"rotation": [15, 5, 0]
},
"right_foot": {
"rotation": [30, 0, 0]
},
"right_arm": {
"rotation": [0, 10, -45]
},
"right_lower_arm": {
"rotation": [0, 0, -15]
},
"tongue_long_base": {
"scale": 0
}
}
},
"animation.politoed.test": {
"loop": true,
"bones": {
"body": {
"position": [0, -0.5, 0]
},
"undefined": {
"rotation": [-30, 0, 0]
},
"torso": {
"position": [0, 0, 0]
},
"legs": {
"position": [0, -0.6, 0]
},
"left_thigh": {
"rotation": [-22, -31, -12.5],
"position": [0, 0, 0]
},
"left_leg": {
"rotation": [72.5, -10, 5]
},
"left_foot": {
"rotation": [-43, 0, 2.75],
"position": [0, 0.25, -0.25]
},
"head": {
"rotation": [-5, 0, 0]
},
"jaw": {
"rotation": [30, 0, 0]
},
"left_arm": {
"rotation": [0, 0, 42.5]
},
"left_lower_arm": {
"rotation": [0, 40, 0]
},
"left_hand": {
"rotation": [0, 0, 22.5],
"position": [-0.35, 0, 0]
},
"right_thigh": {
"rotation": [-22, 31, 12.5]
},
"right_leg": {
"rotation": [72.5, 10, -5]
},
"right_foot": {
"rotation": [-43, 0, -2.75],
"position": [0, 0.25, -0.25]
},
"right_arm": {
"rotation": [0, 0, -42.5]
},
"right_lower_arm": {
"rotation": [0, -40, 0]
},
"right_hand": {
"rotation": [0, 0, -22.5],
"position": [0.35, 0, 0]
},
"tongue_long_base": {
"rotation": [-27.5, 0, 0]
},
"tongue_long_mid": {
"rotation": [32.5, 0, 0]
},
"tongue_long_mid_bend": {
"rotation": [27.5, 0, 0]
},
"tongue_long_end": {
"rotation": [-20, 0, 0]
},
"tongue_long_tip": {
"rotation": [-37.5, 0, 0]
},
"left_leg_correction": {
"position": [0, 1, 0]
},
"right_leg_correction": {
"position": [0, 1, 0]
}
}
},
"animation.politoed.test2": {
"animation_length": 0.0417,
"bones": {
"body": {
"position": [0, -1.1, 0]
},
"undefined": {
"rotation": [-30, 0, 0]
},
"torso": {
"position": [0, 0, 0]
},
"legs": {
"position": [0, -0.6, 0]
},
"left_thigh": {
"rotation": [-58.0984, -35.5329, -3.9636],
"position": [0, 0, -0.25]
},
"left_leg": {
"rotation": [100.2268, -0.2874, 2.6377],
"position": [0, 0, 0.25]
},
"left_foot": {
"rotation": [-40, 0, 2.25],
"position": [0, 0.1, -0.25]
},
"jaw": {
"position": [0, 0, 0]
},
"left_arm": {
"rotation": [0, 0, 42.5]
},
"left_lower_arm": {
"rotation": [0, 40, 0]
},
"left_hand": {
"rotation": [0, 0, 22.5],
"position": [-0.35, 0, 0]
},
"right_thigh": {
"rotation": [-58.0984, 35.5329, 3.9636],
"position": [0, 0, -0.25]
},
"right_leg": {
"rotation": [100.2268, 0.2874, -2.6377],
"position": [0, 0, 0.25]
},
"right_foot": {
"rotation": [-40, 0, -2.25],
"position": [0, 0.1, -0.25]
},
"right_arm": {
"rotation": [0, 0, -42.5]
},
"right_lower_arm": {
"rotation": [0, -40, 0]
},
"right_hand": {
"rotation": [0, 0, -22.5],
"position": [0.35, 0, 0]
},
"tongue_long_base": {
"rotation": [-22.5, 0, 0]
},
"tongue_long_mid": {
"rotation": [32.5, 0, 0]
},
"tongue_long_mid_bend": {
"rotation": [27.5, 0, 0]
},
"tongue_long_end": {
"rotation": [-20, 0, 0]
},
"tongue_long_tip": {
"rotation": [-37.5, 0, 0]
},
"left_leg_correction": {
"position": [0, 1, 0]
},
"right_leg_correction": {
"position": [0, 1, 0]
}
}
},
"animation.politoed.test_walk": {
"loop": true,
"animation_length": 1,
"bones": {
"body": {
"position": [0, -0.5, 0]
},
"undefined": {
"rotation": [-30, 0, 0]
},
"torso": {
"rotation": ["-0+math.sin(q.anim_time*90*8-75)*3", "-0+math.sin(q.anim_time*90*4-240)*15", "0-math.sin(q.anim_time*90*4-240)*12.5"],
"position": [0, "0-math.sin(q.anim_time*90*8-75)*0.333", 0]
},
"legs": {
"position": [0, -0.6, 0]
},
"left_thigh": {
"rotation": {
"0.0": {
"post": [-45.8077, -17.7622, -4.8184],
"lerp_mode": "catmullrom"
},
"0.25": {
"post": [-22, -31, -12.5],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [10.3458, -11.4389, -7.9978],
"lerp_mode": "catmullrom"
},
"0.5833": {
"post": [11.7107, -12.7343, -7.9808],
"lerp_mode": "catmullrom"
},
"0.875": {
"post": [-71.94, -14.4638, -6.2564],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [-45.8077, -17.7622, -4.8184],
"lerp_mode": "catmullrom"
}
},
"position": {
"0.0": {
"post": [0, 0, -1.25],
"lerp_mode": "catmullrom"
},
"0.0833": {
"post": [0, 0.41, -1.06],
"lerp_mode": "catmullrom"
},
"0.25": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [0, -0.5, 2.5],
"lerp_mode": "catmullrom"
},
"0.7083": {
"post": [0, 1.5, 0],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [0, 0, -1.25],
"lerp_mode": "catmullrom"
}
}
},
"left_leg": {
"rotation": {
"0.0": {
"post": [11.153, -10.4048, 4.5735],
"lerp_mode": "catmullrom"
},
"0.25": {
"post": [72.5, -10, 5],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [64.434, -4.5354, 10.7584],
"lerp_mode": "catmullrom"
},
"0.5833": {
"post": [87.0283, -5.4462, 9.7987],
"lerp_mode": "catmullrom"
},
"0.7083": {
"post": [109.717, -7.2677, 7.8792],
"lerp_mode": "catmullrom"
},
"0.875": {
"post": [37.5, -10, 5],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [11.153, -10.4048, 4.5735],
"lerp_mode": "catmullrom"
}
}
},
"left_foot": {
"rotation": {
"0.0": {
"post": [4.441, -0.809, -3.8795],
"lerp_mode": "catmullrom"
},
"0.25": {
"post": [-43, 0, 2.75],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [-73.5885, -4.6063, 14.7348],
"lerp_mode": "catmullrom"
},
"0.625": {
"post": [-62.2404, -3.8386, 12.7373],
"lerp_mode": "catmullrom"
},
"0.7083": {
"post": [-57.0442, -2.3032, 8.7424],
"lerp_mode": "catmullrom"
},
"0.875": {
"post": [4.4957, 0.1961, 0.2577],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [4.441, -0.809, -3.8795],
"lerp_mode": "catmullrom"
}
},
"position": {
"0.0": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.25": {
"post": [0, 0.25, -0.25],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [0, 0.25, -1],
"lerp_mode": "catmullrom"
},
"0.7083": {
"post": [0, -0.12, -0.75],
"lerp_mode": "catmullrom"
},
"0.875": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
}
}
},
"left_toes": {
"rotation": {
"0.0": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5833": {
"post": [-34.9753, 1.3429, 2.1089],
"lerp_mode": "catmullrom"
},
"0.7083": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
}
}
},
"head": {
"rotation": ["-0+math.sin(q.anim_time*90*8-105)*1.5", "-0+math.sin(q.anim_time*90*4-90)*7.5", "0-math.sin(q.anim_time*90*4-90)*5"]
},
"left_arm": {
"rotation": [0, "10+math.sin(q.anim_time*90*4-60)*22.5", "45-math.sin(q.anim_time*90*4+90)*15"]
},
"left_lower_arm": {
"rotation": [0, "25+math.sin(q.anim_time*90*4-90)*10", 0]
},
"left_hand": {
"rotation": [0, "2.5+math.sin(q.anim_time*90*4-120)*5", "22.5-math.sin(q.anim_time*90*4+450)*10"],
"position": [-0.35, 0, 0]
},
"right_thigh": {
"rotation": {
"0.0": {
"post": [10.3458, 11.4389, 7.9978],
"lerp_mode": "catmullrom"
},
"0.0833": {
"post": [11.7107, 12.7343, 7.9808],
"lerp_mode": "catmullrom"
},
"0.375": {
"post": [-71.94, 14.4638, 6.2564],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [-45.8077, 17.7622, 4.8184],
"lerp_mode": "catmullrom"
},
"0.75": {
"post": [-22, 31, 12.5],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [10.3458, 11.4389, 7.9978],
"lerp_mode": "catmullrom"
}
},
"position": {
"0.0": {
"post": [0, -0.5, 2.5],
"lerp_mode": "catmullrom"
},
"0.2083": {
"post": [0, 1.5, 0],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [0, 0, -1.25],
"lerp_mode": "catmullrom"
},
"0.5833": {
"post": [0, 0.41, -1.06],
"lerp_mode": "catmullrom"
},
"0.75": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [0, -0.5, 2.5],
"lerp_mode": "catmullrom"
}
}
},
"right_leg": {
"rotation": {
"0.0": {
"post": [64.434, 4.5354, -10.7584],
"lerp_mode": "catmullrom"
},
"0.0833": {
"post": [87.0283, 5.4462, -9.7987],
"lerp_mode": "catmullrom"
},
"0.2083": {
"post": [109.717, 7.2677, -7.8792],
"lerp_mode": "catmullrom"
},
"0.375": {
"post": [37.5, 10, -5],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [11.153, 10.4048, -4.5735],
"lerp_mode": "catmullrom"
},
"0.75": {
"post": [72.5, 10, -5],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [64.434, 4.5354, -10.7584],
"lerp_mode": "catmullrom"
}
}
},
"right_foot": {
"rotation": {
"0.0": {
"post": [-73.5885, 4.6063, -14.7348],
"lerp_mode": "catmullrom"
},
"0.125": {
"post": [-62.2404, 3.8386, -12.7373],
"lerp_mode": "catmullrom"
},
"0.2083": {
"post": [-57.0442, 2.3032, -8.7424],
"lerp_mode": "catmullrom"
},
"0.375": {
"post": [4.4957, -0.1961, -0.2577],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [4.441, 0.809, 3.8795],
"lerp_mode": "catmullrom"
},
"0.75": {
"post": [-43, 0, -2.75],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [-73.5885, 4.6063, -14.7348],
"lerp_mode": "catmullrom"
}
},
"position": {
"0.0": {
"post": [0, 0.25, -1],
"lerp_mode": "catmullrom"
},
"0.2083": {
"post": [0, -0.12, -0.75],
"lerp_mode": "catmullrom"
},
"0.375": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.75": {
"post": [0, 0.25, -0.25],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [0, 0.25, -1],
"lerp_mode": "catmullrom"
}
}
},
"right_toes": {
"rotation": {
"0.0": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.0833": {
"post": [-34.9753, -1.3429, -2.1089],
"lerp_mode": "catmullrom"
},
"0.2083": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
}
}
},
"hair": {
"rotation": ["-0+math.sin(q.anim_time*90*8-135)*2.5", "-0+math.sin(q.anim_time*90*4-300)*10", "0-math.sin(q.anim_time*90*4-300)*5"]
},
"right_arm": {
"rotation": [0, "-10+math.sin(q.anim_time*90*4-60)*22.5", "-45-math.sin(q.anim_time*90*4+90)*15"]
},
"right_lower_arm": {
"rotation": [0, "-25+math.sin(q.anim_time*90*4-90)*10", 0]
},
"right_hand": {
"rotation": [0, "-2.5+math.sin(q.anim_time*90*4-120)*5", "-22.5-math.sin(q.anim_time*90*4+450)*10"],
"position": [0.35, 0, 0]
},
"tongue_long_base": {
"rotation": [-27.5, 0, 0]
},
"tongue_long_mid": {
"rotation": [32.5, 0, 0]
},
"tongue_long_mid_bend": {
"rotation": [27.5, 0, 0]
},
"tongue_long_end": {
"rotation": [-20, 0, 0]
},
"tongue_long_tip": {
"rotation": [-37.5, 0, 0]
},
"left_leg_correction": {
"position": {
"0.0": {
"post": [0, 0.1, 0],
"lerp_mode": "catmullrom"
},
"0.25": {
"post": [0, 1, 0],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [0, 1, 0],
"lerp_mode": "catmullrom"
},
"0.7083": {
"post": [0, 1, 0],
"lerp_mode": "catmullrom"
},
"0.875": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [0, 0.1, 0],
"lerp_mode": "catmullrom"
}
}
},
"right_leg_correction": {
"position": {
"0.0": {
"post": [0, 1, 0],
"lerp_mode": "catmullrom"
},
"0.2083": {
"post": [0, 1, 0],
"lerp_mode": "catmullrom"
},
"0.375": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [0, 0.1, 0],
"lerp_mode": "catmullrom"
},
"0.75": {
"post": [0, 1, 0],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [0, 1, 0],
"lerp_mode": "catmullrom"
}
}
}
}
},
"animation.politoed.pose": {
"loop": true,
"bones": {
"body": {
"rotation": [-15, 0, 0],
"position": [0, 2, -2]
},
"left_thigh": {
"rotation": [-109.8093, -19.9813, 14.4472],
"position": [0.25, -1, 0.25]
},
"left_leg": {
"rotation": [62.5, 0, 0]
},
"left_foot": {
"rotation": [-15, 2.5, 0]
},
"head": {
"rotation": [10, 0, 0],
"position": [0, 0, -0.25]
},
"left_arm": {
"rotation": [-52.5, 0, 0],
"position": [0, -0.75, 0.25]
},
"left_lower_arm": {
"rotation": [0, 45, 0]
},
"left_hand": {
"rotation": [0, 0, 17.5],
"position": [-0.2, 0, 0]
},
"right_thigh": {
"rotation": [-109.8093, 19.9813, -14.4472],
"position": [-0.25, -1, 0.25]
},
"right_leg": {
"rotation": [62.5, 0, 0]
},
"right_foot": {
"rotation": [-15, -2.5, 0]
},
"left_pupil": {
"position": [0, -0.5, 0]
},
"right_pupil": {
"position": [0, -0.5, 0]
},
"right_arm": {
"rotation": [-52.5, 0, 0],
"position": [0, -0.75, 0.25]
},
"right_lower_arm": {
"rotation": [0, -45, 0]
},
"right_hand": {
"rotation": [0, 0, -17.5],
"position": [0.2, 0, 0]
},
"tongue_long_base": {
"scale": 0
}
}
},
"animation.politoed.blink": {
"animation_length": 0.2083,
"bones": {
"left_eye": {
"position": {
"0.0": [-0.1, 0, 0.1],
"0.1667": {
"pre": [-0.1, 0, 0.1],
"post": [-0.1, 0, 0.1]
},
"0.2083": {
"pre": [-0.1, 0, 0.1],
"post": [0, 0, 0]
}
}
},
"right_eye": {
"position": {
"0.0": [0.1, 0, 0.1],
"0.1667": {
"pre": [0.1, 0, 0.1],
"post": [0.1, 0, 0.1]
},
"0.2083": {
"pre": [0.1, 0, 0.1],
"post": [0, 0, 0]
}
}
},
"left_eyelid": {
"position": {
"0.0": [0.1, 0, -0.1],
"0.1667": {
"pre": [0.1, 0, -0.1],
"post": [0.1, 0, -0.1]
},
"0.2083": {
"pre": [0.1, 0, -0.1],
"post": [0, 0, 0]
}
}
},
"right_eyelid": {
"position": {
"0.0": [-0.1, 0, -0.1],
"0.1667": {
"pre": [-0.1, 0, -0.1],
"post": [-0.1, 0, -0.1]
},
"0.2083": {
"pre": [-0.1, 0, -0.1],
"post": [0, 0, 0]
}
}
}
}
},
"animation.politoed.happy": {
"loop": true,
"bones": {
"jaw": {
"rotation": [30, 0, 0]
},
"left_pupil": {
"position": [0, 0, 0]
},
"left_eyelid_happy": {
"position": [0.1, 0, -0.1]
},
"right_eyelid_happy": {
"position": [-0.1, 0, -0.1]
}
}
},
"animation.politoed.sad": {
"loop": true,
"bones": {
"left_eyelid_sad": {
"position": [0.1, 0, 0]
},
"right_eyelid_sad": {
"position": [-0.1, 0, 0]
}
}
},
"animation.politoed.angry": {
"loop": true,
"bones": {
"left_eyelid_angry": {
"position": [0.1, 0, -0.1]
},
"right_eyelid_angry": {
"position": [-0.1, 0, -0.1]
}
}
},
"animation.politoed.shocked": {
"loop": true,
"bones": {
"jaw": {
"rotation": [30, 0, 0]
},
"left_pupil": {
"position": [-0.1, 0, 0.3]
},
"right_pupil": {
"position": [0.1, 0, 0.3]
},
"left_pupil_shocked": {
"position": [0.1, 0, 0]
},
"right_pupil_shocked": {
"position": [-0.1, 0, 0]
}
}
},
"animation.politoed.unamused": {
"loop": true,
"bones": {
"left_eyelid_unamused": {
"position": [0.1, 0, -0.1]
},
"right_eyelid_unamused": {
"position": [-0.1, 0, -0.1]
}
}
},
"animation.politoed.hurt": {
"loop": true,
"bones": {
"jaw": {
"rotation": [30, 0, 0]
},
"left_eyelid_hurt": {
"position": [0.1, 0, -0.1]
},
"right_eyelid_hurt": {
"position": [-0.1, 0, -0.1]
}
}
},
"animation.politoed.cry": {
"animation_length": 1.25,
"sound_effects": {
"0.04": {
"effect": "pokemon.politoed.cry"
}
}
}
@@ -62,7 +62,7 @@
"body": {
"rotation": [0, -7.5, 0]
},
"Eyebrow": {
"eyebrows": {
"rotation": [0, 0, 0]
}
}
@@ -240,7 +240,7 @@
"1.5": [0, 0, 0]
}
},
"Eyebrow": {
"eyebrows": {
"position": {
"0.0": [0, 0, 0],
"0.25": {
@@ -282,31 +282,31 @@
"skirt_back": {
"rotation": ["0-math.cos(q.anim_time*90*2-30)*5", 0, 0]
},
"eyelid_left": {
"eyelid_annoyed_right": {
"position": [0, 0, -0.1]
},
"eyelid_right": {
"position": [0, 0, -0.1]
},
"Eyebrow": {
"eyebrows": {
"position": [0, "0+math.sin(q.anim_time*90*2-30)*0.05", 0]
},
"hair": {
"rotation": ["12.5+math.cos(q.anim_time*90*2-30)*3", 0, 0]
},
"eyelid_annoyed_left": {
"position": [0, 0, -0.1]
}
}
},
"animation.shroomish.blink": {
"animation_length": 0.1667,
"bones": {
"eyelid_left": {
"eyelid_annoyed_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
},
"eyelid_right": {
"eyelid_annoyed_left": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
@@ -591,7 +591,7 @@
"2.5833": [1, 1, 1]
}
},
"Eyebrow": {
"eyebrows": {
"rotation": [0, 0, 0],
"position": {
"0.0": [0, 0, 0],
@@ -603,17 +603,7 @@
"2.25": [0, 0, 0]
}
},
"eyelid_left": {
"position": {
"0.0": [0, 0, 0],
"0.0833": [0, 0, -0.1],
"1.875": [0, 0, -0.1],
"1.9167": [0, 0, 0],
"2.1667": [0, 0, 0],
"2.2083": [0, 0, -0.1]
}
},
"eyelid_right": {
"eyelid_annoyed_right": {
"position": {
"0.0": [0, 0, 0],
"0.0833": [0, 0, -0.1],
@@ -636,6 +626,16 @@
"0.25": [0, 0, 0],
"0.2917": [0, 0, -0.1]
}
},
"eyelid_annoyed_left": {
"position": {
"0.0": [0, 0, 0],
"0.0833": [0, 0, -0.1],
"1.875": [0, 0, -0.1],
"1.9167": [0, 0, 0],
"2.1667": [0, 0, 0],
"2.2083": [0, 0, -0.1]
}
}
}
}
@@ -1,192 +1,286 @@
{
"format_version": "1.8.0",
"animations": {
"animation.absol.render": {
"loop": true,
"bones": {
"hips": {
"rotation": [-2.5, 0, 0]
},
"chest": {
"rotation": [12.5, 0, 0]
},
"tail": {
"rotation": [-8.01788, 32.61138, -0.66603]
},
"neck": {
"rotation": [15.34479, -13.10699, 9.18372]
},
"head": {
"rotation": [-25.32307, -13.66763, -4.61603]
},
"hair": {
"rotation": [0, 0, 45]
},
"hair2": {
"rotation": [1.95155, 7.24305, 27.62353]
},
"hair3": {
"rotation": [8.61775, 34.05444, 17.64371]
},
"neck_fur_right2": {
"rotation": [0, 0, -30]
},
"neck_fur_left2": {
"rotation": [0, 0, 40]
},
"neck_fur_back2": {
"rotation": [-45, 0, 0]
},
"chest_fur": {
"rotation": [-42.5, 0, 0]
},
"chest_fur_right": {
"rotation": [0, 35, 0]
},
"chest_fur_left": {
"rotation": [0, -25, 0]
},
"chest_fur_1": {
"rotation": [27.5, 0, 0]
},
"chest_fur_2": {
"rotation": [7.5, 0, 0]
},
"leg_back_left": {
"rotation": [21.9659, -13.44762, -0.11731]
},
"leg_back_left2": {
"rotation": [-10, 0, 0]
},
"leg_back_left3": {
"rotation": [5, 0, 0]
},
"foot__back_left": {
"rotation": [-14.82005, -12.39135, -1.6575]
},
"leg_front_left": {
"rotation": [-25.47479, -17.22575, 3.13388],
"position": [0, -0.25, 0]
},
"leg_front_left2": {
"rotation": [14.61364, 12.22219, 2.52829]
},
"foot_front_left": {
"rotation": [12.15846, -18.26883, -13.36473]
},
"eyes_open": {
"position": [0, 0, 0]
},
"eyes_happy": {
"position": [0, 0, 0]
},
"eyes_closed": {
"position": [0, 0, 0]
},
"eyes_halfclosed": {
"position": [0, 0, 0]
},
"leg_back_right": {
"rotation": [0, -22.5, 0],
"position": [-0.11888, 0, -1.67283]
},
"foot_back_right": {
"rotation": [0, 15, 0]
},
"waist": {
"rotation": [0, -20, 0]
},
"leg_front_right": {
"rotation": [12.5, 0, 0]
},
"leg_front_right2": {
"rotation": [0, 0, -10]
},
"foot_front_right": {
"rotation": [-12.07362, 14.63639, 13.31914]
}
}
},
"animation.absol.ground_idle": {
"loop": true,
"bones": {
"neck": {
"rotation": [20, 0, 0]
"rotation": [30, 0, 0]
},
"head": {
"rotation": [-17.5, 0, 0]
},
"hair": {
"rotation": [0, 0, 47]
"rotation": [0, 0, -2.5]
},
"hair2": {
"rotation": [0, 8.5, 38]
"rotation": [2.5, 10, 0]
},
"hair3": {
"rotation": [9.69368, 25.60466, 13.24197]
"rotation": [1.9544, 7.5589, 12.4168]
},
"neck_fur_right2": {
"rotation": [0, 0, -30]
"neck_fluff_left": {
"rotation": [0, 0, 67.5]
},
"neck_fur_left2": {
"rotation": [0, 0, 40]
},
"neck_fur_back2": {
"neck_fluff_back": {
"rotation": [-45, 0, 0]
},
"chest_fur": {
"rotation": [-30, 0, 0]
"chest_fluff": {
"rotation": [-12.5, 0, 0]
},
"chest_fur_right": {
"rotation": [0, 35, 0]
"chest_fluff_right": {
"rotation": [0, 37.5, 0]
},
"chest_fur_left": {
"rotation": [0, -25, 0]
"chest_fluff_left": {
"rotation": [0, -37.5, 0]
},
"chest_fur_1": {
"rotation": [27.5, 0, 0]
"chest_fluff2": {
"rotation": [-7.5, 0, 0]
},
"chest_fur_2": {
"chest_fluff3": {
"rotation": [7.5, 0, 0]
},
"tail": {
"rotation": [-22.5, 0, 0]
}
}
},
"animation.absol.cry": {
"animation_length": 2,
"bones": {
"mouth": {
"position": {
"0.0": [0, 0, 0.17],
"0.25": {"pre": [0, 0, 0.17], "post": [0, 0, -1]},
"1.7917": {"pre": [0, 0, -1], "post": [0, 0, 0.17]}
}
}
},
"sound_effects": {
"0.04": {
"effect": "pokemon.absol.cry"
"rotation": [10, 0, 0]
},
"neck_fluff_right": {
"rotation": [0, 0, -67.5]
},
"torso": {
"rotation": [2.5, 0, 0]
},
"torso2": {
"rotation": [-5, 0, 0]
},
"head_angle": {
"rotation": [-5, 0, 0]
},
"leg_front_left": {
"rotation": [-4.9083, 1.8509, 2.416]
},
"leg_back_left": {
"rotation": [0, -10, 0]
},
"leg_back_left2": {
"rotation": [5, 0, 0]
},
"leg_back_left3": {
"rotation": [10, 0, 0]
},
"foot_back_left": {
"rotation": [-13.9904, -4.9952, -0.2186]
},
"foot_front_left": {
"rotation": [4.991, -1.4949, -3.2033]
},
"neck_fluff_back2": {
"rotation": [-50, 0, 0]
},
"leg_front_right": {
"rotation": [2.585, -1.6431, -2.3501]
},
"leg_front_right2": {
"rotation": [2.5, 0, 0]
},
"foot_front_right": {
"rotation": [-4.9201, 6.845, 3.7466]
},
"leg_back_right": {
"rotation": [0, 10, 0]
},
"leg_back_right2": {
"rotation": [5, 0, 0]
},
"leg_back_right3": {
"rotation": [10, 0, 0]
},
"foot_back_right": {
"rotation": [-13.9904, 4.9952, 0.2186]
}
}
},
"animation.absol.blink": {
"animation_length": 0.1667,
"bones": {
"eyes_open": {
"eye_left": {
"position": {
"0.0": [0, 0, 1],
"0.125": {"pre": [0, 0, 1], "post": [0, 0, 1]},
"0.1667": {"pre": [0, 0, 1], "post": [0, 0, 0]}
"0.0": [-0.1, 0, 0.1],
"0.1667": {"pre": [-0.1, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_closed": {
"eye_right": {
"position": {
"0.0": [0, 0, -1],
"0.125": {"pre": [0, 0, -1], "post": [0, 0, -1]},
"0.1667": {"pre": [0, 0, -1], "post": [0, 0, 0]}
"0.0": [0.1, 0, 0.1],
"0.1667": {"pre": [0.1, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [-0.1, 0, -0.1],
"0.1667": {"pre": [-0.1, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyelid_left": {
"position": {
"0.0": [0.1, 0, -0.1],
"0.1667": {"pre": [0.1, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
},
"animation.absol.ditto_face": {
"loop": true,
"bones": {
"face": {
"position": [0, 0, 0.1],
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
},
"animation.absol.pose": {
"loop": true,
"bones": {
"neck": {
"rotation": [30.3812, -8.6492, -5.0384]
},
"head": {
"rotation": [-17.5, 0, 0]
},
"hair": {
"rotation": [0, 0, -2.5]
},
"hair2": {
"rotation": [2.5, 10, 0]
},
"hair3": {
"rotation": [1.9544, 7.5589, 12.4168]
},
"neck_fluff_left": {
"rotation": [0, 0, 67.5]
},
"neck_fluff_back": {
"rotation": [-45, 0, 0]
},
"chest_fluff": {
"rotation": [-17.5, 0, 0]
},
"chest_fluff_right": {
"rotation": [0, 37.5, 0]
},
"chest_fluff_left": {
"rotation": [0, -37.5, 0]
},
"chest_fluff2": {
"rotation": [-5, 0, 0]
},
"chest_fluff3": {
"rotation": [7.5, 0, 0]
},
"tail": {
"rotation": [-2.2793, -9.656, -2.6129]
},
"horn": {
"rotation": [0, -10, 0]
},
"neck_fluff_right": {
"rotation": [0, 0, -52.5]
},
"body": {
"rotation": [0, 65, 0],
"position": [2, -0.55, 0]
},
"torso": {
"rotation": [9.9864, 0.6469, -2.4149]
},
"torso2": {
"rotation": [-5, 0, 0]
},
"head_angle": {
"rotation": [-5.7686, -29.8743, 2.8806]
},
"leg_front_left": {
"rotation": [16.5711, -9.4592, -13.6836],
"position": [0.75, -2, 0]
},
"leg_front_left2": {
"rotation": [-45, 0, 0]
},
"leg_back_left": {
"rotation": [14.2119, -9.413, -10.1281]
},
"leg_back_left2": {
"rotation": [-2.5, 0, 0]
},
"leg_back_left3": {
"rotation": [17.5, 0, 0]
},
"foot_back_left": {
"rotation": [-27.3943, 4.3233, 8.0916]
},
"iris_left": {
"position": [1, 0, 0]
},
"foot_front_left": {
"rotation": [41.9868, -4.2611, 0.0665],
"position": [0, 0, -0.75]
},
"claw_middle_front_left": {
"rotation": [7.5, 0, 0]
},
"claw_outer_front_left": {
"rotation": [7.5, 0, 0]
},
"claw_inner_front_left": {
"rotation": [7.5, 0, 0]
},
"neck_fluff_back2": {
"rotation": [-50, 0, 0]
},
"leg_front_right": {
"rotation": [-37.5352, -0.064, 9.7291],
"position": [-0.25, -1.75, 0]
},
"leg_front_right2": {
"rotation": [3.5, 0, 0]
},
"foot_front_right": {
"rotation": [34.0275, 7.3656, -7.2548],
"position": [0, 0.3, 0]
},
"leg_back_right": {
"rotation": [-18.2881, 9.413, 10.1281],
"position": [-0.25, 0, 0]
},
"leg_back_right2": {
"rotation": [16.5248, 0.124, 0.1823]
},
"leg_back_right3": {
"rotation": [6, 0, 0]
},
"foot_back_right": {
"rotation": [-2.4124, 5.5284, -9.8095]
}
}
},
"animation.absol.cry": {
"sound_effects": {
"0.04": {
"effect": "pokemon.absol.cry"
}
}
}
@@ -1,67 +1,6 @@
{
"format_version": "1.8.0",
"animations": {
"animation.shinx.new": {
"loop": true,
"bones": {
"waist": {
"rotation": [-32.5, 0, 0]
},
"tail_1": {
"rotation": [-9.00717, 20.70481, 65.85133]
},
"tail_2": {
"rotation": [67.5, 0, 0]
},
"tail_3": {
"rotation": [45, 45, 0]
},
"head": {
"rotation": [-4.11405, -22.13991, 10.80524]
},
"eye_left": {
"position": [0, 0, 1]
},
"eyelid_right2": {
"position": [0, 0, -3]
},
"ear_left": {
"rotation": [0, 0, 12.5]
},
"ear_right": {
"rotation": [0, 0, -12.5]
},
"fluff": {
"rotation": [0, 0, 20]
},
"open_mouth": {
"position": [0, 0, -2]
},
"closed_mouth": {
"position": [0, 0, 1]
},
"back_leg_right": {
"rotation": [-40.08019, 31.37238, 1.3824],
"position": [0, -1.5, -1]
},
"knee_right": {
"rotation": [45, 0, 0]
},
"front_foot_right": {
"rotation": [0, -5, 0]
},
"back_leg_left": {
"rotation": [-40.08019, -31.37238, -1.3824],
"position": [0, -1.5, -1]
},
"knee_left": {
"rotation": [45, 0, 0]
},
"front_foot_left": {
"rotation": [0, 5, 0]
}
}
},
"animation.shinx.ground_idle": {
"loop": true,
"bones": {
@@ -75,6 +14,71 @@
"tail_3": {
"rotation": [-37.5, 0, 0],
"position": [0, 0.1, -0.3]
},
"leg_front_right": {
"rotation": [0, 2.5, 0]
},
"leg_front_left": {
"rotation": [0, -2.5, 0]
},
"leg_back_right": {
"rotation": [0, 7.5, 2.5]
},
"leg_back_left": {
"rotation": [0, -7.5, 0]
}
}
},
"animation.shinx.blink": {
"animation_length": 0.1667,
"bones": {
"eye_right": {
"position": {
"0.0": [0.1, 0, 0.1],
"0.1667": {"pre": [0.1, 0, 0.1], "post": [0, 0, 0]}
}
},
"eye_left": {
"position": {
"0.0": [-0.1, 0, 0.1],
"0.1667": {"pre": [-0.1, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [-0.1, 0, -0.1],
"0.1667": {"pre": [-0.1, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyelid_left": {
"position": {
"0.0": [0.1, 0, -0.1],
"0.1667": {"pre": [0.1, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
},
"animation.shinx.ditto_face": {
"loop": true,
"bones": {
"face": {
"position": [0, 0, 0.1],
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
}
@@ -1,133 +1,94 @@
{
"format_version": "1.8.0",
"animations": {
"animation.luxio.idle": {
"animation.luxio.ground_idle": {
"loop": true,
"bones": {
"ear_right": {
"rotation": [0, 0, -22.5]
},
"ear_left": {
"rotation": [0, 0, 22.5]
},
"cheek_fluff_left": {
"rotation": [0, 0, 22.5]
},
"cheek_fluff_right": {
"rotation": [0, 0, -22.5]
},
"tail": {
"rotation": [37.5, 0, 0]
"rotation": [35, 0, 0]
},
"tail_2": {
"rotation": [-17.5, 0, 0]
"tail2": {
"rotation": [-30, 0, 0]
},
"tail_3": {
"rotation": [-32.5, 0, 0]
"tail3": {
"rotation": [-30, 0, 0]
},
"tail_4": {
"rotation": [-32.5, 0, 0]
"tail4": {
"rotation": [-25, 0, 0]
},
"tail_fluff_top": {
"rotation": [5, 0, 0]
},
"leg_back_right": {
"rotation": [0, 7.5, 5]
},
"foot_back_right2": {
"rotation": [0, 0, -5]
},
"leg_back_left": {
"rotation": [0, -7.5, -5]
},
"foot_back_left2": {
"rotation": [0, 0, 5]
},
"leg_front_right": {
"rotation": [0, 5, 0]
},
"leg_front_left": {
"rotation": [0, -5, 0]
}
}
},
"animation.luxio.sleep": {
"loop": true,
"animation.luxio.blink": {
"animation_length": 0.1667,
"bones": {
"body": {
"position": [0, -4, 0]
"eye_right": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"back_leg_right": {
"rotation": [-90, 45, 0],
"position": [4, 1, 1]
},
"knee_right": {
"rotation": [90, 0, 0],
"position": [0, 1, 1]
},
"back_paw_right": {
"position": [0, 1, 0]
},
"back_leg_left": {
"rotation": [-90, 45, 0],
"position": [4, 1, -3]
},
"knee_left": {
"rotation": [90, 0, 0],
"position": [0, 1, 1]
},
"back_paw_left": {
"position": [0, 1, 0]
},
"front_leg_right": {
"rotation": [-45, 0, 0]
},
"elbow_right": {
"rotation": [-42.73421, -15.69986, -16.32495]
},
"front_paw_right": {
"rotation": [90, 0, 0]
},
"front_leg_left": {
"rotation": [-47.41981, -31.37238, 1.3824]
},
"elbow_left": {
"rotation": [-42.73421, 15.69986, 16.32495]
},
"front_paw_left": {
"rotation": [90, 0, 0]
},
"head": {
"rotation": [-7.5, -22.5, 0],
"position": [0, -1.25, -1.25]
},
"waist": {
"rotation": [0, 45, 0]
},
"tail": {
"rotation": [-22.5, 22.5, 0],
"position": [0, -0.75, 0]
},
"tail_2": {
"rotation": [0, 67.5, 0]
},
"tail_3": {
"rotation": [7.86119, 40.78947, 20.94102]
},
"tail_4": {
"rotation": [0, 22.5, 0]
},
"tail_5": {
"rotation": [22.5, 0, 0]
},
"neck": {
"rotation": [22.5, 0, 0]
},
"ear_right": {
"rotation": [0, 0, -22.5]
},
"ear_left": {
"rotation": [0, 0, 22.5]
},
"head_fluff_top": {
"rotation": [0, 0, -45]
},
"eyelid_l": {
"position": [0, 0, -3]
},
"eyelid_r": {
"position": [0, 0, -2]
},
"cheek_fluff_left": {
"rotation": [0, 22.5, 22.5]
},
"cheek_fluff_right": {
"rotation": [22.5, 0, -22.5]
"eyelid_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eye_left": {
"position": [0, 0, 1]
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eye_right": {
"position": [0, 0, 1]
"eyelid_left": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
},
"animation.luxio.ditto_face": {
"loop": true,
"bones": {
"face": {
"position": [0, 0, 0.1],
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
}
@@ -1,161 +1,103 @@
{
"format_version": "1.8.0",
"animations": {
"animation.luxray.new": {
"loop": true,
"bones": {
"body": {
"rotation": [22.5, 0, 0],
"position": [0, -2, 0]
},
"torso": {
"rotation": [-22.5, 0, 0]
},
"waist": {
"rotation": [24.14867, -20.70481, -9.00717]
},
"hips": {
"rotation": [-22.81179, 9.23186, -3.86032]
},
"tail_1": {
"rotation": [49.98844, 27.36694, 17.18133]
},
"tail_2": {
"rotation": [-22.5, 22.5, 0]
},
"tail_3": {
"rotation": [-53.52293, 35.66466, -17.31806]
},
"tail_4": {
"rotation": [45, 45, 0]
},
"tail_5": {
"rotation": [45, 45, 0]
},
"tail_6": {
"rotation": [0, 22.5, 0]
},
"neck": {
"rotation": [62.26579, -15.69986, -16.32495],
"position": [0, -1, 0]
},
"head": {
"rotation": [-48.75474, -3.08149, 16.32258],
"position": [0, -0.75, 0]
},
"mouth": {
"rotation": [55, 0, 0]
},
"head_fluff_center_2": {
"rotation": [0, 0, 22.5]
},
"head_fluff_center_3": {
"rotation": [0, 22.5, 0]
},
"head_fluff_top_right": {
"rotation": [0, 22.5, 0]
},
"head_fluff_top_2_right": {
"rotation": [0, 22.5, 0]
},
"head_fluff_top_left": {
"rotation": [0, 0, 0]
},
"head_fluff_top_2_left": {
"rotation": [0, 22.5, 0]
},
"head_fluff_bottom_right": {
"rotation": [0, 22.5, 0]
},
"head_fluff_bottom_left": {
"rotation": [0, 22.5, 0]
},
"head_fluff_bottom_2_left": {
"rotation": [0, 22.5, 0]
},
"ear_right": {
"rotation": [0, 0, -17.5]
},
"ear_left": {
"rotation": [0, 0, 17.5]
},
"front_leg_right": {
"rotation": [-44.56145, 7.05302, 7.10708],
"position": [0, -0.31732, -0.92388]
},
"elbow_right": {
"rotation": [-42.73421, -15.69986, -16.32495]
},
"front_foot_right": {
"rotation": [67.5, 0, 0]
},
"front_leg_left": {
"rotation": [22.5, 0, 0],
"position": [1.25, 1, 0]
},
"elbow_left": {
"rotation": [-47.26579, -15.69986, 16.32495],
"position": [-0.5, 0, 0]
},
"front_foot_left": {
"rotation": [0, 10, 0]
},
"back_leg_right": {
"rotation": [-46.64867, -20.70481, 9.00717],
"position": [-5, -2.38896, -2.07193]
},
"knee_right": {
"rotation": [67.5, 0, 0],
"position": [0.76537, 0.33755, 1.86018]
},
"leg_right": {
"rotation": [10, 0, 0]
},
"back_foot_right": {
"rotation": [-57.5, 0, 0]
},
"back_leg_left": {
"rotation": [-19.83264, -18.43795, -6.24926]
},
"knee_left": {
"rotation": [0, 0, 12.5]
},
"leg_left": {
"rotation": [7.5, 0, 0]
},
"back_foot_left": {
"rotation": [-7.5, 0, 0]
}
}
},
"animation.luxray.ground_idle": {
"loop": true,
"bones": {
"tail_1": {
"rotation": [43, 0, 0]
"tail": {
"rotation": [30, 0, 0]
},
"tail_2": {
"rotation": [22.5, 0, 0],
"position": [0, 0, -0.2]
"tail2": {
"rotation": [25, 0, 0]
},
"tail_3": {
"rotation": [-45, 0, 0],
"position": [0, 0.1, -0.3]
"tail3": {
"rotation": [-45, 0, 0]
},
"tail_4": {
"rotation": [-52.68932, -2.64422, -1.88999],
"position": [0, 0.2, -0.4]
"tail4": {
"rotation": [-45, 0, 0]
},
"tail_5": {
"rotation": [-30, 0, 0],
"position": [0, 0.1, -0.2]
"tail5": {
"rotation": [-35, 0, 0]
},
"tail_6": {
"rotation": [20, 0, 0],
"position": [0, 0, -0.1]
},
"tail_fluff": {
"tail_fluff_top": {
"rotation": [5, 0, 0]
},
"tail6": {
"rotation": [35, 0, 0]
},
"tail7": {
"rotation": [20, 0, 0]
},
"leg_front_left": {
"rotation": [0, 0, 0]
},
"leg_front_right": {
"rotation": [0, 5, 0]
},
"leg_back_left": {
"rotation": [0, -7.5, -2.5]
},
"foot_back_left2": {
"rotation": [0, 0, 2.5]
},
"leg_back_right": {
"rotation": [0, 7.5, 2.5]
},
"foot_back_right2": {
"rotation": [0, 0, -2.5]
}
}
},
"animation.luxray.blink": {
"animation_length": 0.1667,
"bones": {
"eye_left": {
"position": {
"0.0": [-0.1, 0, 0.1],
"0.1667": {"pre": [-0.1, 0, 0.1], "post": [0, 0, 0]}
}
},
"eye_right": {
"position": {
"0.0": [0.1, 0, 0.1],
"0.1667": {"pre": [0.1, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyelid_left": {
"position": {
"0.0": [0.1, 0, -0.1],
"0.1667": {"pre": [0.1, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [-0.1, 0, -0.1],
"0.1667": {"pre": [-0.1, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
},
"animation.luxray.ditto_face": {
"loop": true,
"bones": {
"face": {
"position": [0, 0, 0.1],
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
}
@@ -0,0 +1,208 @@
{
"format_version": "1.8.0",
"animations": {
"animation.burmy_plant.ground_idle": {
"loop": true,
"bones": {
"body": {
"rotation": [2.5201, 0.3141, 0.0322],
"position": [0, 6, 0]
},
"body_rotation": {
"rotation": [2.5, 0, 0]
},
"spring2": {
"rotation": [-2.5, 0, 0]
},
"segment1": {
"position": [0, 0.5, 0]
},
"leg_left1": {
"rotation": [0, 15, 0]
},
"leg_right1": {
"rotation": [0, -15, 0]
},
"segment2": {
"position": [0, 0.5, 0]
},
"segment3": {
"position": [0, 0.5, 0]
},
"leg_left2": {
"rotation": [0, 17.5, 0]
},
"leg_left3": {
"rotation": [0, 25, 0]
},
"leg_right2": {
"rotation": [0, -17.5, 0]
},
"leg_right3": {
"rotation": [0, -25, 0]
}
}
},
"animation.burmy_plant.ground_idle_naked": {
"loop": true,
"bones": {
"body_rotation": {
"rotation": [7.5, 0, 0],
"position": [0, 0, -3]
},
"segment1": {
"rotation": [75, 0, 0]
},
"leg_left1": {
"rotation": [0.00002, 0.00005, 0.00002]
},
"cloak_plant": {
"scale": 0
},
"body": {
"rotation": [2.5, 0, 0],
"position": [0, -7.25, 0]
},
"leg_right1": {
"rotation": [0.00002, -0.00005, -0.00002]
},
"segment2": {
"rotation": [5, 0, 0]
},
"segment3": {
"rotation": [2.5781, -0.5734, 0.2485]
},
"leg_left2": {
"rotation": [2.53742, -4.92385, -0.87038]
},
"leg_left3": {
"rotation": [7.53742, -4.92385, -0.87038]
},
"leg_right2": {
"rotation": [2.53742, 4.92385, 0.87038]
},
"leg_right3": {
"rotation": [7.53742, 4.92385, 0.87038]
},
"face": {
"position": [0, 0, 1]
},
"cloaked_face": {
"scale": 0
},
"face_ditto": {
"position": [0, 0, 1]
}
}
},
"animation.burmy_plant.spring": {
"loop": true,
"bones": {
"body": {
"rotation": [2.5201, 0.3141, 0.0322],
"position": [0, 6, 0]
},
"body_rotation": {
"rotation": [2.5, 0, 0],
"position": [0, -3, 0]
},
"spring2": {
"rotation": [35.9366, -29.087, 32.6804]
},
"segment1": {
"position": [0, 0.5, 0]
},
"leg_left1": {
"rotation": [0, 15, 0]
},
"spring": {
"rotation": [-26.941, -5.7358, -11.1249]
},
"spring3": {
"rotation": [-24.3803, 6.6782, -46.9093]
},
"spring4": {
"rotation": [0, 0, -35]
},
"leg_right1": {
"rotation": [0, -15, 0]
},
"segment2": {
"position": [0, 0.5, 0]
},
"segment3": {
"position": [0, 0.5, 0]
},
"leg_left2": {
"rotation": [0, 17.5, 0]
},
"leg_left3": {
"rotation": [0, 25, 0]
},
"leg_right2": {
"rotation": [0, -17.5, 0]
},
"leg_right3": {
"rotation": [0, -25, 0]
}
}
},
"animation.burmy_plant.ditto_face": {
"loop": true,
"bones": {
"face": {
"position": [0, 0, 0.1],
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
},
"animation.burmy_plant.blink": {
"animation_length": 0.1667,
"bones": {
"pupil_left": {
"position": {
"0.0": [0, 0, 0.1],
"0.125": {"pre": [0, 0, 0.1], "post": [0, 0, 0.1]},
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"pupil_closed_left": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"pupil_right": {
"position": {
"0.0": [0, 0, 0.1],
"0.125": {"pre": [0, 0, 0.1], "post": [0, 0, 0.1]},
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"pupil_closed_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
}
}
}
@@ -0,0 +1,208 @@
{
"format_version": "1.8.0",
"animations": {
"animation.burmy_sandy.ground_idle": {
"loop": true,
"bones": {
"body": {
"rotation": [2.5201, 0.3141, 0.0322],
"position": [0, 6, 0]
},
"body_rotation": {
"rotation": [2.5, 0, 0]
},
"spring2": {
"rotation": [-2.5, 0, 0]
},
"segment1": {
"position": [0, 0.5, 0]
},
"leg_left1": {
"rotation": [0, 15, 0]
},
"leg_right1": {
"rotation": [0, -15, 0]
},
"segment2": {
"position": [0, 0.5, 0]
},
"segment3": {
"position": [0, 0.5, 0]
},
"leg_left2": {
"rotation": [0, 17.5, 0]
},
"leg_left3": {
"rotation": [0, 25, 0]
},
"leg_right2": {
"rotation": [0, -17.5, 0]
},
"leg_right3": {
"rotation": [0, -25, 0]
}
}
},
"animation.burmy_sandy.ground_idle_naked": {
"loop": true,
"bones": {
"body_rotation": {
"rotation": [7.5, 0, 0],
"position": [0, 0, -3]
},
"segment1": {
"rotation": [75, 0, 0]
},
"leg_left1": {
"rotation": [0.00002, 0.00005, 0.00002]
},
"cloak_plant": {
"scale": 0
},
"body": {
"rotation": [2.5, 0, 0],
"position": [0, -7.25, 0]
},
"leg_right1": {
"rotation": [0.00002, -0.00005, -0.00002]
},
"segment2": {
"rotation": [5, 0, 0]
},
"segment3": {
"rotation": [2.5781, -0.5734, 0.2485]
},
"leg_left2": {
"rotation": [2.53742, -4.92385, -0.87038]
},
"leg_left3": {
"rotation": [7.53742, -4.92385, -0.87038]
},
"leg_right2": {
"rotation": [2.53742, 4.92385, 0.87038]
},
"leg_right3": {
"rotation": [7.53742, 4.92385, 0.87038]
},
"face": {
"position": [0, 0, 1]
},
"cloaked_face": {
"scale": 0
},
"face_ditto": {
"position": [0, 0, 1]
}
}
},
"animation.burmy_sandy.spring": {
"loop": true,
"bones": {
"body": {
"rotation": [2.5201, 0.3141, 0.0322],
"position": [0, 6, 0]
},
"body_rotation": {
"rotation": [2.5, 0, 0],
"position": [0, -3, 0]
},
"spring2": {
"rotation": [35.9366, -29.087, 32.6804]
},
"segment1": {
"position": [0, 0.5, 0]
},
"leg_left1": {
"rotation": [0, 15, 0]
},
"spring": {
"rotation": [-26.941, -5.7358, -11.1249]
},
"spring3": {
"rotation": [-24.3803, 6.6782, -46.9093]
},
"spring4": {
"rotation": [0, 0, -35]
},
"leg_right1": {
"rotation": [0, -15, 0]
},
"segment2": {
"position": [0, 0.5, 0]
},
"segment3": {
"position": [0, 0.5, 0]
},
"leg_left2": {
"rotation": [0, 17.5, 0]
},
"leg_left3": {
"rotation": [0, 25, 0]
},
"leg_right2": {
"rotation": [0, -17.5, 0]
},
"leg_right3": {
"rotation": [0, -25, 0]
}
}
},
"animation.burmy_sandy.ditto_face": {
"loop": true,
"bones": {
"face": {
"position": [0, 0, 0.1],
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
},
"animation.burmy_sandy.blink": {
"animation_length": 0.1667,
"bones": {
"pupil_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]}
}
},
"pupil_closed_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]}
}
},
"pupil_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]}
}
},
"pupil_closed_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]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
}
}
}
@@ -0,0 +1,208 @@
{
"format_version": "1.8.0",
"animations": {
"animation.burmy_trash.ground_idle": {
"loop": true,
"bones": {
"body": {
"rotation": [2.5201, 0.3141, 0.0322],
"position": [0, 6, 0]
},
"body_rotation": {
"rotation": [2.5, 0, 0]
},
"spring2": {
"rotation": [-2.5, 0, 0]
},
"segment1": {
"position": [0, 0.5, 0]
},
"leg_left1": {
"rotation": [0, 15, 0]
},
"leg_right1": {
"rotation": [0, -15, 0]
},
"segment2": {
"position": [0, 0.5, 0]
},
"segment3": {
"position": [0, 0.5, 0]
},
"leg_left2": {
"rotation": [0, 17.5, 0]
},
"leg_left3": {
"rotation": [0, 25, 0]
},
"leg_right2": {
"rotation": [0, -17.5, 0]
},
"leg_right3": {
"rotation": [0, -25, 0]
}
}
},
"animation.burmy_trash.ground_idle_naked": {
"loop": true,
"bones": {
"body_rotation": {
"rotation": [7.5, 0, 0],
"position": [0, 0, -3]
},
"segment1": {
"rotation": [75, 0, 0]
},
"leg_left1": {
"rotation": [0.00002, 0.00005, 0.00002]
},
"cloak_plant": {
"scale": 0
},
"body": {
"rotation": [2.5, 0, 0],
"position": [0, -7.25, 0]
},
"leg_right1": {
"rotation": [0.00002, -0.00005, -0.00002]
},
"segment2": {
"rotation": [5, 0, 0]
},
"segment3": {
"rotation": [2.5781, -0.5734, 0.2485]
},
"leg_left2": {
"rotation": [2.53742, -4.92385, -0.87038]
},
"leg_left3": {
"rotation": [7.53742, -4.92385, -0.87038]
},
"leg_right2": {
"rotation": [2.53742, 4.92385, 0.87038]
},
"leg_right3": {
"rotation": [7.53742, 4.92385, 0.87038]
},
"face": {
"position": [0, 0, 1]
},
"cloaked_face": {
"scale": 0
},
"face_ditto": {
"position": [0, 0, 1]
}
}
},
"animation.burmy_trash.spring": {
"loop": true,
"bones": {
"body": {
"rotation": [2.5201, 0.3141, 0.0322],
"position": [0, 6, 0]
},
"body_rotation": {
"rotation": [2.5, 0, 0],
"position": [0, -3, 0]
},
"spring2": {
"rotation": [35.9366, -29.087, 32.6804]
},
"segment1": {
"position": [0, 0.5, 0]
},
"leg_left1": {
"rotation": [0, 15, 0]
},
"spring": {
"rotation": [-26.941, -5.7358, -11.1249]
},
"spring3": {
"rotation": [-24.3803, 6.6782, -46.9093]
},
"spring4": {
"rotation": [0, 0, -35]
},
"leg_right1": {
"rotation": [0, -15, 0]
},
"segment2": {
"position": [0, 0.5, 0]
},
"segment3": {
"position": [0, 0.5, 0]
},
"leg_left2": {
"rotation": [0, 17.5, 0]
},
"leg_left3": {
"rotation": [0, 25, 0]
},
"leg_right2": {
"rotation": [0, -17.5, 0]
},
"leg_right3": {
"rotation": [0, -25, 0]
}
}
},
"animation.burmy_trash.ditto_face": {
"loop": true,
"bones": {
"face": {
"position": [0, 0, 0.1],
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
},
"animation.burmy_trash.blink": {
"animation_length": 0.1667,
"bones": {
"pupil_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]}
}
},
"pupil_closed_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]}
}
},
"pupil_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]}
}
},
"pupil_closed_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]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
}
}
}
@@ -0,0 +1,107 @@
{
"format_version": "1.8.0",
"animations": {
"animation.wormadam_plant.ground_idle": {
"loop": true,
"bones": {
"body": {
"rotation": [5, 0, 0],
"position": [0, 6, 0]
},
"body_rotation": {
"rotation": [0, 0, 0]
},
"antenna": {
"rotation": [-2.5, 0, 0]
},
"ear_left": {
"rotation": [0, -12.5, 0]
},
"ear_left2": {
"rotation": [0, 0, 20]
},
"ear_left3": {
"rotation": [0, 0, 22.5]
},
"ear_back_left": {
"rotation": [-7.5, 0, 25]
},
"ear_left4": {
"rotation": [0, 0, 17.5]
},
"ear_right": {
"rotation": [0, 12.5, 0]
},
"ear_right2": {
"rotation": [0, 0, -20]
},
"ear_right3": {
"rotation": [0, 0, -22.5]
},
"ear_right4": {
"rotation": [0, 0, -17.5]
},
"ear_back_right": {
"rotation": [-7.5, 0, -25]
}
}
},
"animation.wormadam_plant.blink": {
"animation_length": 0.1667,
"bones": {
"pupil_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]}
}
},
"pupil_closed_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]}
}
},
"pupil_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]}
}
},
"pupil_closed_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]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
},
"animation.wormadam_plant.ditto_face": {
"loop": true,
"bones": {
"face": {
"position": [0, 0, 0.1],
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
}
}
}
@@ -0,0 +1,107 @@
{
"format_version": "1.8.0",
"animations": {
"animation.wormadam_sandy.ground_idle": {
"loop": true,
"bones": {
"body": {
"rotation": [5, 0, 0],
"position": [0, 6, 0]
},
"body_rotation": {
"rotation": [0, 0, 0]
},
"antenna": {
"rotation": [-2.5, 0, 0]
},
"ear_left": {
"rotation": [0, -12.5, 0]
},
"ear_left2": {
"rotation": [0, 0, 20]
},
"ear_left3": {
"rotation": [0, 0, 22.5]
},
"ear_back_left": {
"rotation": [-7.5, 0, 25]
},
"ear_left4": {
"rotation": [0, 0, 17.5]
},
"ear_right": {
"rotation": [0, 12.5, 0]
},
"ear_right2": {
"rotation": [0, 0, -20]
},
"ear_right3": {
"rotation": [0, 0, -22.5]
},
"ear_right4": {
"rotation": [0, 0, -17.5]
},
"ear_back_right": {
"rotation": [-7.5, 0, -25]
}
}
},
"animation.wormadam_sandy.blink": {
"animation_length": 0.1667,
"bones": {
"pupil_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]}
}
},
"pupil_closed_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]}
}
},
"pupil_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]}
}
},
"pupil_closed_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]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
},
"animation.wormadam_sandy.ditto_face": {
"loop": true,
"bones": {
"face": {
"position": [0, 0, 0.1],
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
}
}
}
@@ -0,0 +1,107 @@
{
"format_version": "1.8.0",
"animations": {
"animation.wormadam_trash.ground_idle": {
"loop": true,
"bones": {
"body": {
"rotation": [5, 0, 0],
"position": [0, 6, 0]
},
"body_rotation": {
"rotation": [0, 0, 0]
},
"antenna": {
"rotation": [-2.5, 0, 0]
},
"ear_left": {
"rotation": [0, -12.5, 0]
},
"ear_left2": {
"rotation": [0, 0, 20]
},
"ear_left3": {
"rotation": [0, 0, 22.5]
},
"ear_back_left": {
"rotation": [-7.5, 0, 25]
},
"ear_left4": {
"rotation": [0, 0, 17.5]
},
"ear_right": {
"rotation": [0, 12.5, 0]
},
"ear_right2": {
"rotation": [0, 0, -20]
},
"ear_right3": {
"rotation": [0, 0, -22.5]
},
"ear_right4": {
"rotation": [0, 0, -17.5]
},
"ear_back_right": {
"rotation": [-7.5, 0, -25]
}
}
},
"animation.wormadam_trash.blink": {
"animation_length": 0.1667,
"bones": {
"pupil_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]}
}
},
"pupil_closed_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]}
}
},
"pupil_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]}
}
},
"pupil_closed_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]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
},
"animation.wormadam_trash.ditto_face": {
"loop": true,
"bones": {
"face": {
"position": [0, 0, 0.1],
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
}
}
}
@@ -0,0 +1,100 @@
{
"format_version": "1.8.0",
"animations": {
"animation.mothim.ground_idle": {
"loop": true,
"bones": {
"torso": {
"rotation": [5, 0, 0]
},
"wing_upper_left": {
"rotation": [1.3185, -9.9136, -7.6143]
},
"wing_lower_left": {
"rotation": [-2.5, -12.5, 0]
},
"head": {
"rotation": [-5, 0, 0]
},
"antenna_left": {
"rotation": [-22.4229, 1.9113, 4.6211]
},
"antenna_left2": {
"rotation": [-7.5, 0, 0]
},
"tail": {
"rotation": [-12.5, 0, 0]
},
"antenna_right": {
"rotation": [-22.4229, -1.9113, -4.6211]
},
"antenna_right2": {
"rotation": [-7.5, 0, 0]
},
"arm_left": {
"rotation": [-0.9096, 19.9802, 44.8398]
},
"arm_right": {
"rotation": [-0.9096, -19.9802, -44.8398]
},
"leg_left": {
"rotation": [-9.041, -41.7073, 13.4501]
},
"leg_right": {
"rotation": [-9.041, 41.7073, -13.4501]
},
"wing_upper_right": {
"rotation": [1.3185, 9.9136, 7.6143]
},
"wing_lower_right": {
"rotation": [-2.5, 12.5, 0]
}
}
},
"animation.mothim.blink": {
"animation_length": 0.1667,
"bones": {
"eye_open_left": {
"position": {
"0.0": [0, 0, 0.1],
"0.125": {"pre": [0, 0, 0.1], "post": [0, 0, 0.1]},
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eye_open_right": {
"position": {
"0.0": [0, 0, 0.1],
"0.125": {"pre": [0, 0, 0.1], "post": [0, 0, 0.1]},
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eye_closed_left": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]}
}
},
"eye_closed_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]},
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, -0.1]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
}
}
}
@@ -319,6 +319,144 @@
"position": [1, 1, 0]
}
}
},
"animation.bonsly.shoulder_left": {
"loop": true,
"animation_length": 4,
"bones": {
"body": {
"rotation": [0, -30, 0]
},
"torso": {
"rotation": ["-10+math.sin(q.anim_time*90*2-90)*1.5", 0, "math.sin(q.anim_time*90*2/2-180)*1.5"],
"position": [0, 0, 0]
},
"stem": {
"rotation": ["math.sin(q.anim_time*90*2-90-90)*1", 0, 0]
},
"stem2": {
"rotation": ["math.sin(q.anim_time*90*2-150)*4", 0, 0]
},
"mouth_closed": {
"rotation": [0, 0, 180],
"position": [0, 0.75, 0]
},
"leg_left": {
"rotation": ["-66.956-math.sin(q.anim_time*90*3-90)*3.5", -37.4642, 3.1596],
"position": [0.5, "math.sin(q.anim_time*90*2/2-180)*-0.25", -1.25]
},
"leg_left2": {
"rotation": ["20-math.sin(q.anim_time*90*3-150)*15.5", 0, 0]
},
"foot_left": {
"rotation": ["40-math.sin(q.anim_time*90*3-210)*7.5", 0, 0]
},
"leg_right": {
"rotation": ["-58.8106+math.sin(q.anim_time*90*3-90)*3.5", 15.095, 8.959],
"position": [-0.25, "math.sin(q.anim_time*90*2/2-180)*0.1", -1.5]
},
"leg_right2": {
"rotation": ["20+math.sin(q.anim_time*90*3-150)*15.5", 0, 0]
},
"foot_right": {
"rotation": ["40+math.sin(q.anim_time*90*3-210)*7.5", 0, 0]
},
"pupil_left": {
"position": [-0.2, -0.1, 0]
},
"pupil_right": {
"position": [-0.1, -0.1, 0]
}
}
},
"animation.bonsly.shoulder_right": {
"loop": true,
"animation_length": 4,
"bones": {
"body": {
"rotation": [0, 30, 0]
},
"torso": {
"rotation": ["-10+math.sin(q.anim_time*90*2-90)*1.5", 0, "-math.sin(q.anim_time*90*2/2-180)*1.5"],
"position": [0, 0, 0]
},
"stem": {
"rotation": ["math.sin(q.anim_time*90*2-90-90)*1", 0, 0]
},
"stem2": {
"rotation": ["math.sin(q.anim_time*90*2-150)*4", 0, 0]
},
"mouth_closed": {
"rotation": [0, 0, -180],
"position": [0, 0.75, 0]
},
"leg_left": {
"rotation": ["-58.8106+math.sin(q.anim_time*90*3-90)*3.5", -15.095, -8.959],
"position": [0.25, "math.sin(q.anim_time*90*2/2-180)*0.1", -1.5]
},
"leg_left2": {
"rotation": ["20+math.sin(q.anim_time*90*3-150)*15.5", 0, 0]
},
"foot_left": {
"rotation": ["40+math.sin(q.anim_time*90*3-210)*7.5", 0, 0]
},
"leg_right": {
"rotation": ["-66.956-math.sin(q.anim_time*90*3-90)*3.5", 37.4642, -3.1596],
"position": [-0.5, "math.sin(q.anim_time*90*2/2-180)*-0.25", -1.25]
},
"leg_right2": {
"rotation": ["20-math.sin(q.anim_time*90*3-150)*15.5", 0, 0]
},
"foot_right": {
"rotation": ["40-math.sin(q.anim_time*90*3-210)*7.5", 0, 0]
},
"pupil_left": {
"position": [0.1, -0.1, 0]
},
"pupil_right": {
"position": [0.2, -0.1, 0]
}
}
},
"animation.bonsly.shoulder_left_position": {
"loop": true,
"bones": {
"body": {
"position": [2.75, -4, -0.5]
}
}
},
"animation.bonsly.shoulder_right_position": {
"loop": true,
"bones": {
"body": {
"position": [-2.75, -4, -0.5]
}
}
},
"animation.bonsly.looktest": {
"loop": true,
"bones": {
"torso": {
"rotation": [0, 0, 0]
}
}
},
"animation.bonsly.scaletest": {
"loop": true,
"bones": {
"bonsly": {
"scale": 0.6
}
}
},
"animation.bonsly.walkspeedtest": {
"loop": true,
"bones": {
"bonsly": {
"position": [0, 0, "40-q.anim_time*90*0.2"]
}
}
}
}
}
@@ -0,0 +1,104 @@
{
"format_version": "1.8.0",
"animations": {
"animation.snover.ground_idle": {
"loop": true,
"bones": {
"tail": {
"rotation": [-7.44134, 0.07948, 0.53084]
},
"arm_right": {
"rotation": [0, 0, "-32.5-5*Math.sin((query.anim_time-0.5) * 90 * 1)"]
},
"arm_right2": {
"rotation": [0, "-12.5+5*Math.sin((query.anim_time-0.75) * 90 * 1)", 0]
},
"torso": {
"rotation": ["-2.5+2*Math.sin((query.anim_time-0) * 90 * 1)", 0, "-2*Math.sin((query.anim_time-0.8) * 90 * 0.5)"],
"position": [0, "0.1*Math.sin((query.anim_time-0.75) * 90 * 1)", 0]
},
"torso2": {
"rotation": ["5+1*Math.sin((query.anim_time-0.25) * 90 * 1)", 0, 0]
},
"arm_left": {
"rotation": [0, 0, "32.5+5*Math.sin((query.anim_time-0.5) * 90 * 1)"]
},
"arm_left2": {
"rotation": [0, "12.5-5*Math.sin((query.anim_time-0.75) * 90 * 1)", 0]
}
}
},
"animation.snover.blink": {
"animation_length": 0.1667,
"bones": {
"pupil_right": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"pupil_left": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"pupil_closed_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"pupil_closed_left": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
},
"animation.snover.ditto_face": {
"loop": true,
"bones": {
"eyes": {
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
},
"animation.snover.berries_female": {
"loop": true,
"bones": {
"berry_front": {
"position": [0, 0, -4]
},
"berry_front_right": {
"position": [-4, 0, -4]
},
"berry_back_right": {
"position": [-4, 0, 4]
},
"berry_front_left": {
"position": [4, 0, -4]
},
"berry_back_left": {
"position": [4, 0, 4]
}
}
}
}
}
@@ -0,0 +1,110 @@
{
"format_version": "1.8.0",
"animations": {
"animation.abomasnow.ground_idle": {
"loop": true,
"bones": {
"torso2": {
"rotation": [2.5, 0, 0]
},
"head": {
"rotation": [-2.5, 0, 0]
},
"arm_left": {
"rotation": [0, 0, 35]
},
"arm_left2": {
"rotation": [4.75346, 32.18826, 8.87221]
},
"finger_front_left": {
"rotation": [-3.96713, -14.47751, 15.50409]
},
"finger_middle_left": {
"rotation": [0, 0, 15]
},
"finger_back_left": {
"rotation": [3.96713, 14.47751, 15.50409]
},
"foot_left": {
"rotation": [0, -15, 0]
},
"tail": {
"rotation": [-15, 0, 0]
},
"tail2": {
"rotation": [5, 0, 0]
},
"tail3": {
"rotation": [5, 0, 0]
},
"arm_right": {
"rotation": [0, 0, -35]
},
"arm_right2": {
"rotation": [4.75346, -32.18826, -8.87221]
},
"finger_front_right": {
"rotation": [-3.96713, 14.47751, -15.50409]
},
"finger_middle_right": {
"rotation": [0, 0, -15]
},
"finger_back_right": {
"rotation": [3.96713, -14.47751, -15.50409]
}
}
},
"animation.abomasnow.blink": {
"animation_length": 0.1667,
"bones": {
"eye_left": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eye_right": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyelid_left": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
},
"animation.abomasnow.ditto_face": {
"loop": true,
"bones": {
"eyes": {
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
}
}
}
@@ -0,0 +1,279 @@
{
"format_version": "1.8.0",
"animations": {
"animation.tympole.ground_idle": {
"loop": true,
"bones": {
"torso": {
"rotation": [-2.5, 0, 0]
},
"tail": {
"rotation": [-37.5, 0, 0]
},
"tail2": {
"rotation": [35, 0, 0]
},
"tail3": {
"rotation": [10, 0, 0]
}
}
},
"animation.tympole.sleep": {
"loop": true,
"bones": {
"body": {
"rotation": [-95, 0, 0],
"position": [0, 0, 2]
},
"tail": {
"rotation": [-85, 0, 0]
},
"tail2": {
"rotation": [-5, 0, 0]
},
"tail3": {
"rotation": [-12.5, 0, 0]
},
"eye_left": {
"position": [0, 0, 0.1]
},
"eye_right": {
"position": [0, 0, 0.1]
},
"eyelid_right": {
"position": [0, 0, -0.1]
},
"eyelid_left": {
"position": [0, 0, -0.1]
}
}
},
"animation.tympole.blink": {
"animation_length": 0.1667,
"bones": {
"eye_left": {
"position": {
"0.0": [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.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eye_right": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
},
"animation.tympole.ditto_face": {
"loop": true,
"bones": {
"face": {
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
},
"animation.tympole.pose": {
"loop": true,
"bones": {
"body": {
"rotation": [-8.5958, -5.68422, 21.80633],
"position": [0, 8, 0]
},
"tail": {
"rotation": [-67.5, -22.5, 0],
"position": [0, -2, 0]
},
"tail2": {
"rotation": [22.5, 0, 0]
},
"tail3": {
"rotation": [22.5, 0, 0]
},
"mouth": {
"position": [0, 0, 0.1]
},
"mouth_open": {
"position": [0, 0, 0]
},
"mouth_open_small": {
"position": [0, 0, -0.1]
}
}
},
"animation.tympole.happy": {
"loop": true,
"bones": {
"eye_left": {
"position": [0, 0, 0.1]
},
"eye_right": {
"position": [0, 0, 0.1]
},
"mouth": {
"position": [0, 0, 0.1]
},
"mouth_open": {
"position": [0, 0, -0.1]
},
"eye_left_happy": {
"position": [0, 0, -0.1]
},
"eye_right_happy": {
"position": [0, 0, -0.1]
}
}
},
"animation.tympole.shock": {
"loop": true,
"bones": {
"mouth": {
"position": [0, 0, 0.1]
},
"mouth_open_tall": {
"position": [0, 0, -0.1]
},
"eyebrow_left": {
"position": [0, 0.5, 0]
},
"eyebrow_right": {
"position": [0, 0.5, 0]
}
}
},
"animation.tympole.angry": {
"loop": true,
"bones": {
"eyebrow_left": {
"rotation": [0, 0, -22.5],
"position": [-0.25, -0.25, -0.04]
},
"eyebrow_right": {
"rotation": [0, 0, 22.5],
"position": [0.25, -0.25, -0.04]
},
"mouth": {
"position": [0, 0, 0.1]
},
"eyelid_left_emote": {
"position": [0, 0, -0.1]
},
"eyelid_right_emote": {
"position": [0, 0, -0.1]
},
"mouth_angry": {
"position": [0, 0, -0.1]
}
}
},
"animation.tympole.sad": {
"loop": true,
"bones": {
"eyebrow_left": {
"rotation": [0, 0, 10],
"position": [0.15, 0, -0.04]
},
"eyebrow_right": {
"rotation": [0, 0, -10],
"position": [-0.15, 0, -0.04]
},
"mouth": {
"position": [0, 0, 0.1]
},
"eyelid_left_emote": {
"position": [0.9, 0, -0.1]
},
"eyelid_right_emote": {
"position": [-0.9, 0, -0.1]
},
"mouth_sad": {
"position": [0, 0, -0.1]
}
}
},
"animation.tympole.hurt": {
"loop": true,
"bones": {
"eyebrow_left": {
"position": [0, -0.25, 0]
},
"eyebrow_right": {
"position": [0, -0.25, 0]
},
"eye_left": {
"position": [0, 0, 0.1]
},
"eye_right": {
"position": [0, 0, 0.1]
},
"mouth": {
"position": [0, 0, 0.1]
},
"mouth_open_frown": {
"position": [0, 0, -0.1]
},
"eye_left_hurt": {
"position": [0, 0, -0.1]
},
"eye_right_hurt": {
"position": [0, 0, -0.1]
}
}
},
"animation.tympole.unamused": {
"loop": true,
"bones": {
"mouth": {
"position": [0, 0, 0.1]
},
"mouth_angry": {
"position": [0, 0, -0.1]
},
"eyelid_left_unamused": {
"position": [0, 0, -0.1]
},
"eyelid_right_unamused": {
"position": [0, 0, -0.1]
}
}
},
"animation.tympole.scale": {
"loop": true,
"bones": {
"tympole": {
"scale": 0.65
},
"ear_left_inside": {
"position": [0, 0, 0]
}
}
}
}
}
@@ -0,0 +1,223 @@
{
"format_version": "1.8.0",
"animations": {
"animation.palpitoad.ground_idle": {
"loop": true,
"bones": {
"palpitoad": {
"scale": 1
},
"torso": {
"rotation": [-2.5, 0, 0]
},
"tail": {
"rotation": [-32.5, 0, 0]
},
"nose": {
"rotation": [-10, 0, 0]
},
"leg_left": {
"rotation": [0, 15, 0]
},
"leg_right": {
"rotation": [0, -15, 0]
},
"tail2": {
"rotation": [20, 0, 0]
},
"tail3": {
"rotation": [12.5, 0, 0]
},
"tongue": {
"rotation": [260, 0, 0]
},
"tongue_2": {
"rotation": [180, 0, 0]
},
"tongue_3": {
"rotation": [180, 0, 0]
},
"tongue_4": {
"rotation": [180, 0, 0]
},
"tongue_5": {
"rotation": [180, 0, 0]
},
"tongue_6": {
"rotation": [180, 0, 0]
},
"tongue_7": {
"rotation": [180, 0, 0]
},
"tongue_8": {
"rotation": [180, 0, 0]
},
"tongue_9": {
"rotation": [180, 0, 0]
},
"tongue_10": {
"rotation": [180, 0, 0]
},
"tongue_11": {
"rotation": [180, 0, 0]
},
"tongue_12": {
"rotation": [180, 0, 0]
},
"head": {
"rotation": [2.5, 0, 0]
}
}
},
"animation.palpitoad.blink": {
"animation_length": 0.1667,
"bones": {
"eye_left": {
"position": {
"0.0": [0, 0, 0.1],
"0.125": [0, 0, 0.1],
"0.1667": [0, 0, 0]
}
},
"shine_left": {
"position": {
"0.0": [0, 0, 0.1],
"0.125": [0, 0, 0.1],
"0.1667": [0, 0, 0]
}
},
"eye_right": {
"position": {
"0.0": [0, 0, 0.1],
"0.125": [0, 0, 0.1],
"0.1667": [0, 0, 0]
}
},
"shine_right": {
"position": {
"0.0": [0, 0, 0.1],
"0.125": [0, 0, 0.1],
"0.1667": [0, 0, 0]
}
},
"eyelid_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
},
"eyelid_left": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
}
}
},
"animation.palpitoad.ditto_face": {
"loop": true,
"bones": {
"mouth_open_big_bottom": {
"scale": 0
},
"face": {
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
},
"animation.palpitoad.pose": {
"loop": true,
"bones": {
"body": {
"position": [0, 1, 0]
},
"leg_left": {
"rotation": [20, 25, 0]
},
"toes_left": {
"rotation": [-20, 0, 0]
},
"leg_right": {
"rotation": [20, -25, 0]
},
"toes_right": {
"rotation": [-20, 0, 0]
},
"torso": {
"rotation": [-5, 0, 0]
},
"head_angle": {
"rotation": [5, 10, 0]
},
"mouth": {
"position": [0, 0, 0.1]
},
"nose": {
"rotation": [-10, 0, 0]
},
"tail": {
"rotation": [27.5, -30, 0]
},
"tail2": {
"rotation": [27.5, 0, 0]
},
"tongue": {
"rotation": [-10, -32.5, 0]
},
"tongue_2": {
"rotation": [-42.79487, -18.88952, 16.68541]
},
"tongue_3": {
"rotation": [-38.85707, -12.27659, 12.56853]
},
"tongue_4": {
"rotation": [-25, 0, 0]
},
"tongue_5": {
"rotation": [-10.82756, 27.88369, 21.32202]
},
"tongue_6": {
"rotation": [-10, 42.5, 0]
},
"tongue_7": {
"rotation": [-30.86748, 12.95254, -7.63074]
},
"mouth_open": {
"position": [0, 0, -0.1]
},
"tongue_8": {
"rotation": [-15, 0, 0]
},
"tongue_9": {
"rotation": [-22.5, 0, 0]
},
"tongue_12": {
"rotation": [40, 0, 0]
},
"tongue_11": {
"rotation": [37.5, 0, 0]
},
"tongue_10": {
"rotation": [-15, 0, 0]
},
"shine_left": {
"position": [-0.25, 0, 0]
},
"shine_right": {
"position": [-0.25, 0, 0]
},
"pupil_left": {
"position": [-0.25, 0, 0]
},
"pupil_right": {
"position": [-0.25, 0, 0]
}
}
}
}
}
@@ -0,0 +1,341 @@
{
"format_version": "1.8.0",
"animations": {
"animation.seismitoad.ground_idle": {
"loop": true,
"bones": {
"body": {
"position": [0, -3.2, 0]
},
"torso": {
"rotation": [2.5, 0, 0]
},
"shoulder_left": {
"rotation": [34.3569, -7.1313, 32.7929]
},
"arm_left": {
"rotation": [0, 27.5, 5]
},
"elbow_left": {
"rotation": [-15, 22.5, 0]
},
"hand_left": {
"rotation": [0, 0, 22.5]
},
"leg_left": {
"rotation": [-45, -20, -10],
"position": [-1, 0, 0]
},
"knee_left": {
"rotation": [60, -10, 10]
},
"foot_left": {
"rotation": [-12, 0, -5]
},
"wart_knee_left": {
"rotation": [22.5, 0, 7.5]
},
"neck_rotation": {
"rotation": [2.5, 0, 0]
},
"head": {
"rotation": [-90, 0, 0]
},
"finger_middle_left2": {
"rotation": [0, 0, 15]
},
"finger_front_left": {
"rotation": [0, 0, 7.5]
},
"finger_front_left2": {
"rotation": [0, 0, 15]
},
"finger_back_left": {
"rotation": [0, 0, 7.5]
},
"finger_back_left2": {
"rotation": [0, 0, 15]
},
"shoulder_right": {
"rotation": [34.3569, 7.1313, -32.7929]
},
"arm_right": {
"rotation": [0, -27.5, -5]
},
"elbow_right": {
"rotation": [-15, -22.5, 0]
},
"hand_right": {
"rotation": [0, 0, -22.5]
},
"finger_middle_right2": {
"rotation": [0, 0, -15]
},
"finger_front_right": {
"rotation": [0, 0, -7.5]
},
"finger_front_right2": {
"rotation": [0, 0, -15]
},
"finger_back_right": {
"rotation": [0, 0, -7.5]
},
"finger_back_right2": {
"rotation": [0, 0, -15]
},
"toe_back_left2": {
"rotation": [-10, 0, 0]
},
"toe_out_left2": {
"rotation": [7.5, 0, 0]
},
"toe_in_left2": {
"rotation": [7.5, 0, 0]
},
"leg_right": {
"rotation": [-45, 20, 10],
"position": [1, 0, 0]
},
"knee_right": {
"rotation": [60, 10, -10]
},
"foot_right": {
"rotation": [-12, 0, 5]
},
"toe_out_right2": {
"rotation": [7.5, 0, 0]
},
"toe_in_right2": {
"rotation": [7.5, 0, 0]
},
"toe_back_right2": {
"rotation": [-10, 0, 0]
},
"wart_knee_right": {
"rotation": [22.5, 0, -7.5]
},
"neck": {
"rotation": [-45, 0, 0]
},
"tongue": {
"position": [0, -0.25, 3]
},
"tongue2": {
"position": [0, 0, 5]
},
"tongue3": {
"position": [0, 0, 5]
},
"tongue4": {
"position": [0, 0, 5]
},
"tongue5": {
"position": [0, 0, 5]
},
"tongue_tip": {
"position": [0, -1, 3]
},
"head_angle": {
"rotation": [90, 0, 0]
},
"neck_angle": {
"rotation": [45, 0, 0]
}
}
},
"animation.seismitoad.blink": {
"animation_length": 0.2917,
"bones": {
"eye_left": {
"position": {
"0.0": [0, 0, 0],
"0.0833": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"0.2917": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eye_right": {
"position": {
"0.0": [0, 0, 0.1],
"0.2083": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyelid_left": {
"position": {
"0.0": [0, 0, 0],
"0.0833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"0.2917": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.2083": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.2083": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.2083": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
},
"animation.seismitoad.ditto_face": {
"loop": true,
"bones": {
"face": {
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
},
"tongue": {
"scale": 0
}
}
},
"animation.seismitoad.pose": {
"loop": true,
"bones": {
"body": {
"rotation": [0, -30, 0],
"position": [0, -2.25, 0]
},
"torso": {
"rotation": [17.5, 0, 0]
},
"jaw": {
"rotation": [42.5, 0, 0]
},
"shoulder_left": {
"rotation": [-5, -7.5, 25]
},
"arm_left": {
"rotation": [0, 5, 0]
},
"elbow_left": {
"rotation": [-12.5, 50, 0]
},
"finger_middle_left": {
"rotation": [0, 0, 7.5]
},
"leg_left": {
"rotation": [-40.6299, -29.1905, -7.6552]
},
"knee_left": {
"rotation": [37.5, 0, 0]
},
"foot_left": {
"rotation": [6.4717, -0.6518, 4.9574]
},
"head": {
"rotation": [-22.0182, -4.7511, -24.0751]
},
"finger_middle_left2": {
"rotation": [0, 0, 20]
},
"finger_front_left2": {
"rotation": [0, 0, 15]
},
"finger_back_left": {
"rotation": [0, 0, 27.5]
},
"finger_back_left2": {
"rotation": [0, 0, 40]
},
"shoulder_right": {
"rotation": [0, 0, -22.5]
},
"arm_right": {
"rotation": [0, -12.5, 0]
},
"elbow_right": {
"rotation": [173.5473, -44.2356, -288.0659]
},
"hand_right": {
"rotation": [0, 0, -15]
},
"finger_middle_right": {
"rotation": [0, 0, -15]
},
"finger_middle_right2": {
"rotation": [0, 0, -5]
},
"finger_front_right": {
"rotation": [20.5765, 31.8072, -73.3068],
"position": [0, 0, -0.5]
},
"finger_front_right2": {
"rotation": [0, 0, -50]
},
"finger_back_right": {
"rotation": [-19.2568, -34.3655, -80.4799],
"position": [0, 0, 0.5]
},
"finger_back_right2": {
"rotation": [0, 0, -50]
},
"toe_back_left2": {
"rotation": [-10, 0, 0]
},
"toe_out_left2": {
"rotation": [7.5, 0, 0]
},
"toe_in_left2": {
"rotation": [7.5, 0, 0]
},
"leg_right": {
"rotation": [-38.922, 39.0907, 8.6174]
},
"knee_right": {
"rotation": [37.5, 0, 0]
},
"foot_right": {
"rotation": [7.4593, 0.7817, -5.949]
},
"toe_out_right2": {
"rotation": [7.5, 0, 0]
},
"toe_in_right2": {
"rotation": [7.5, 0, 0]
},
"toe_back_right2": {
"rotation": [-10, 0, 0]
},
"pupil_right": {
"position": [-0.25, 0, 0]
},
"pupil_left": {
"position": [-0.25, 0, 0]
},
"neck": {
"rotation": [0, -4, 0]
},
"tongue": {
"rotation": [-25, 0, 0]
},
"tongue2": {
"rotation": [-10, 25, 0]
},
"tongue3": {
"rotation": [-5, 32.5, 0]
},
"tongue4": {
"rotation": [-5, 45, 0]
},
"tongue5": {
"rotation": [-22.99, 11.5348, -4.8492]
},
"tongue_tip": {
"rotation": [-25.3376, 9.0548, -4.2618]
}
}
}
}
}
@@ -0,0 +1,105 @@
{
"format_version": "1.8.0",
"animations": {
"animation.deerling.ground_idle": {
"loop": true,
"bones": {
"body": {
"position": [0, -0.1, 0]
},
"torso": {
"rotation": [5, 0, 0]
},
"torso2": {
"rotation": [-5, 0, 0]
},
"neck": {
"rotation": [7.5, 0, 0]
},
"ear_left2": {
"rotation": [0, 0, 7.5]
},
"ear_right2": {
"rotation": [0, 0, -7.5]
},
"tail": {
"rotation": [5, 0, 0]
},
"leg_front_left": {
"rotation": [2.5, 0, 0]
},
"foot_front_left": {
"rotation": [-2.5, 0, 0]
},
"leg_back_left": {
"rotation": [2.5, 0, -2.5]
},
"leg_back_left2": {
"rotation": [-2.5, 0, 0]
},
"foot_back_left": {
"rotation": [0, 0, 2.5]
},
"leg_front_right": {
"rotation": [2.5, 0, 0]
},
"foot_front_right": {
"rotation": [-2.5, 0, 0]
},
"leg_back_right": {
"rotation": [2.5, 0, 2.5]
},
"leg_back_right2": {
"rotation": [-2.5, 0, 0]
},
"foot_back_right": {
"rotation": [0, 0, -2.5]
},
"head": {
"rotation": [-7.5, 0, 0]
}
}
},
"animation.deerling.blink": {
"animation_length": 0.1667,
"bones": {
"eyelid_left": {
"position": {
"0.0": [0.1, 0, -0.1],
"0.1667": {"pre": [0.1, 0, -0.1], "post": [0, 0, 0]}
}
},
"eye_left": {
"position": {
"0.0": [-0.1, 0, 0.1],
"0.1667": {"pre": [-0.1, 0, 0.1], "post": [0, 0, 0]}
}
},
"eye_right": {
"position": {
"0.0": [0.1, 0, 0.1],
"0.1667": {"pre": [0.1, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [-0.1, 0, -0.1],
"0.1667": {"pre": [-0.1, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
}
}
}
@@ -0,0 +1,129 @@
{
"format_version": "1.8.0",
"animations": {
"animation.sawsbuck_autumn.ground_idle": {
"loop": true,
"bones": {
"body": {
"position": [0, -0.4, 0]
},
"head": {
"rotation": [-3, 0, 0]
},
"leg_front_left": {
"rotation": [0, -3, -2]
},
"leg_front_left2": {
"rotation": [0, 0, 0]
},
"leg_front_left3": {
"rotation": [2.5, 0, 0]
},
"foot_front_left": {
"rotation": [-0.5, 0, 2]
},
"leg_back_left": {
"rotation": [-5, -3, -2]
},
"leg_back_left2": {
"rotation": [3, 0, 0]
},
"leg_back_left3": {
"rotation": [-5, 0, 0]
},
"foot_back_left": {
"rotation": [7, -1, 2]
},
"leg_front_right": {
"rotation": [0, 3, 2]
},
"leg_front_right2": {
"rotation": [0, 0, 0]
},
"leg_front_right3": {
"rotation": [2.5, 0, 0]
},
"foot_front_right": {
"rotation": [-0.5, 0, -2]
},
"leg_back_right": {
"rotation": [-5, 3, 2]
},
"leg_back_right2": {
"rotation": [3, 0, 0]
},
"leg_back_right3": {
"rotation": [-5, 0, 0]
},
"foot_back_right": {
"rotation": [7, 1, -2]
},
"ear_left": {
"rotation": [0, 0, -10]
},
"ear_right": {
"rotation": [0, 0, 10]
},
"tail1": {
"rotation": [-3, 0, 0]
},
"tail2": {
"rotation": [-5, 0, 0]
},
"torso": {
"rotation": [5, 0, 0]
},
"torso2": {
"rotation": [-5, 0, 0]
},
"neck": {
"rotation": [-5, 0, 0]
},
"ftorso2": {
"rotation": [-2.5, 0, 0]
}
}
},
"animation.sawsbuck_autumn.blink": {
"animation_length": 0.1667,
"bones": {
"eyelid_left": {
"position": {
"0.0": [0.1, -0.1, 0],
"0.1667": {"pre": [0.1, -0.1, 0], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [-0.1, -0.1, 0],
"0.1667": {"pre": [-0.1, -0.1, 0], "post": [0, 0, 0]}
}
},
"eye_left": {
"position": {
"0.0": [-0.1, 0.1, 0],
"0.1667": {"pre": [-0.1, 0.1, 0], "post": [0, 0, 0]}
}
},
"eyebrow_left": {
"position": {
"0.0": [-0.1, 0.1, 0],
"0.1667": {"pre": [-0.1, 0.1, 0], "post": [0, 0, 0]}
}
},
"eye_right": {
"position": {
"0.0": [0.1, 0.1, 0],
"0.1667": {"pre": [0.1, 0.1, 0], "post": [0, 0, 0]}
}
},
"eyebrow_right": {
"position": {
"0.0": [0.1, 0.1, 0],
"0.1667": {"pre": [0.1, 0.1, 0], "post": [0, 0, 0]}
}
}
}
}
}
}
@@ -0,0 +1,129 @@
{
"format_version": "1.8.0",
"animations": {
"animation.sawsbuck_spring.ground_idle": {
"loop": true,
"bones": {
"body": {
"position": [0, -0.4, 0]
},
"head": {
"rotation": [-3, 0, 0]
},
"leg_front_left": {
"rotation": [0, -3, -2]
},
"leg_front_left2": {
"rotation": [0, 0, 0]
},
"leg_front_left3": {
"rotation": [2.5, 0, 0]
},
"foot_front_left": {
"rotation": [-0.5, 0, 2]
},
"leg_back_left": {
"rotation": [-5, -3, -2]
},
"leg_back_left2": {
"rotation": [3, 0, 0]
},
"leg_back_left3": {
"rotation": [-5, 0, 0]
},
"foot_back_left": {
"rotation": [7, -1, 2]
},
"leg_front_right": {
"rotation": [0, 3, 2]
},
"leg_front_right2": {
"rotation": [0, 0, 0]
},
"leg_front_right3": {
"rotation": [2.5, 0, 0]
},
"foot_front_right": {
"rotation": [-0.5, 0, -2]
},
"leg_back_right": {
"rotation": [-5, 3, 2]
},
"leg_back_right2": {
"rotation": [3, 0, 0]
},
"leg_back_right3": {
"rotation": [-5, 0, 0]
},
"foot_back_right": {
"rotation": [7, 1, -2]
},
"ear_left": {
"rotation": [0, 0, -10]
},
"ear_right": {
"rotation": [0, 0, 10]
},
"tail1": {
"rotation": [-3, 0, 0]
},
"tail2": {
"rotation": [-5, 0, 0]
},
"torso": {
"rotation": [5, 0, 0]
},
"torso2": {
"rotation": [-5, 0, 0]
},
"neck": {
"rotation": [-5, 0, 0]
},
"ftorso2": {
"rotation": [-2.5, 0, 0]
}
}
},
"animation.sawsbuck_spring.blink": {
"animation_length": 0.1667,
"bones": {
"eyelid_left": {
"position": {
"0.0": [0.1, -0.1, 0],
"0.1667": {"pre": [0.1, -0.1, 0], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [-0.1, -0.1, 0],
"0.1667": {"pre": [-0.1, -0.1, 0], "post": [0, 0, 0]}
}
},
"eye_left": {
"position": {
"0.0": [-0.1, 0.1, 0],
"0.1667": {"pre": [-0.1, 0.1, 0], "post": [0, 0, 0]}
}
},
"eyebrow_left": {
"position": {
"0.0": [-0.1, 0.1, 0],
"0.1667": {"pre": [-0.1, 0.1, 0], "post": [0, 0, 0]}
}
},
"eye_right": {
"position": {
"0.0": [0.1, 0.1, 0],
"0.1667": {"pre": [0.1, 0.1, 0], "post": [0, 0, 0]}
}
},
"eyebrow_right": {
"position": {
"0.0": [0.1, 0.1, 0],
"0.1667": {"pre": [0.1, 0.1, 0], "post": [0, 0, 0]}
}
}
}
}
}
}
@@ -0,0 +1,141 @@
{
"format_version": "1.8.0",
"animations": {
"animation.sawsbuck_summer.ground_idle": {
"loop": true,
"bones": {
"body": {
"position": [0, -0.4, 0]
},
"head": {
"rotation": [-3, 0, 0]
},
"leg_front_left": {
"rotation": [0, -3, -2]
},
"leg_front_left2": {
"rotation": [0, 0, 0]
},
"leg_front_left3": {
"rotation": [2.5, 0, 0]
},
"foot_front_left": {
"rotation": [-0.5, 0, 2]
},
"leg_back_left": {
"rotation": [-5, -3, -2]
},
"leg_back_left2": {
"rotation": [3, 0, 0]
},
"leg_back_left3": {
"rotation": [-5, 0, 0]
},
"foot_back_left": {
"rotation": [7, -1, 2]
},
"leg_front_right": {
"rotation": [0, 3, 2]
},
"leg_front_right2": {
"rotation": [0, 0, 0]
},
"leg_front_right3": {
"rotation": [2.5, 0, 0]
},
"foot_front_right": {
"rotation": [-0.5, 0, -2]
},
"leg_back_right": {
"rotation": [-5, 3, 2]
},
"leg_back_right2": {
"rotation": [3, 0, 0]
},
"leg_back_right3": {
"rotation": [-5, 0, 0]
},
"foot_back_right": {
"rotation": [7, 1, -2]
},
"ear_left": {
"rotation": [0, 0, -10]
},
"ear_right": {
"rotation": [0, 0, 10]
},
"tail1": {
"rotation": [-3, 0, 0]
},
"tail2": {
"rotation": [-5, 0, 0]
},
"torso": {
"rotation": [5, 0, 0]
},
"torso2": {
"rotation": [-5, 0, 0]
},
"neck": {
"rotation": [-5, 0, 0]
},
"ftorso2": {
"rotation": [-2.5, 0, 0]
},
"bush_left3_summer": {
"rotation": [0, 0, -5]
},
"bush_left4_summer": {
"rotation": [0, 0, -7.5]
},
"bush_right3_summer": {
"rotation": [0, 0, 5]
},
"bush_right4_summer": {
"rotation": [0, 0, 7.5]
}
}
},
"animation.sawsbuck_summer.blink": {
"animation_length": 0.1667,
"bones": {
"eyelid_left": {
"position": {
"0.0": [0.1, -0.1, 0],
"0.1667": {"pre": [0.1, -0.1, 0], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [-0.1, -0.1, 0],
"0.1667": {"pre": [-0.1, -0.1, 0], "post": [0, 0, 0]}
}
},
"eye_left": {
"position": {
"0.0": [-0.1, 0.1, 0],
"0.1667": {"pre": [-0.1, 0.1, 0], "post": [0, 0, 0]}
}
},
"eyebrow_left": {
"position": {
"0.0": [-0.1, 0.1, 0],
"0.1667": {"pre": [-0.1, 0.1, 0], "post": [0, 0, 0]}
}
},
"eye_right": {
"position": {
"0.0": [0.1, 0.1, 0],
"0.1667": {"pre": [0.1, 0.1, 0], "post": [0, 0, 0]}
}
},
"eyebrow_right": {
"position": {
"0.0": [0.1, 0.1, 0],
"0.1667": {"pre": [0.1, 0.1, 0], "post": [0, 0, 0]}
}
}
}
}
}
}
@@ -0,0 +1,141 @@
{
"format_version": "1.8.0",
"animations": {
"animation.sawsbuck_winter.ground_idle": {
"loop": true,
"bones": {
"body": {
"position": [0, -0.4, 0]
},
"head": {
"rotation": [-3, 0, 0]
},
"leg_front_left": {
"rotation": [0, -3, -2]
},
"leg_front_left2": {
"rotation": [0, 0, 0]
},
"leg_front_left3": {
"rotation": [2.5, 0, 0]
},
"foot_front_left": {
"rotation": [-0.5, 0, 2]
},
"leg_back_left": {
"rotation": [-5, -3, -2]
},
"leg_back_left2": {
"rotation": [3, 0, 0]
},
"leg_back_left3": {
"rotation": [-5, 0, 0]
},
"foot_back_left": {
"rotation": [7, -1, 2]
},
"leg_front_right": {
"rotation": [0, 3, 2]
},
"leg_front_right2": {
"rotation": [0, 0, 0]
},
"leg_front_right3": {
"rotation": [2.5, 0, 0]
},
"foot_front_right": {
"rotation": [-0.5, 0, -2]
},
"leg_back_right": {
"rotation": [-5, 3, 2]
},
"leg_back_right2": {
"rotation": [3, 0, 0]
},
"leg_back_right3": {
"rotation": [-5, 0, 0]
},
"foot_back_right": {
"rotation": [7, 1, -2]
},
"ear_left": {
"rotation": [0, 0, -10]
},
"ear_right": {
"rotation": [0, 0, 10]
},
"tail1": {
"rotation": [-3, 0, 0]
},
"tail2": {
"rotation": [-5, 0, 0]
},
"torso": {
"rotation": [5, 0, 0]
},
"torso2": {
"rotation": [-5, 0, 0]
},
"neck": {
"rotation": [-5, 0, 0]
},
"ftorso2": {
"rotation": [-2.5, 0, 0]
},
"bush_left3_summer": {
"rotation": [0, 0, -5]
},
"bush_left4_summer": {
"rotation": [0, 0, -7.5]
},
"bush_right3_summer": {
"rotation": [0, 0, 5]
},
"bush_right4_summer": {
"rotation": [0, 0, 7.5]
}
}
},
"animation.sawsbuck_winter.blink": {
"animation_length": 0.1667,
"bones": {
"eyelid_left": {
"position": {
"0.0": [0.1, -0.1, 0],
"0.1667": {"pre": [0.1, -0.1, 0], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [-0.1, -0.1, 0],
"0.1667": {"pre": [-0.1, -0.1, 0], "post": [0, 0, 0]}
}
},
"eye_left": {
"position": {
"0.0": [-0.1, 0.1, 0],
"0.1667": {"pre": [-0.1, 0.1, 0], "post": [0, 0, 0]}
}
},
"eyebrow_left": {
"position": {
"0.0": [-0.1, 0.1, 0],
"0.1667": {"pre": [-0.1, 0.1, 0], "post": [0, 0, 0]}
}
},
"eye_right": {
"position": {
"0.0": [0.1, 0.1, 0],
"0.1667": {"pre": [0.1, 0.1, 0], "post": [0, 0, 0]}
}
},
"eyebrow_right": {
"position": {
"0.0": [0.1, 0.1, 0],
"0.1667": {"pre": [0.1, 0.1, 0], "post": [0, 0, 0]}
}
}
}
}
}
}
@@ -1,6 +1,179 @@
{
"format_version": "1.8.0",
"animations": {
"animation.chespin.blink": {
"animation_length": 0.1667,
"bones": {
"eye_left": {
"position": {
"0.0": [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.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eye_right": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
},
"animation.chespin.cry": {
"animation_length": 1,
"bones": {
"head": {
"rotation": {
"0.0": [0, 0, 0],
"0.125": {
"pre": [-12, 0, 0],
"post": [-12, 0, 0],
"lerp_mode": "catmullrom"
},
"0.2917": {
"post": [-5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5833": {
"post": [-12, 0, 0],
"lerp_mode": "catmullrom"
},
"1.0": [0, 0, 0]
}
},
"mouth_closed_smile": {
"position": {
"0.0": [0, 0, 0],
"0.25": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"0.75": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"mouth_open_smile": {
"position": {
"0.0": [0, 0, 0],
"0.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"0.75": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"mouth_ditto": {
"position": {
"0.0": [0, 0, 0],
"0.25": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"0.75": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"mouth_open_ditto": {
"position": {
"0.0": [0, 0, 0],
"0.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"0.75": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
},
"sound_effects": {
"0.1667": {
"effect": "pokemon.chespin.cry"
}
}
},
"animation.chespin.ditto_face": {
"loop": true,
"bones": {
"face": {
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
},
"animation.chespin.pose": {
"loop": true,
"bones": {
"body": {
"rotation": [0, -37.5, 0],
"position": [0, 0.5, 0]
},
"torso": {
"rotation": [15, 0, 0]
},
"torso2": {
"rotation": [-12.5, 0, 0]
},
"head": {
"rotation": [-13.89157, 20.57373, -10.30286]
},
"arm_right": {
"rotation": [4.68184, 16.2524, -29.6444]
},
"hand_right": {
"rotation": [0, 0, 15]
},
"arm_left": {
"rotation": [34.92019, 17.2337, 20.34505]
},
"hand_left": {
"rotation": [0, 0, -17.5]
},
"tail": {
"rotation": [-51.63554, -16.76559, 11.06517],
"position": [-1, 0, 0]
},
"tail2": {
"rotation": [0, -37.5, 0]
},
"leg_right": {
"rotation": [0, 22.5, 0]
},
"foot_right": {
"rotation": [22.5, 0, 0]
},
"toes_right": {
"rotation": [-22.5, 0, 0]
},
"leg_left": {
"rotation": [7.53535, -3.55508, -21.73761]
},
"foot_left": {
"rotation": [17.45752, -7.82184, 22.22986]
},
"toes_left": {
"rotation": [-22.5, 0, 0]
},
"head_spikes_sharp": {
"scale": 0
},
"pupil_left": {
"position": [0, 0.2, 0]
},
"pupil_right": {
"position": [-0.2, 0.2, 0]
}
}
},
"animation.chespin.ground_idle": {
"loop": true,
"bones": {
@@ -52,6 +225,9 @@
},
"head": {
"rotation": ["math.sin(q.anim_time*90*3-60)*1.5", "-math.sin(q.anim_time*90*1.5-90)*6.5", 0]
},
"head_spikes_sharp": {
"scale": 0
}
}
},
@@ -106,6 +282,9 @@
},
"toe_right": {
"rotation": ["math.clamp(math.sin(q.anim_time*90*5+40)*40,-180,0)", 0, 0]
},
"head_spikes_sharp": {
"scale": 0
}
}
},
@@ -134,14 +313,14 @@
"mouth_open": {
"position": [0, 0, -0.1]
},
"spike_head_left": {
"head_spike_left": {
"rotation": ["-5+math.sin(q.anim_time*90*1-90)*5", 0, -22.5]
},
"spike_head_right": {
"head_spike_right": {
"rotation": ["-5+math.sin(q.anim_time*90*1-90)*5", 0, 45],
"position": [0, 0.5, 0]
},
"spikes_back": {
"head_spikes_back": {
"rotation": ["math.sin(q.anim_time*90*1-135)*5", 0, 0]
},
"arm_left": {
@@ -173,79 +352,21 @@
},
"foot_right": {
"rotation": [35.02686, -1.60667, -1.91561]
}
}
},
"animation.chespin.blink": {
"animation_length": 0.16667,
"bones": {
"eyelid_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
},
"eyelid_left": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
}
}
},
"animation.chespin.cry": {
"animation_length": 0.91667,
"bones": {
"head": {
"rotation": {
"0.0": ["-5+math.sin(q.anim_time*90*6+45)*8", 0, 0],
"0.1667": ["-5+math.sin(q.anim_time*90*6+45)*8", 0, 0],
"0.8333": [0, 0, 0]
}
},
"mouth_open3": {
"eye_left": {
"position": [0, 0, 0.1]
},
"mouth_closed": {
"position": {
"0.0833": [0, 0, 0],
"0.1667": [0, 0, 0.1],
"0.4167": [0, 0, 0.1],
"0.5": [0, 0, 0]
}
"eye_right": {
"position": [0, 0, 0.2]
},
"mouth_open": {
"position": {
"0.0833": [0, 0, 0],
"0.1667": [0, 0, -0.1],
"0.4167": [0, 0, -0.1],
"0.5": [0, 0, 0]
}
"mouth_closed_smile": {
"position": [0, 0, 0.2]
},
"spike_head_left": {
"rotation": {
"0.0": [0, 0, "-10+math.sin(q.anim_time*90*6+45)*8"],
"0.1667": [0, 0, "-10+math.sin(q.anim_time*90*6+45)*8"],
"0.3333": [0, 0, "-20+math.sin(q.anim_time*90*3+95)*8"],
"0.5833": [0, 0, "-20+math.sin(q.anim_time*90*3+95)*8"],
"0.8333": [0, 0, 0]
}
"mouth_closed_neutral": {
"position": [0, 0, -0.2]
},
"spike_head_right": {
"rotation": {
"0.0": [0, 0, "10-math.sin(q.anim_time*90*6+45)*8"],
"0.1667": [0, 0, "10-math.sin(q.anim_time*90*6+45)*8"],
"0.3333": [0, 0, "20-math.sin(q.anim_time*90*3+95)*8"],
"0.5833": [0, 0, "20-math.sin(q.anim_time*90*3+95)*8"],
"0.9167": [0, 0, 0]
}
}
},
"sound_effects": {
"0.0833": {
"effect": "pokemon.chespin.cry"
"head_spikes_sharp": {
"scale": 0
}
}
}
@@ -1,6 +1,205 @@
{
"format_version": "1.8.0",
"animations": {
"animation.quilladin.blink": {
"animation_length": 0.1667,
"bones": {
"eye_left": {
"position": {
"0.0": [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.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eyelid_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"eye_right": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_ditto": {
"position": {
"0.0": [0, 0, 0.1],
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"eyes_blink_ditto": {
"position": {
"0.0": [0, 0, -0.1],
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
}
},
"animation.quilladin.cry": {
"animation_length": 1.5,
"bones": {
"torso2": {
"rotation": {
"0.0": [0, 0, 0],
"0.0833": {
"pre": [2, 0, 0],
"post": [2, 0, 0],
"lerp_mode": "catmullrom"
},
"0.2917": {
"post": [-2.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5833": {
"post": [-2.5, 0, 0],
"lerp_mode": "catmullrom"
},
"1.0833": {
"post": [1, 0, 0],
"lerp_mode": "catmullrom"
},
"1.4167": [0, 0, 0]
}
},
"mouth_closed_smile": {
"position": {
"0.0": [0, 0, 0],
"0.1667": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.3333": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"mouth_open_smile": {
"position": {
"0.0": [0, 0, 0],
"0.375": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"1.0417": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"mouth_open_o": {
"position": {
"0.0": [0, 0, 0],
"0.1667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"0.375": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
"1.0417": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"1.3333": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
},
"mouth_ditto": {
"position": {
"0.0": [0, 0, 0],
"0.1667": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
"1.3333": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
}
},
"mouth_open_ditto": {
"position": {
"0.0": [0, 0, 0],
"0.1667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
"1.3333": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
}
}
},
"sound_effects": {
"0.1667": {
"effect": "pokemon.quilladin.cry"
}
}
},
"animation.quilladin.ditto_face": {
"loop": true,
"bones": {
"face": {
"scale": 0
},
"face_ditto": {
"position": [0, 0, -0.1]
}
}
},
"animation.quilladin.pose": {
"loop": true,
"bones": {
"body": {
"position": [0, 2, 0]
},
"torso": {
"rotation": [-27.43745, 1.50179, 4.76968]
},
"tail": {
"rotation": [-15.02687, 1.91486, -1.60757],
"position": [0, -1, 0]
},
"tail2": {
"rotation": [7.56397, 7.43547, 0.98448]
},
"tail3": {
"rotation": [10.08453, 7.38542, 1.30962]
},
"torso2": {
"rotation": [7.49294, -0.32621, -2.52136]
},
"pupil_left": {
"position": [0.1, 0.1, 0]
},
"mouth_closed_smile": {
"position": [0, 0, 0.1]
},
"mouth_open_smile": {
"position": [0, 0, -0.1]
},
"hair": {
"rotation": [-27.5, 0, 0]
},
"arm_left": {
"rotation": [-73.6118, 1.34454, -14.51378]
},
"finger_front_left": {
"rotation": [0, 12.5, 0]
},
"finger_back_left": {
"rotation": [0, -15, 0]
},
"finger_thumb_left": {
"rotation": [0, -20, 0]
},
"arm_right": {
"rotation": [-73.51921, -6.14051, 13.09658]
},
"finger_front_right": {
"rotation": [0, -5, 0]
},
"finger_back_right": {
"rotation": [0, 10, 0]
},
"finger_thumb_right": {
"rotation": [0, 25, 0]
},
"leg_left": {
"rotation": [-97.62567, -25.77605, 9.45845],
"position": [1.1, 1.65, -5]
},
"leg_left2": {
"rotation": [17.5, 0, 0]
},
"leg_right": {
"rotation": [-66.51084, 28.74673, 11.67459],
"position": [0, 2, -4]
},
"leg_right2": {
"rotation": [15, 0, 0]
},
"pupil_right": {
"position": [0, 0.1, 0]
}
}
},
"animation.quilladin.ground_idle": {
"loop": true,
"bones": {
@@ -197,166 +396,18 @@
},
"foot_right": {
"rotation": [15, 0, 0]
}
}
},
"animation.quilladin.blink": {
"animation_length": 0.16667,
"bones": {
"eyelid_right": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
},
"eyelid_left": {
"position": {
"0.0": [0, 0, -0.1],
"0.125": [0, 0, -0.1],
"0.1667": [0, 0, 0]
}
}
}
},
"animation.quilladin.cry": {
"animation_length": 1.5,
"bones": {
"neck": {
"rotation": {
"0.0": [0, 0, 0],
"0.25": [10, 0, 0],
"1.25": [10, 0, 0],
"1.5": [0, 0, 0]
}
"eye_left": {
"position": [0, 0, 0.1]
},
"mouth": {
"position": {
"0.0": [0, 0, 0],
"0.25": [0, -2, 0],
"1.25": [0, -2, 0],
"1.5": [0, 0, 0]
}
"eye_right": {
"position": [0, 0, 0.1]
},
"mouth2": {
"position": {
"0.0": [0, 0, 0],
"0.25": [0, -5, 0],
"1.25": [0, -5, 0],
"1.5": [0, 0, 0]
}
"mouth_closed_smile": {
"position": [0, 0, 0.1]
},
"jaw": {
"position": {
"0.0": [0, 0, 0],
"0.25": [0, -3, 0],
"1.25": [0, -3, 0],
"1.5": [0, 0, 0]
}
},
"head": {
"rotation": {
"0.0": [0, 0, 0],
"0.25": [-15, 0, 0],
"1.25": [-15, 0, 0],
"1.5": [0, 0, 0]
}
},
"head2": {
"rotation": {
"0.0": [0, 0, 0],
"0.25": [-15, 0, 0],
"1.25": [-15, 0, 0],
"1.5": [0, 0, 0]
}
},
"mouth_closed2": {
"position": {
"0.25": [0, 0, -0.1],
"0.3333": [0, 0, 0],
"1.1667": [0, 0, 0],
"1.25": [0, 0, -0.1]
}
},
"mouth_open2": {
"position": {
"0.0": [0, 0, 0.1],
"0.25": [0, 0, 0],
"1.25": [0, 0, 0],
"1.5": [0, 0, 0.1]
}
},
"head3": {
"rotation": {
"0.0": [0, 0, 0],
"0.25": [-15, 0, 0],
"1.25": [-15, 0, 0],
"1.5": [0, 0, 0]
}
},
"mouth_closed3": {
"position": {
"0.25": [0, 0, -0.1],
"0.3333": [0, 0, 0],
"1.1667": [0, 0, 0],
"1.25": [0, 0, -0.1]
}
},
"mouth_open3": {
"position": {
"0.0": [0, 0, 0.1],
"0.25": [0, 0, 0],
"1.25": [0, 0, 0],
"1.5": [0, 0, 0.1]
}
},
"mouth_closed": {
"position": {
"0.25": [0, 0, 0],
"0.3333": [0, 0, 0.1],
"1.1667": [0, 0, 0.1],
"1.25": [0, 0, 0]
}
},
"mouth_open": {
"position": {
"0.0": [0, 0, 0],
"0.25": [0, 0, -0.1],
"1.25": [0, 0, -0.1],
"1.5": [0, 0, 0]
}
},
"torso": {
"rotation": {
"0.0": ["-5+math.sin(q.anim_time*90*6+45)*8", 0, 0],
"0.25": ["-5+math.sin(q.anim_time*90*6+45)*8", 0, 0],
"0.3333": ["-8.29+math.sin(q.anim_time*90*3+95)*6", 0, 0],
"1.0": ["-8.29+math.sin(q.anim_time*90*3)*2", 0, 0],
"1.5": [0, 0, 0]
}
},
"spike_left": {
"rotation": {
"0.0": [0, 0, "-10+math.sin(q.anim_time*90*6+45)*8"],
"0.25": [0, 0, "-10+math.sin(q.anim_time*90*6+45)*8"],
"0.3333": [0, 0, "-20+math.sin(q.anim_time*90*3+95)*8"],
"1.0": [0, 0, "-20+math.sin(q.anim_time*90*3+95)*8"],
"1.5": [0, 0, 0]
}
},
"spike_right": {
"rotation": {
"0.0": [0, 0, "10-math.sin(q.anim_time*90*6+45)*8"],
"0.25": [0, 0, "10-math.sin(q.anim_time*90*6+45)*8"],
"0.3333": [0, 0, "20-math.sin(q.anim_time*90*3+95)*8"],
"1.0": [0, 0, "20-math.sin(q.anim_time*90*3+95)*8"],
"1.5": [0, 0, 0]
}
}
},
"sound_effects": {
"0.1667": {
"effect": "pokemon.quilladin.cry"
"mouth_closed_neutral": {
"position": [0, 0, -0.1]
}
}
}

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