Compare commits

...
28 Commits
Author SHA1 Message Date
Paul e6fda6137e Teeny tiny changelog [skip-ci] 2026-01-31 10:47:13 +10:00
Paul afae39acc8 Missed a bit of changelog [skip-ci] 2026-01-31 09:21:40 +10:00
Paul 37264aff0f Changelog stuff and no snapshot 2026-01-31 09:17:43 +10:00
Paul 2b60e6de77 Merge remote-tracking branch 'origin/lang-updates' 2026-01-31 09:12:27 +10:00
Hiroku 4f29e7457c Merge branch 'feature/riding-scrape' into 'main'
scrape riding data and fix script

See merge request cable-mc/cobblemon!2141
2026-01-30 09:43:44 +00:00
Polymeta 04a6ab31f4 rescrape data
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2026-01-30 09:26:22 +00:00
Hiroku a2cdc847dd Merge branch 'packet-sync-error-fix' into 'main'
Fixed packet sync issue with pokemon interactions, added "chance" requirement type

Closes #1933 and #1938

See merge request cable-mc/cobblemon!2147
2026-01-30 03:04:14 +00:00
阿鱼andWeblate 0bca678f56 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (9061 of 9061 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/zh_Hans/
2026-01-30 02:59:44 +00:00
Paul 067c3607aa Tweak /pctake to check the PC's box count and use that for constraints 2026-01-30 12:20:17 +10:00
Hiroku 823c1f6444 Merge branch 'main' into 'main'
Fixes PcTake not respecting defaultBoxCount

See merge request cable-mc/cobblemon!2146
2026-01-30 02:18:38 +00:00
Paul bfc00635cd Fixed packet sync issue with pokemon interactions, added "chance" requirement type 2026-01-30 12:16:01 +10:00
Hiroku b2e5b85ac5 Merge branch 'Custom-Ball-Resources-updated' into 'main'
updated ball texture locations missing from last update

See merge request cable-mc/cobblemon!2145
2026-01-30 00:24:49 +00:00
阿鱼andWeblate 2c27476954 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.7% (9034 of 9061 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/zh_Hans/
2026-01-29 13:40:10 +00:00
Auristite aab78d84fc Fixes PcTake not respecting defaultBoxCount
Command is also missing lang option for "cobblemon.command.pctake.removed" (Removing Pokémon from self)
2026-01-29 04:46:25 +00:00
Zack the GhastandWeblate cb632c2a65 Translated using Weblate (Portuguese (Portugal))
Currently translated at 67.9% (6154 of 9061 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2026-01-29 01:28:38 +00:00
Dragonwhisper92 8d219f1338 updated ball texture locations 2026-01-28 23:45:08 +00:00
Zack the GhastandWeblate 1e6a4ed984 Translated using Weblate (Portuguese (Portugal))
Currently translated at 67.7% (6143 of 9061 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2026-01-28 21:10:25 +00:00
geumuandWeblate 64240c31fc Translated using Weblate (Korean)
Currently translated at 100.0% (9061 of 9061 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/ko/
2026-01-28 17:35:35 +00:00
Zack the GhastandWeblate d2222c3858 Translated using Weblate (Portuguese (Portugal))
Currently translated at 67.6% (6129 of 9061 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2026-01-28 14:44:02 +00:00
geumuandWeblate c7f31c3e14 Translated using Weblate (Korean)
Currently translated at 100.0% (9061 of 9061 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/ko/
2026-01-28 14:44:01 +00:00
Zack the GhastandWeblate 740e846b2d Translated using Weblate (Portuguese (Portugal))
Currently translated at 67.5% (6125 of 9061 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2026-01-28 08:26:35 +00:00
Zack the GhastandWeblate 06f9d60595 Translated using Weblate (Portuguese (Portugal))
Currently translated at 67.5% (6123 of 9061 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2026-01-27 04:12:54 +00:00
Zack the GhastandWeblate d54439ce14 Translated using Weblate (Portuguese (Portugal))
Currently translated at 67.3% (6103 of 9061 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2026-01-26 02:31:37 +00:00
TeggyandWeblate 32ee4bb72a Translated using Weblate (Spanish)
Currently translated at 84.3% (7644 of 9061 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/es/
2026-01-25 13:02:37 +00:00
Polymeta e7d2a46cc0 Bumping snapshot version 2026-01-25 06:57:31 +00:00
YasitoandWeblate 3ee94ec076 Translated using Weblate (French)
Currently translated at 100.0% (9061 of 9061 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/fr/
2026-01-25 03:06:53 +00:00
YasitoandWeblate 589293abc4 Translated using Weblate (French (Canada))
Currently translated at 100.0% (9061 of 9061 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/fr_CA/
2026-01-25 03:06:49 +00:00
Paul 279865cc7c Resnaps your shot 2026-01-25 11:53:29 +10:00
99 changed files with 2122 additions and 1259 deletions
+10 -124
View File
@@ -1,137 +1,23 @@
# Changelog
## [1.7.2 (January 25th, 2026)](#1-7-2)
### Additions
- Added Saccharine wood furniture for Adorn.
- Added the Partner Mark, which party Pokémon have a very small chance to earn as the player walks, provided they have enough friendship.
- Added decorative block models for existing items: Potion, Super Potion, Hyper Potion, Max Potion, Full Restore, Antidote, Awakening, Burn Heal, Ice Heal, Paralyze Heal, Full Heal, Ether, Elixir, Max Ether, Max Elixir, X Accuracy, X Attack, X Defence, X Special Attack, X Special Defence, X Speed, Dire Hit, Guard Spec, Weakness Policy, Blunder Policy, Cleanse Tag, and Spell Tag.
- Added decorative sign blocks called Plaques.
- Added ride style labels to ride stats in Pokédex, as well as ride style icons in the summary GUI.
- Added more seasonings for sinister tea:
- Mental Herb - Mental Restoration I for 10 seconds, which staves off Insomnia.
- White Herb - Removes negative effects.
- Milk, Moomoo Milk - Removes effects.
- Added dispenser support for:
- Applying a Honey Bottle to Saccharine Logs.
- Washing honey off of Saccharine Slathered Logs.
- Applying and removing honey on Saccharine Leaves.
- Added riding statistics: `Distance by Pokémon on Land`, `Distance by Pokémon in Air` and `Distance by Pokémon in Liquid`.
### New rideable Pokémon
- Honchkrow
- Mantine
### Pokémon Added
#### Gen 5
- Throh
- Sawk
#### Gen 6
- Litleo
- Pyroar
- Spritzee
- Aromatisse
- Swirlix
- Slurpuff
### Model updates for the following Pokémon
- Falinks
- Cottonee
- Whimsicott
- Ferroseed
- Ferrothorn
- Chingling
- Chimecho
### Animation updates for the following Pokémon
- Mantine (ride animations)
- Flygon (ride jump animation)
- Honchkrow (ride animations)
- Croagunk
- Toxicroak
### Changes
- Added a new config option, `Enable In-Flight Dismounting` (default: off), which lets you dismount while riding a Pokémon in the air. This is the textbook definition of caveat emptor.
- Ride sounds have been separated into stereo for passengers and mono for other players. Riding will now sound more spacious.
- Battle AI now uses a smarter threshold for switching, reducing unnecessary switches.
- AI will always use the most damaging move when at low HP and when it is not switching, improving endgame decision-making.
- Items given from interacting with Saccharine Leaves are placed in the active hotbar slot if possible.
- Added `label` as an alternate key to the `tag` property.
## [1.7.3 (January 31st, 2026)](#1-7-3)
### Fixes
- Fixed crashing when viewing another player in spectator mode. Some said this was reason to release this update a month ago. They were probably right.
- Fixed crashing when sending a Pokémon out after editing its form.
- Fixed all Pokémon being saved to chunks and never despawning even when they should be.
- Fixed Poké Snacks crashing if there was no available spawn.
- Fixed Poké Snack / Bait effects so that EV Yield, Type, and Egg Group filters now all apply together when weighting spawns. And you thought you were going crazy.
- Fixed Furfrou not being trimmable on NeoForge specifically.
- Fixed honey from Saccharine Leaves being harvestable at less than the max age.
- Fixed possible error on world generation when Combee are placed in naturally generated bee nests.
- Fixed Galarian Weezing crashing the world if it decides to blink the wrong way. The same could happen to you!
- Fixed Galarian Mr. Mime incorrectly being rideable. Some would argue that regular Mr. Mime shouldn't be rideable, but that would make them wrong.
- Fixed missing apricorn textures for Adorn blocks.
- Fixed Apricorn block model rotation for counters/sinks/cupboards/drawers to match that of most recent version of Adorn.
- Fixed item interaction sometimes not working properly when playing on servers.
- Fixed Mint Leaves not being usable for filling the Resurrection Machine.
- Fixed Super Potion recipes incorrectly using Hondew Berry instead of Aguav Berry. They look similar, to be fair.
- Fixed Wishiwashi not schooling properly.
- Fixed battle item duplication issue. How did it work? Wouldn't you like to know, weather boy.
- Fixed the ordering of Aprijuice's riding stat boosts so they always have the same order.
- Fixed the movesets of certain Pokémon being incorrectly sanitized upon reload, causing some forms to keep losing moves.
- Fixed selected leading Pokémon in battle not being used when levels are set.
- Fixed the bottom half of pasture blocks having an incorrect hit-box when facing north or south.
- Fixed gimmicks not being usable in double and triple battles.
- Fixed gimmick buttons showing when already used in the same turn in double and triple battles.
- Fixed mochi items consuming two items at a time.
- Fixed Fresh Start Mochi's EV reset not syncing health changes properly.
- Fixed Pokémon spawn influences not being specific to regional forms.
- Fixed memory leak from battles not being cleaned up after ending.
- Fixed orientation not getting reset after crashing while flying and getting back on the Pokémon.
- Fixed shiny Pokémon not respecting the `silent` flag on spawn.
- Fixed 'Plain' prefix not being applied to all low-quality Aprijuice.
- Fixed Pokémon interactions not playing sound effects when the volume was not specified.
- Fixed Pokémon interaction cooldowns taking longer than intended when the Pokémon was in the player’s party.
- Fixed Pokémon interactions occasionally crashing the game when spamming an interaction with a 0 cooldown.
- Fixed Pokémon fullness decreasing more than intended when the Pokémon was pastured.
- Fixed Scraggy line, Milcery line, and Morpeko spawning on unnatural blocks.
- Fixed invulnerability-bypassed damage being resisted by invulnerable NPC entities.
- Fixed Fabric network packets not being handled immediately, fixing incompatibilities with Supplementaries, Prometheus, Sleep Tight, and others.
- Fixed killer not being set early enough on a wild Pokémon entity from `WinInstruction`.
- Fixed requirements such as `biomeCondition` crashing the game when used to define Pokémon interactions.
- Fixed an issue that prevented registering custom dispenser behaviours (no longer overrides vanilla behaviour).
- Fixed an issue navigation that prevented Combee from pathing into and out of Saccharine Leaves.
- Added Saccharine Boats and Saccharine Boat with Chests to relevant boat tags.
- Fixed Soothe Bell not being properly tagged as a held item.
- Fixed `/calculateseatpositions` expecting a locator format that even we don't use. It needs an underscore after "seat".
- Fixed the `run_script` Molang function to not fail if the environment's context is null.
- Fixed the Molang functions `date_local_time`, `date_of`, `date_is_after` to use the correct date format.
- Fixed mounted Pokémon not playing sounds.
- Fixed players failing to join servers randomly.
- Fixed some Pokémon having no stamina for flying.
- Fixed `/pctake` not respecting the actual size of the PC.
### Developer
- Changed the `owner` parameter in the `OwnerQueryRequirement` interface from `ServerPlayer` to `Player`. This method is now also called on the client to verify whether a Pokémon interaction succeeded, so make sure to update your implementations to handle both server and client contexts.
- Added the `pnx` to the `BattleFaintedEvent` and `FormeChangeEvent`.
- Added register methods for custom instructions to `ShowdownInterpreter`.
- Changed callback operations in `BattlePokemon` to allow multiple callbacks and be mutable.
- Added `display_name`, `description`, and `max_pp` functions to the `MoveTemplate` struct.
- Changed the implementations of `AIBattleActor` to be open classes to allow extension.
- Changed the resource location of Poké Ball icons in the GUI to use the balls namespace instead of Cobblemon's, allowing mods to properly use their own namespace for these textures.
- Poké Ball GUI textures now respect the ball's namespace, enabling proper texture loading for custom balls from other mods.
### Molang & Datapacks
- Ride sounds can now be set as exclusive to passengers.
- Ride sounds no longer play when submerged unless specified with a new setting.
- Exception handling has been added to `run_molang`, resolving some crashes caused by malformed MoLang expressions.
- Added the `create_itemstack`, `has_inventory_space`, `set_inventory_slot`, and `give_item` MoLang functions for item and inventory utility.
- Added the `get_move_from_id` MoLang function for general move info queries without requiring a Moveset object to access.
- Added support for optional message variants in battle activate instructions for more context-specific battle text.
- Example: `this.add('-activate', pokemon, 'ability: example', '[msg]message1');` will parse to lang key `cobblemon.battle.activate.example.message1`.
- Added a `chance` requirement type for Pokémon interactions.
### Localization
- Updated translations for:
- French
- Canadian French
- Simplified Chinese
- Ukrainian
- Brazilian Portuguese
- Spanish
- Korean
- Japanese
- Portuguese
- Simplified Chinese
- Spanish
+137
View File
@@ -0,0 +1,137 @@
# Changelog
## [1.7.2 (January 25th, 2026)](#1-7-2)
### Additions
- Added Saccharine wood furniture for Adorn.
- Added the Partner Mark, which party Pokémon have a very small chance to earn as the player walks, provided they have enough friendship.
- Added decorative block models for existing items: Potion, Super Potion, Hyper Potion, Max Potion, Full Restore, Antidote, Awakening, Burn Heal, Ice Heal, Paralyze Heal, Full Heal, Ether, Elixir, Max Ether, Max Elixir, X Accuracy, X Attack, X Defence, X Special Attack, X Special Defence, X Speed, Dire Hit, Guard Spec, Weakness Policy, Blunder Policy, Cleanse Tag, and Spell Tag.
- Added decorative sign blocks called Plaques.
- Added ride style labels to ride stats in Pokédex, as well as ride style icons in the summary GUI.
- Added more seasonings for sinister tea:
- Mental Herb - Mental Restoration I for 10 seconds, which staves off Insomnia.
- White Herb - Removes negative effects.
- Milk, Moomoo Milk - Removes effects.
- Added dispenser support for:
- Applying a Honey Bottle to Saccharine Logs.
- Washing honey off of Saccharine Slathered Logs.
- Applying and removing honey on Saccharine Leaves.
- Added riding statistics: `Distance by Pokémon on Land`, `Distance by Pokémon in Air` and `Distance by Pokémon in Liquid`.
### New rideable Pokémon
- Honchkrow
- Mantine
### Pokémon Added
#### Gen 5
- Throh
- Sawk
#### Gen 6
- Litleo
- Pyroar
- Spritzee
- Aromatisse
- Swirlix
- Slurpuff
### Model updates for the following Pokémon
- Falinks
- Cottonee
- Whimsicott
- Ferroseed
- Ferrothorn
- Chingling
- Chimecho
### Animation updates for the following Pokémon
- Mantine (ride animations)
- Flygon (ride jump animation)
- Honchkrow (ride animations)
- Croagunk
- Toxicroak
### Changes
- Added a new config option, `Enable In-Flight Dismounting` (default: off), which lets you dismount while riding a Pokémon in the air. This is the textbook definition of caveat emptor.
- Ride sounds have been separated into stereo for passengers and mono for other players. Riding will now sound more spacious.
- Battle AI now uses a smarter threshold for switching, reducing unnecessary switches.
- AI will always use the most damaging move when at low HP and when it is not switching, improving endgame decision-making.
- Items given from interacting with Saccharine Leaves are placed in the active hotbar slot if possible.
- Added `label` as an alternate key to the `tag` property.
### Fixes
- Fixed crashing when viewing another player in spectator mode. Some said this was reason to release this update a month ago. They were probably right.
- Fixed crashing when sending a Pokémon out after editing its form.
- Fixed all Pokémon being saved to chunks and never despawning even when they should be.
- Fixed Poké Snacks crashing if there was no available spawn.
- Fixed Poké Snack / Bait effects so that EV Yield, Type, and Egg Group filters now all apply together when weighting spawns. And you thought you were going crazy.
- Fixed Furfrou not being trimmable on NeoForge specifically.
- Fixed honey from Saccharine Leaves being harvestable at less than the max age.
- Fixed possible error on world generation when Combee are placed in naturally generated bee nests.
- Fixed Galarian Weezing crashing the world if it decides to blink the wrong way. The same could happen to you!
- Fixed Galarian Mr. Mime incorrectly being rideable. Some would argue that regular Mr. Mime shouldn't be rideable, but that would make them wrong.
- Fixed missing apricorn textures for Adorn blocks.
- Fixed Apricorn block model rotation for counters/sinks/cupboards/drawers to match that of most recent version of Adorn.
- Fixed item interaction sometimes not working properly when playing on servers.
- Fixed Mint Leaves not being usable for filling the Resurrection Machine.
- Fixed Super Potion recipes incorrectly using Hondew Berry instead of Aguav Berry. They look similar, to be fair.
- Fixed Wishiwashi not schooling properly.
- Fixed battle item duplication issue. How did it work? Wouldn't you like to know, weather boy.
- Fixed the ordering of Aprijuice's riding stat boosts so they always have the same order.
- Fixed the movesets of certain Pokémon being incorrectly sanitized upon reload, causing some forms to keep losing moves.
- Fixed selected leading Pokémon in battle not being used when levels are set.
- Fixed the bottom half of pasture blocks having an incorrect hit-box when facing north or south.
- Fixed gimmicks not being usable in double and triple battles.
- Fixed gimmick buttons showing when already used in the same turn in double and triple battles.
- Fixed mochi items consuming two items at a time.
- Fixed Fresh Start Mochi's EV reset not syncing health changes properly.
- Fixed Pokémon spawn influences not being specific to regional forms.
- Fixed memory leak from battles not being cleaned up after ending.
- Fixed orientation not getting reset after crashing while flying and getting back on the Pokémon.
- Fixed shiny Pokémon not respecting the `silent` flag on spawn.
- Fixed 'Plain' prefix not being applied to all low-quality Aprijuice.
- Fixed Pokémon interactions not playing sound effects when the volume was not specified.
- Fixed Pokémon interaction cooldowns taking longer than intended when the Pokémon was in the player’s party.
- Fixed Pokémon interactions occasionally crashing the game when spamming an interaction with a 0 cooldown.
- Fixed Pokémon fullness decreasing more than intended when the Pokémon was pastured.
- Fixed Scraggy line, Milcery line, and Morpeko spawning on unnatural blocks.
- Fixed invulnerability-bypassed damage being resisted by invulnerable NPC entities.
- Fixed Fabric network packets not being handled immediately, fixing incompatibilities with Supplementaries, Prometheus, Sleep Tight, and others.
- Fixed killer not being set early enough on a wild Pokémon entity from `WinInstruction`.
- Fixed requirements such as `biomeCondition` crashing the game when used to define Pokémon interactions.
- Fixed an issue that prevented registering custom dispenser behaviours (no longer overrides vanilla behaviour).
- Fixed an issue navigation that prevented Combee from pathing into and out of Saccharine Leaves.
- Added Saccharine Boats and Saccharine Boat with Chests to relevant boat tags.
- Fixed Soothe Bell not being properly tagged as a held item.
- Fixed `/calculateseatpositions` expecting a locator format that even we don't use. It needs an underscore after "seat".
- Fixed the `run_script` Molang function to not fail if the environment's context is null.
- Fixed the Molang functions `date_local_time`, `date_of`, `date_is_after` to use the correct date format.
### Developer
- Changed the `owner` parameter in the `OwnerQueryRequirement` interface from `ServerPlayer` to `Player`. This method is now also called on the client to verify whether a Pokémon interaction succeeded, so make sure to update your implementations to handle both server and client contexts.
- Added the `pnx` to the `BattleFaintedEvent` and `FormeChangeEvent`.
- Added register methods for custom instructions to `ShowdownInterpreter`.
- Changed callback operations in `BattlePokemon` to allow multiple callbacks and be mutable.
- Added `display_name`, `description`, and `max_pp` functions to the `MoveTemplate` struct.
- Changed the implementations of `AIBattleActor` to be open classes to allow extension.
- Changed the resource location of Poké Ball icons in the GUI to use the balls namespace instead of Cobblemon's, allowing mods to properly use their own namespace for these textures.
### Molang & Datapacks
- Ride sounds can now be set as exclusive to passengers.
- Ride sounds no longer play when submerged unless specified with a new setting.
- Exception handling has been added to `run_molang`, resolving some crashes caused by malformed MoLang expressions.
- Added the `create_itemstack`, `has_inventory_space`, `set_inventory_slot`, and `give_item` MoLang functions for item and inventory utility.
- Added the `get_move_from_id` MoLang function for general move info queries without requiring a Moveset object to access.
- Added support for optional message variants in battle activate instructions for more context-specific battle text.
- Example: `this.add('-activate', pokemon, 'ability: example', '[msg]message1');` will parse to lang key `cobblemon.battle.activate.example.message1`.
### Localization
- Updated translations for:
- French
- Canadian French
- Simplified Chinese
- Ukrainian
- Brazilian Portuguese
- Spanish
- Korean
- Japanese
@@ -165,7 +165,7 @@ object Cobblemon {
val statistics: CobblemonStats = CobblemonStats
@JvmStatic
val builtinPacks = listOf<CobblemonPack>(
val builtinPacks = listOf(
CobblemonPack(id = "adorncompatibility", name = "Adorn Compatibility", packType = PackType.CLIENT_RESOURCES, activationBehaviour = ResourcePackActivationBehaviour.ALWAYS_ENABLED, neededMods = setOf("adorn")),
CobblemonPack(id = "gyaradosjump", name = "Gyarados Jump Patterns", packType = PackType.CLIENT_RESOURCES, activationBehaviour = ResourcePackActivationBehaviour.DEFAULT_ENABLED),
CobblemonPack(id = "regionbiasforms", name = "Region Bias Forms", packType = PackType.CLIENT_RESOURCES, activationBehaviour = ResourcePackActivationBehaviour.DEFAULT_ENABLED),
@@ -21,12 +21,15 @@ import com.cobblemon.mod.common.client.net.callback.partymove.OpenPartyMoveCallb
import com.cobblemon.mod.common.client.net.cooking.ToggleCookingPotLidHandler
import com.cobblemon.mod.common.client.net.data.CobblemonMechanicsSyncHandler
import com.cobblemon.mod.common.client.net.data.DataRegistrySyncPacketHandler
import com.cobblemon.mod.common.client.net.data.PokemonInteractionsSyncHandler
import com.cobblemon.mod.common.client.net.data.RideSettingsSyncHandler
import com.cobblemon.mod.common.client.net.debug.OpenRidingStatsDebugGUIHandler
import com.cobblemon.mod.common.client.net.dialogue.DialogueClosedHandler
import com.cobblemon.mod.common.client.net.dialogue.DialogueOpenedHandler
import com.cobblemon.mod.common.client.net.effect.*
import com.cobblemon.mod.common.client.net.effect.PokeSnackBlockParticlesHandler
import com.cobblemon.mod.common.client.net.effect.RunPosableMoLangHandler
import com.cobblemon.mod.common.client.net.effect.SaccharineLogBlockParticlesHandler
import com.cobblemon.mod.common.client.net.effect.SpawnSnowstormEntityParticleHandler
import com.cobblemon.mod.common.client.net.effect.SpawnSnowstormParticleHandler
import com.cobblemon.mod.common.client.net.gui.ExpGainedDataPacketHandler
import com.cobblemon.mod.common.client.net.gui.InteractPokemonUIPacketHandler
import com.cobblemon.mod.common.client.net.gui.PokedexUIPacketHandler
@@ -34,7 +37,11 @@ import com.cobblemon.mod.common.client.net.gui.SummaryUIPacketHandler
import com.cobblemon.mod.common.client.net.npc.CloseNPCEditorHandler
import com.cobblemon.mod.common.client.net.npc.OpenNPCEditorHandler
import com.cobblemon.mod.common.client.net.orientation.ClientboundUpdateOrientationHandler
import com.cobblemon.mod.common.client.net.pasture.*
import com.cobblemon.mod.common.client.net.pasture.ClosePastureHandler
import com.cobblemon.mod.common.client.net.pasture.OpenPastureHandler
import com.cobblemon.mod.common.client.net.pasture.PokemonPasturedHandler
import com.cobblemon.mod.common.client.net.pasture.PokemonUnpasturedHandler
import com.cobblemon.mod.common.client.net.pasture.UpdatePastureConflictFlagHandler
import com.cobblemon.mod.common.client.net.pokedex.ServerConfirmedRegisterHandler
import com.cobblemon.mod.common.client.net.pokemon.update.ClientboundUpdateRidingStateHandler
import com.cobblemon.mod.common.client.net.pokemon.update.PokemonUpdatePacketHandler
@@ -52,7 +59,14 @@ import com.cobblemon.mod.common.client.net.storage.party.SetPartyPokemonHandler
import com.cobblemon.mod.common.client.net.storage.party.SetPartyReferenceHandler
import com.cobblemon.mod.common.client.net.storage.pc.*
import com.cobblemon.mod.common.client.net.toast.ToastPacketHandler
import com.cobblemon.mod.common.client.net.trade.*
import com.cobblemon.mod.common.client.net.trade.TradeAcceptanceChangedHandler
import com.cobblemon.mod.common.client.net.trade.TradeCancelledHandler
import com.cobblemon.mod.common.client.net.trade.TradeCompletedHandler
import com.cobblemon.mod.common.client.net.trade.TradeOfferExpiredHandler
import com.cobblemon.mod.common.client.net.trade.TradeOfferNotificationHandler
import com.cobblemon.mod.common.client.net.trade.TradeProcessStartedHandler
import com.cobblemon.mod.common.client.net.trade.TradeStartedHandler
import com.cobblemon.mod.common.client.net.trade.TradeUpdatedHandler
import com.cobblemon.mod.common.net.PacketRegisterInfo
import com.cobblemon.mod.common.net.messages.client.CalculateSeatPositionsPacket
import com.cobblemon.mod.common.net.messages.client.OpenBehaviourEditorPacket
@@ -69,12 +83,20 @@ import com.cobblemon.mod.common.net.messages.client.data.*
import com.cobblemon.mod.common.net.messages.client.debug.RequestOpenRidingStatsDebugGUIPacket
import com.cobblemon.mod.common.net.messages.client.dialogue.DialogueClosedPacket
import com.cobblemon.mod.common.net.messages.client.dialogue.DialogueOpenedPacket
import com.cobblemon.mod.common.net.messages.client.effect.*
import com.cobblemon.mod.common.net.messages.client.effect.PokeSnackBlockParticlesPacket
import com.cobblemon.mod.common.net.messages.client.effect.RunPosableMoLangPacket
import com.cobblemon.mod.common.net.messages.client.effect.SaccharineLogBlockParticlesPacket
import com.cobblemon.mod.common.net.messages.client.effect.SpawnSnowstormEntityParticlePacket
import com.cobblemon.mod.common.net.messages.client.effect.SpawnSnowstormParticlePacket
import com.cobblemon.mod.common.net.messages.client.npc.CloseNPCEditorPacket
import com.cobblemon.mod.common.net.messages.client.npc.OpenNPCEditorPacket
import com.cobblemon.mod.common.net.messages.client.orientation.ClientboundUpdateDriverInputPacket
import com.cobblemon.mod.common.net.messages.client.orientation.ClientboundUpdateOrientationPacket
import com.cobblemon.mod.common.net.messages.client.pasture.*
import com.cobblemon.mod.common.net.messages.client.pasture.ClosePasturePacket
import com.cobblemon.mod.common.net.messages.client.pasture.OpenPasturePacket
import com.cobblemon.mod.common.net.messages.client.pasture.PokemonPasturedPacket
import com.cobblemon.mod.common.net.messages.client.pasture.PokemonUnpasturedPacket
import com.cobblemon.mod.common.net.messages.client.pasture.UpdatePastureConflictFlagPacket
import com.cobblemon.mod.common.net.messages.client.pokedex.ServerConfirmedRegisterPacket
import com.cobblemon.mod.common.net.messages.client.pokemon.update.*
import com.cobblemon.mod.common.net.messages.client.pokemon.update.evolution.AddEvolutionPacket
@@ -94,19 +116,43 @@ import com.cobblemon.mod.common.net.messages.client.storage.party.InitializePart
import com.cobblemon.mod.common.net.messages.client.storage.party.MoveClientPartyPokemonPacket
import com.cobblemon.mod.common.net.messages.client.storage.party.SetPartyPokemonPacket
import com.cobblemon.mod.common.net.messages.client.storage.party.SetPartyReferencePacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.*
import com.cobblemon.mod.common.net.messages.client.storage.pc.ClosePCPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.InitializePCPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.MoveClientPCPokemonPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.OpenPCPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.RenamePCBoxPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.SetPCBoxPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.SetPCPokemonPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.wallpaper.ChangePCBoxWallpaperPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.wallpaper.RequestPCBoxWallpapersPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.wallpaper.SetPCBoxWallpapersPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.wallpaper.UnlockPCBoxWallpaperPacket
import com.cobblemon.mod.common.net.messages.client.toast.ToastPacket
import com.cobblemon.mod.common.net.messages.client.trade.*
import com.cobblemon.mod.common.net.messages.client.trade.TradeAcceptanceChangedPacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeCancelledPacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeCompletedPacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeOfferExpiredPacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeOfferNotificationPacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeProcessStartedPacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeStartedPacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeUpdatedPacket
import com.cobblemon.mod.common.net.messages.client.ui.ExpGainedDataPacket
import com.cobblemon.mod.common.net.messages.client.ui.InteractPokemonUIPacket
import com.cobblemon.mod.common.net.messages.client.ui.PokedexUIPacket
import com.cobblemon.mod.common.net.messages.client.ui.SummaryUIPacket
import com.cobblemon.mod.common.net.messages.server.*
import com.cobblemon.mod.common.net.messages.server.battle.*
import com.cobblemon.mod.common.net.messages.server.BattleChallengePacket
import com.cobblemon.mod.common.net.messages.server.BattleChallengeResponsePacket
import com.cobblemon.mod.common.net.messages.server.BenchMovePacket
import com.cobblemon.mod.common.net.messages.server.RequestMoveSwapPacket
import com.cobblemon.mod.common.net.messages.server.RequestPlayerInteractionsPacket
import com.cobblemon.mod.common.net.messages.server.SelectStarterPacket
import com.cobblemon.mod.common.net.messages.server.SendOutPokemonPacket
import com.cobblemon.mod.common.net.messages.server.battle.BattleSelectActionsPacket
import com.cobblemon.mod.common.net.messages.server.battle.BattleTeamLeavePacket
import com.cobblemon.mod.common.net.messages.server.battle.BattleTeamRequestPacket
import com.cobblemon.mod.common.net.messages.server.battle.BattleTeamResponsePacket
import com.cobblemon.mod.common.net.messages.server.battle.RemoveSpectatorPacket
import com.cobblemon.mod.common.net.messages.server.battle.SpectateBattlePacket
import com.cobblemon.mod.common.net.messages.server.behaviour.DamageOnCollisionPacket
import com.cobblemon.mod.common.net.messages.server.behaviour.SetEntityBehaviourPacket
import com.cobblemon.mod.common.net.messages.server.block.AdjustBlockEntityViewerCountPacket
@@ -131,7 +177,11 @@ import com.cobblemon.mod.common.net.messages.server.pasture.UnpasturePokemonPack
import com.cobblemon.mod.common.net.messages.server.pokedex.scanner.FinishScanningPacket
import com.cobblemon.mod.common.net.messages.server.pokedex.scanner.StartScanningPacket
import com.cobblemon.mod.common.net.messages.server.pokemon.interact.InteractPokemonPacket
import com.cobblemon.mod.common.net.messages.server.pokemon.update.*
import com.cobblemon.mod.common.net.messages.server.pokemon.update.ServerboundUpdateRidingStatePacket
import com.cobblemon.mod.common.net.messages.server.pokemon.update.SetActiveMarkPacket
import com.cobblemon.mod.common.net.messages.server.pokemon.update.SetItemHiddenPacket
import com.cobblemon.mod.common.net.messages.server.pokemon.update.SetMarkingsPacket
import com.cobblemon.mod.common.net.messages.server.pokemon.update.SetNicknamePacket
import com.cobblemon.mod.common.net.messages.server.pokemon.update.evolution.AcceptEvolutionPacket
import com.cobblemon.mod.common.net.messages.server.riding.DismountPokemonPacket
import com.cobblemon.mod.common.net.messages.server.riding.ServerboundUpdateDriverInputPacket
@@ -142,11 +192,21 @@ import com.cobblemon.mod.common.net.messages.server.storage.party.MovePartyPokem
import com.cobblemon.mod.common.net.messages.server.storage.party.ReleasePartyPokemonPacket
import com.cobblemon.mod.common.net.messages.server.storage.party.SwapPartyPokemonPacket
import com.cobblemon.mod.common.net.messages.server.storage.pc.*
import com.cobblemon.mod.common.net.messages.server.trade.*
import com.cobblemon.mod.common.net.messages.server.trade.AcceptTradeRequestPacket
import com.cobblemon.mod.common.net.messages.server.trade.CancelTradePacket
import com.cobblemon.mod.common.net.messages.server.trade.ChangeTradeAcceptancePacket
import com.cobblemon.mod.common.net.messages.server.trade.OfferTradePacket
import com.cobblemon.mod.common.net.messages.server.trade.PerformTradePacket
import com.cobblemon.mod.common.net.messages.server.trade.UpdateTradeOfferPacket
import com.cobblemon.mod.common.net.serverhandling.ChallengeHandler
import com.cobblemon.mod.common.net.serverhandling.ChallengeResponseHandler
import com.cobblemon.mod.common.net.serverhandling.RequestInteractionsHandler
import com.cobblemon.mod.common.net.serverhandling.battle.*
import com.cobblemon.mod.common.net.serverhandling.battle.BattleSelectActionsHandler
import com.cobblemon.mod.common.net.serverhandling.battle.RemoveSpectatorHandler
import com.cobblemon.mod.common.net.serverhandling.battle.SpectateBattleHandler
import com.cobblemon.mod.common.net.serverhandling.battle.TeamLeaveHandler
import com.cobblemon.mod.common.net.serverhandling.battle.TeamRequestHandler
import com.cobblemon.mod.common.net.serverhandling.battle.TeamRequestResponseHandler
import com.cobblemon.mod.common.net.serverhandling.behaviour.DamageOnCollisionPacketHandler
import com.cobblemon.mod.common.net.serverhandling.behaviour.SetEntityBehaviourHandler
import com.cobblemon.mod.common.net.serverhandling.block.AdjustBlockEntityViewerCountHandler
@@ -172,7 +232,11 @@ import com.cobblemon.mod.common.net.serverhandling.pasture.UnpasturePokemonHandl
import com.cobblemon.mod.common.net.serverhandling.pokedex.scanner.FinishScanningHandler
import com.cobblemon.mod.common.net.serverhandling.pokedex.scanner.StartScanningHandler
import com.cobblemon.mod.common.net.serverhandling.pokemon.interact.InteractPokemonHandler
import com.cobblemon.mod.common.net.serverhandling.pokemon.update.*
import com.cobblemon.mod.common.net.serverhandling.pokemon.update.ServerboundUpdateRidingStateHandler
import com.cobblemon.mod.common.net.serverhandling.pokemon.update.SetActiveMarkHandler
import com.cobblemon.mod.common.net.serverhandling.pokemon.update.SetItemHiddenHandler
import com.cobblemon.mod.common.net.serverhandling.pokemon.update.SetMarkingsHandler
import com.cobblemon.mod.common.net.serverhandling.pokemon.update.SetNicknameHandler
import com.cobblemon.mod.common.net.serverhandling.riding.DismountPokemonPacketHandler
import com.cobblemon.mod.common.net.serverhandling.riding.DriverInputPacketHandler
import com.cobblemon.mod.common.net.serverhandling.riding.ServerboundUpdateRiderRotationHandler
@@ -186,7 +250,12 @@ import com.cobblemon.mod.common.net.serverhandling.storage.party.MovePartyPokemo
import com.cobblemon.mod.common.net.serverhandling.storage.party.ReleasePCPokemonHandler
import com.cobblemon.mod.common.net.serverhandling.storage.party.SwapPartyPokemonHandler
import com.cobblemon.mod.common.net.serverhandling.storage.pc.*
import com.cobblemon.mod.common.net.serverhandling.trade.*
import com.cobblemon.mod.common.net.serverhandling.trade.AcceptTradeRequestHandler
import com.cobblemon.mod.common.net.serverhandling.trade.CancelTradeHandler
import com.cobblemon.mod.common.net.serverhandling.trade.ChangeTradeAcceptanceHandler
import com.cobblemon.mod.common.net.serverhandling.trade.OfferTradeHandler
import com.cobblemon.mod.common.net.serverhandling.trade.PerformTradeHandler
import com.cobblemon.mod.common.net.serverhandling.trade.UpdateTradeOfferHandler
import com.cobblemon.mod.common.util.server
import net.minecraft.server.level.ServerPlayer
@@ -332,7 +401,7 @@ object CobblemonNetwork {
// Data registries
list.add(PacketRegisterInfo(AbilityRegistrySyncPacket.ID, AbilityRegistrySyncPacket::decode, DataRegistrySyncPacketHandler()))
list.add(PacketRegisterInfo(CobblemonMechanicsSyncPacket.ID, CobblemonMechanicsSyncPacket::decode, CobblemonMechanicsSyncHandler))
list.add(PacketRegisterInfo(PokemonInteractionsSyncPacket.ID, PokemonInteractionsSyncPacket::decode, PokemonInteractionsSyncHandler))
list.add(PacketRegisterInfo(PokemonInteractionsSyncPacket.ID, PokemonInteractionsSyncPacket::decode, DataRegistrySyncPacketHandler()))
list.add(PacketRegisterInfo(MovesRegistrySyncPacket.ID, MovesRegistrySyncPacket::decode, DataRegistrySyncPacketHandler()))
list.add(PacketRegisterInfo(BerryRegistrySyncPacket.ID, BerryRegistrySyncPacket::decode, DataRegistrySyncPacketHandler()))
list.add(PacketRegisterInfo(SpeciesRegistrySyncPacket.ID, SpeciesRegistrySyncPacket::decode, DataRegistrySyncPacketHandler()))
@@ -59,40 +59,32 @@ object PokemonInteractions : JsonDataRegistry<PokemonInteractionSet> {
.setPrettyPrinting()
.create()
val speciesInteractions = mutableListOf<PokemonInteractionSet>()
val generalInteractions = mutableListOf<PokemonInteractionSet>()
val interactions = mutableListOf<PokemonInteractionSet>()
override fun sync(player: ServerPlayer) {
PokemonInteractionsSyncPacket(
speciesInteractions,
generalInteractions,
).sendToPlayer(player)
PokemonInteractionsSyncPacket(interactions).sendToPlayer(player)
}
override fun reload(data: Map<ResourceLocation, PokemonInteractionSet>) {
speciesInteractions.clear()
generalInteractions.clear()
val split = data.entries.partition { it.value.requirements.any { requirement -> requirement is PokemonPropertiesRequirement && requirement.target.species != null } }
speciesInteractions.addAll(split.first.map {it.value})
generalInteractions.addAll(split.second.map {it.value})
Cobblemon.LOGGER.info("Loaded {} Pokémon interaction sets", data.size)
interactions.clear()
val split = data.entries
.partition {
it.value.requirements.any { requirement -> requirement is PokemonPropertiesRequirement && requirement.target.species != null }
}
// Put the species specific interactions first as they take priority
interactions.addAll(split.first.map {it.value})
interactions.addAll(split.second.map {it.value})
Cobblemon.LOGGER.info("Loaded {} Pokémon interaction sets", interactions.size)
}
fun findInteraction(pokemon: PokemonEntity): PokemonInteraction? {
val setCheck: (PokemonInteractionSet) -> Boolean = { it.requirements.all { req -> req.check(pokemon.pokemon) }}
val interactionCheck: (PokemonInteraction) -> Boolean = { it.requirements.all { req -> req.check(pokemon.pokemon) } && !pokemon.pokemon.isOnInteractionCooldown(it.grouping) }
// species-specific interactions take priority
val validInteractions = speciesInteractions
return interactions
.filter(setCheck)
.flatMap { it.interactions }
.filter(interactionCheck)
.toMutableList()
if (validInteractions.isEmpty()) { // if all species-specific interactions are absent/on cooldown, fallback to more generic ones
validInteractions.addAll(generalInteractions.filter(setCheck).flatMap { it.interactions }
.filter(interactionCheck)
)
}
return validInteractions.randomOrNull()
.firstOrNull(interactionCheck)
}
}
@@ -43,17 +43,9 @@ data class PokemonInteractionSet(
companion object {
fun decode(buffer: FriendlyByteBuf): PokemonInteractionSet {
val requirements = buffer.readList { it ->
CobblemonRequirementAdapter.decode(it)
}
val interactions = buffer.readList { it ->
PokemonInteraction.decode(it)
}
return PokemonInteractionSet(
requirements,
interactions,
)
val requirements = buffer.readList(CobblemonRequirementAdapter::decode)
val interactions = buffer.readList(PokemonInteraction::decode)
return PokemonInteractionSet(requirements, interactions)
}
}
}
@@ -40,6 +40,7 @@ import com.cobblemon.mod.common.util.asTranslated
import com.cobblemon.mod.common.util.cobblemonResource
import com.cobblemon.mod.common.util.isInventoryKeyPressed
import com.cobblemon.mod.common.util.lang
import com.cobblemon.mod.common.util.toAssetPath
import com.mojang.blaze3d.platform.InputConstants
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.GuiGraphics
@@ -463,7 +464,7 @@ class PCGUI(
)
// Poké Ball
val ballResource = cobblemonResource("textures/item/poke_balls/" + pokemon.caughtBall.name.path + ".png")
val ballResource = pokemon.caughtBall.name.toAssetPath("textures/item/poke_balls/", ".png")
blitk(
matrixStack = matrices,
texture = ballResource,
@@ -45,6 +45,7 @@ import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.cobblemonResource
import com.cobblemon.mod.common.util.isInventoryKeyPressed
import com.cobblemon.mod.common.util.lang
import com.cobblemon.mod.common.util.toAssetPath
import com.mojang.blaze3d.platform.InputConstants
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.GuiGraphics
@@ -558,7 +559,7 @@ class Summary private constructor(party: Collection<Pokemon?>, private val edita
}
// Poké Ball
val ballResource = cobblemonResource("textures/item/poke_balls/" + selectedPokemon.caughtBall.name.path + ".png")
val ballResource = selectedPokemon.caughtBall.name.toAssetPath("textures/item/poke_balls/", ".png")
blitk(
matrixStack = matrices,
texture = ballResource,
@@ -19,11 +19,11 @@ import com.cobblemon.mod.common.client.render.drawScaledText
import com.cobblemon.mod.common.net.messages.server.RequestMoveSwapPacket
import com.cobblemon.mod.common.util.cobblemonResource
import com.cobblemon.mod.common.util.lang
import java.math.RoundingMode
import java.text.DecimalFormat
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.GuiGraphics
import net.minecraft.network.chat.Component
import java.math.RoundingMode
import java.text.DecimalFormat
class MovesWidget(
pX: Int, pY: Int,
@@ -32,6 +32,7 @@ import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.asTranslated
import com.cobblemon.mod.common.util.cobblemonResource
import com.cobblemon.mod.common.util.lang
import com.cobblemon.mod.common.util.toAssetPath
import com.mojang.blaze3d.platform.InputConstants
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.GuiGraphics
@@ -584,7 +585,7 @@ class TradeGUI(
// Poké Ball
val nameXOffset = if (isOpposing) 75 else 0
val ballResource = cobblemonResource("textures/item/poke_balls/" + pokemon.caughtBall.name.path + ".png")
val ballResource = pokemon.caughtBall.name.toAssetPath("textures/item/poke_balls/", ".png")
blitk(
matrixStack = context.pose(),
texture = ballResource,
@@ -1,27 +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.net.data
import com.cobblemon.mod.common.api.interaction.PokemonInteractions
import com.cobblemon.mod.common.api.net.ClientNetworkPacketHandler
import com.cobblemon.mod.common.net.messages.client.data.PokemonInteractionsSyncPacket
import net.minecraft.client.Minecraft
object PokemonInteractionsSyncHandler : ClientNetworkPacketHandler<PokemonInteractionsSyncPacket> {
override fun handle(
packet: PokemonInteractionsSyncPacket,
client: Minecraft,
) {
PokemonInteractions.speciesInteractions.clear()
PokemonInteractions.speciesInteractions.addAll(packet.speciesInteractions)
PokemonInteractions.generalInteractions.clear()
PokemonInteractions.generalInteractions.addAll(packet.generalInteractions)
}
}
@@ -8,11 +8,11 @@
package com.cobblemon.mod.common.command
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.api.permission.CobblemonPermissions
import com.cobblemon.mod.common.api.storage.pc.PCPosition
import com.cobblemon.mod.common.api.storage.pc.POKEMON_PER_BOX
import com.cobblemon.mod.common.api.text.red
import com.cobblemon.mod.common.api.text.text
import com.cobblemon.mod.common.util.*
import com.mojang.brigadier.Command
import com.mojang.brigadier.CommandDispatcher
@@ -35,7 +35,7 @@ object PcTakeCommand {
.then(
Commands.argument("box", IntegerArgumentType.integer(1))
.then(
Commands.argument("slot", IntegerArgumentType.integer(1, 30))
Commands.argument("slot", IntegerArgumentType.integer(1, POKEMON_PER_BOX))
.executes(::execute)
)
)
@@ -60,8 +60,8 @@ object PcTakeCommand {
val slot = IntegerArgumentType.getInteger(context, "slot")
val pc = target.pc()
if (box > POKEMON_PER_BOX) {
context.source.sendFailure(commandLang("pctake.too_many_boxes", POKEMON_PER_BOX))
if (box > pc.boxes.size) {
context.source.sendFailure(commandLang("pctake.too_many_boxes", pc.boxes.size))
return 0
}
@@ -20,11 +20,12 @@ class BerryRegistrySyncPacket(berries: Collection<Berry>) : DataRegistrySyncPack
}
override val id = ID
override fun encodeEntry(buffer: RegistryFriendlyByteBuf, entry: Berry) {
entry.encode(buffer)
}
override fun decodeEntry(buffer: RegistryFriendlyByteBuf): Berry? = Berry.decode(buffer)
override fun decodeEntry(buffer: RegistryFriendlyByteBuf): Berry = Berry.decode(buffer)
override fun synchronizeDecoded(entries: Collection<Berry>) {
Berries.reload(entries.associateBy { it.identifier })
@@ -9,40 +9,30 @@
package com.cobblemon.mod.common.net.messages.client.data
import com.cobblemon.mod.common.api.interaction.PokemonInteractionSet
import com.cobblemon.mod.common.api.net.NetworkPacket
import com.cobblemon.mod.common.api.interaction.PokemonInteractions
import com.cobblemon.mod.common.util.cobblemonResource
import net.minecraft.network.RegistryFriendlyByteBuf
class PokemonInteractionsSyncPacket(
val speciesInteractions: List<PokemonInteractionSet>,
val generalInteractions: List<PokemonInteractionSet>,
) : NetworkPacket<PokemonInteractionsSyncPacket> {
entries: Collection<PokemonInteractionSet>,
) : DataRegistrySyncPacket<PokemonInteractionSet, PokemonInteractionsSyncPacket>(entries) {
override val id = ID
override fun encode(buffer: RegistryFriendlyByteBuf) {
buffer.writeCollection(speciesInteractions) { it, speciesInteraction ->
speciesInteraction.encode(it)
}
buffer.writeCollection(generalInteractions) { it, generalInteraction ->
generalInteraction.encode(it)
}
override fun encodeEntry(buffer: RegistryFriendlyByteBuf, entry: PokemonInteractionSet) {
entry.encode(buffer)
}
override fun decodeEntry(buffer: RegistryFriendlyByteBuf): PokemonInteractionSet {
return PokemonInteractionSet.decode(buffer)
}
override fun synchronizeDecoded(entries: Collection<PokemonInteractionSet>) {
PokemonInteractions.interactions.clear()
PokemonInteractions.interactions.addAll(entries)
}
companion object {
val ID = cobblemonResource("pokemon_interactions_sync")
fun decode(buffer: RegistryFriendlyByteBuf): PokemonInteractionsSyncPacket {
val speciesInteractions = buffer.readList { it ->
PokemonInteractionSet.decode(it)
}
val generalInteractions = buffer.readList { it ->
PokemonInteractionSet.decode(it)
}
return PokemonInteractionsSyncPacket(
speciesInteractions,
generalInteractions,
)
}
fun decode(buffer: RegistryFriendlyByteBuf): PokemonInteractionsSyncPacket = PokemonInteractionsSyncPacket(emptyList()).apply { decodeBuffer(buffer) }
}
}
@@ -67,6 +67,7 @@ object CobblemonRequirementAdapter : RequirementAdapter {
this.registerType(PropertyRangeRequirement.ADAPTER_VARIANT, PropertyRangeRequirement::class)
this.registerType(AdvancementRequirement.ADAPTER_VARIANT, AdvancementRequirement::class)
this.registerType(OwnerHoldsItemRequirement.ADAPTER_VARIANT, OwnerHoldsItemRequirement::class)
this.registerType(ChanceRequirement.ADAPTER_VARIANT, ChanceRequirement::class)
}
val gson: Gson by lazy {
@@ -0,0 +1,37 @@
/*
* 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.molang.ExpressionLike
import com.cobblemon.mod.common.api.pokemon.requirement.Requirement
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.asExpressionLike
import com.cobblemon.mod.common.util.genericRuntime
import com.cobblemon.mod.common.util.resolveFloat
import kotlin.random.Random
/**
* A requirement that will only pass the check if some random chance is satisfied.
*
* @author Hiroku
* @since January 30th, 2026
*/
class ChanceRequirement : Requirement {
companion object {
const val ADAPTER_VARIANT = "chance"
}
val chance: ExpressionLike = "1".asExpressionLike()
override fun check(pokemon: Pokemon): Boolean {
genericRuntime.environment.query.addFunction("pokemon") { pokemon.struct }
val chance = genericRuntime.resolveFloat(chance)
return Random.nextFloat() < chance
}
}
@@ -6360,7 +6360,7 @@
"advancements.cobblemon.craft_rod.description": "Crea una Poké Caña en una mesa de herrería y descubre nuevas formas de pescar",
"advancements.cobblemon.use_bait.description": "Usa una baya como cebo en tu Poké Caña",
"advancements.cobblemon.craft_master_rod.description": "Fabrica una Poké Caña usando una Master Ball",
"advancements.cobblemon.craft_master_rod": "Dedicación magistral",
"advancements.cobblemon.craft_master_rod": "Esto repercutirá en las poblaciones de Whiscash",
"cobblemon.battle.shift": "%1$s se movió al centro",
"cobblemon.challenge.pending": "¡Aún no has respondido al desafío de %1$s!",
"cobblemon.challenge.multi.team_request.receiver": "¡%1$s ha solicitado hacer equipo contigo para combates múltiples!",
@@ -8687,5 +8687,35 @@
"cobblemon.ui.ride_style.land.cart": "Coche",
"effect.cobblemon.cleanse_all": "Limpieza de efectos",
"effect.cobblemon.cleanse_negative": "Limpieza de efectos negativos",
"effect.cobblemon.mental_restoration": "Descanso mental"
"effect.cobblemon.mental_restoration": "Descanso mental",
"block.cobblemon.white_plaque": "Placa blanca",
"block.cobblemon.light_gray_plaque": "Placa gris claro",
"block.cobblemon.gray_plaque": "Placa gris",
"block.cobblemon.black_plaque": "Placa negra",
"block.cobblemon.brown_plaque": "Placa marrón",
"block.cobblemon.red_plaque": "Placa roja",
"block.cobblemon.orange_plaque": "Placa naranja",
"block.cobblemon.yellow_plaque": "Placa amarilla",
"block.cobblemon.lime_plaque": "Placa verde lima",
"block.cobblemon.green_plaque": "Placa verde",
"block.cobblemon.cyan_plaque": "Placa cian",
"block.cobblemon.light_blue_plaque": "Placa azul claro",
"block.cobblemon.blue_plaque": "Placa azul",
"block.cobblemon.purple_plaque": "Placa morada",
"block.cobblemon.magenta_plaque": "Placa magenta",
"block.cobblemon.pink_plaque": "Placa rosa",
"advancements.cobblemon.cook_all_regional_delicacies": "Gira mundial culinaria",
"advancements.cobblemon.cook_all_regional_delicacies.description": "Cocina todas las delicatesen regionales",
"advancements.cobblemon.cook_all_ev_mochi": "¡Mucho mochi!",
"advancements.cobblemon.cook_all_ev_mochi.description": "Cocina todos los sabores de mochi, un delicioso tentempié que modifica los puntos de esfuerzo de un Pokémon",
"advancements.cobblemon.cook_snack": "Un aroma tentador",
"advancements.cobblemon.cook_snack.description": "Hornea un Poké Snack, un delicioso pastel que puede atraer a ciertos Pokémon según la baya que uses",
"advancements.cobblemon.use_poke_bait": "Seguro que pican",
"advancements.cobblemon.use_poke_bait.description": "Prepara Poké Cebo en una cacerola para hogueras y usalo para atraer a un Pokémon",
"advancements.cobblemon.max_ride_stats": "Poké Atleta de renombre",
"advancements.cobblemon.max_ride_stats.description": "Aumenta al máximo las estadísticas de montura de un Pokémon dándole bongurchata de sabores\nLos distintos sabores aumentan distintas características",
"advancements.cobblemon.interact_with_pokemon": "Zafarrancho en el rancho",
"advancements.cobblemon.interact_with_pokemon.description": "Usa alguna de tus herramientas para obtener recursos de uno de tus Pokémon",
"advancements.cobblemon.slather_saccharine": "Solo un mordisquito",
"advancements.cobblemon.slather_saccharine.description": "Unta una botella de miel en el tronco de un sacarino y atrae a ciertos Pokémon"
}
@@ -9191,10 +9191,12 @@
"tag.item.cobblemon.plaques": "Plaques",
"tag.item.cobblemon.display_case_items": "Modèles d'objets en vitrine",
"tag.item.cobblemon.item_blocks": "Objets décoratifs",
"cobblemon.behaviour.defend_owner.name": "Défendre le propriétaire",
"cobblemon.behaviour.defend_owner.desc": "Défend son propriétaire lorsqu'il est attaqué.",
"cobblemon.behaviour.defend_owner.name": "Défendre le dresseur",
"cobblemon.behaviour.defend_owner.desc": "Défend son dresseur lorsqu'il est attaqué.",
"stat.cobblemon.riding_land": "Distance parcourue par Pokémon sur terre",
"stat.cobblemon.riding_air": "Distance parcourue par Pokémon dans les airs",
"stat.cobblemon.riding_liquid": "Distance parcourue par Pokémon dans un liquide",
"cobblemon.ui.ride_style.air.bird": "Oiseau"
"cobblemon.ui.ride_style.air.bird": "Oiseau",
"effect.cobblemon.cleanse_all": "Nettoyage des effets",
"effect.cobblemon.cleanse_negative": "Nettoyage des effets négatifs"
}
@@ -9178,5 +9178,39 @@
"cobblemon.ui.ride_style.air.bird": "Oiseau",
"cobblemon.ui.ride_style.air.hover": "Flotte",
"cobblemon.ui.ride_style.air.jet": "Avion",
"cobblemon.ui.ride_style.air.rocket": "Fusée"
"cobblemon.ui.ride_style.air.rocket": "Fusée",
"cobblemon.ui.ride_style.land.horse": "Standard",
"cobblemon.ui.ride_style.land.cart": "Voiture",
"cobblemon.ui.ride_style.liquid.boat": "Bateau",
"cobblemon.ui.ride_style.liquid.dolphin": "Dauphin",
"cobblemon.ui.ride_style.liquid.submarine": "Sous-marin",
"cobblemon.config.ui.enable_in_flight_dismounting": "Activer le débarquement en vol",
"cobblemon.config.ui.enable_in_flight_dismounting.tooltip": "Permet aux joueurs de descendre de leur Pokémon en plein vol. Lorsque cette option est désactivée, il n'est possible de descendre que depuis le sol.",
"block.cobblemon.white_plaque": "Plaque blanche",
"block.cobblemon.light_gray_plaque": "Plaque gris clair",
"block.cobblemon.gray_plaque": "Plaque grise",
"block.cobblemon.black_plaque": "Plaque noire",
"block.cobblemon.brown_plaque": "Plaque marron",
"block.cobblemon.red_plaque": "Plaque rouge",
"block.cobblemon.orange_plaque": "Plaque orange",
"block.cobblemon.yellow_plaque": "Plaque jaune",
"block.cobblemon.lime_plaque": "Plaque vert clair",
"block.cobblemon.green_plaque": "Plaque verte",
"block.cobblemon.cyan_plaque": "Plaque cyan",
"block.cobblemon.light_blue_plaque": "Plaque bleu clair",
"block.cobblemon.blue_plaque": "Plaque bleue",
"block.cobblemon.purple_plaque": "Plaque violette",
"block.cobblemon.magenta_plaque": "Plaque magenta",
"block.cobblemon.pink_plaque": "Plaque rose",
"tag.item.cobblemon.chest_boats": "Bateaux de stockage",
"tag.item.cobblemon.plaques": "Plaques",
"tag.item.cobblemon.display_case_items": "Modèles d'objets en vitrine",
"tag.item.cobblemon.item_blocks": "Objets décoratifs",
"cobblemon.behaviour.defend_owner.name": "Défendre le dresseur",
"cobblemon.behaviour.defend_owner.desc": "Défend son dresseur lorsqu'il est attaqué.",
"stat.cobblemon.riding_land": "Distance parcourue par Pokémon sur terre",
"stat.cobblemon.riding_air": "Distance parcourue par Pokémon dans les airs",
"stat.cobblemon.riding_liquid": "Distance parcourue par Pokémon dans un liquide",
"effect.cobblemon.cleanse_all": "Nettoyage des effets",
"effect.cobblemon.cleanse_negative": "Nettoyage des effets négatifs"
}
@@ -322,7 +322,7 @@
"item.cobblemon.rich_mulch": "주렁주렁비료",
"item.cobblemon.sandy_mulch": "모래비료",
"item.cobblemon.surprise_mulch": "깜놀비료",
"item.cobblemon.medicinal_leek": "약초",
"item.cobblemon.medicinal_leek": "약초 대파",
"item.cobblemon.energy_root": "힘의뿌리",
"item.cobblemon.revival_herb": "부활초",
"item.cobblemon.roasted_leek": "구운 대파",
@@ -826,10 +826,10 @@
"advancements.cobblemon.first_shiny_catch.description": "특별한 색 포켓몬을 잡으세요",
"advancements.cobblemon.healing_machine": "치료의 힘",
"advancements.cobblemon.healing_machine.description": "치료 머신이 충전될 때까지 기다린 후 당신의 포켓몬들을 치료하세요",
"advancements.cobblemon.obtain_leek": "대파를 손에 넣었다!",
"advancements.cobblemon.obtain_leek.description": "담수 지역에서 자라는 약초를 획득하세요",
"advancements.cobblemon.obtain_leek": "약초 대파를 손에 넣었다!",
"advancements.cobblemon.obtain_leek.description": "담수 지역에서 자라는 약초 대파를 획득하세요",
"advancements.cobblemon.medicinal_brew": "동네 약국",
"advancements.cobblemon.medicinal_brew.description": "약초를 양조해 치유에 필요한 기본 재료를 만드세요",
"advancements.cobblemon.medicinal_brew.description": "약초 대파를 양조해 치유에 필요한 기본 재료를 만드세요",
"advancements.cobblemon.brew_potion": "기초적인 회복 아이템",
"advancements.cobblemon.brew_potion.description": "오랭열매와 약용물약을 양조해 상처약을 만드세요",
"advancements.cobblemon.brew_full_restore": "챔피언의 선택",
@@ -600,8 +600,8 @@
"cobblemon.healingmachine.alreadyhealing": "A tua equipa de Pokémon já está a ser curada noutro lado!",
"cobblemon.pc.inbattle": "Não podes usar o PC durante um combate!",
"cobblemon.held_item": "Item segurado",
"cobblemon.held_item.give": "%1$s passou a segurar %2$s.",
"cobblemon.held_item.replace": "Passaste %1$s de %2$s para %3$s segurar.",
"cobblemon.held_item.give": "%1$s recebeu %2$s.",
"cobblemon.held_item.replace": "Passaste %1$s de %2$s para %3$s.",
"cobblemon.held_item.take": "%2$s deixou de segurar %1$s.",
"cobblemon.held_item.already_holding": "%1$s já está a segurar %2$s!",
"cobblemon.ui.pokemonteam": "Equipa",
@@ -646,9 +646,9 @@
"item.cobblemon.babiri_berry": "Baga Babiri",
"item.cobblemon.babiri_berry.tooltip": "Reduz pela metade o dano recebido de um ataque supereficaz do tipo Aço",
"item.cobblemon.belue_berry": "Baga Belue",
"item.cobblemon.belue_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.belue_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.bluk_berry": "Baga Bluk",
"item.cobblemon.bluk_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.bluk_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.charti_berry": "Baga Charti",
"item.cobblemon.charti_berry.tooltip": "Reduz pela metade o dano recebido de um ataque supereficaz do tipo Rocha",
"item.cobblemon.cheri_berry": "Baga Cheri",
@@ -664,11 +664,11 @@
"item.cobblemon.colbur_berry": "Baga Colbur",
"item.cobblemon.colbur_berry.tooltip": "Reduz pela metade o dano recebido de um ataque supereficaz do tipo Escuridão",
"item.cobblemon.cornn_berry": "Baga Cornn",
"item.cobblemon.cornn_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.cornn_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.custap_berry": "Baga Custap",
"item.cobblemon.custap_berry.tooltip": "O portador move-se primeiro ao alcançar 1/4 do HP máximo",
"item.cobblemon.durin_berry": "Baga Durin",
"item.cobblemon.durin_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.durin_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.enigma_berry": "Baga Enigma",
"item.cobblemon.enigma_berry.tooltip": "Restaura 1/4 do HP máximo após o portador ser atingido por um movimento supereficaz",
"item.cobblemon.figy_berry": "Baga Figy",
@@ -682,7 +682,7 @@
"item.cobblemon.hondew_berry": "Baga Hondrew",
"item.cobblemon.hondew_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.hopo_berry": "Baga Hopo",
"item.cobblemon.hopo_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.hopo_berry.tooltip": "Restaura 10 PP do movimento selecionado quando consumida por um Pokémon",
"item.cobblemon.iapapa_berry": "Baga Iapapa",
"item.cobblemon.iapapa_berry.tooltip": "Restaura 1/3 do HP máximo ao alcançar 1/4 do HP máximo ou menos; confunde se Natureza -Def",
"item.cobblemon.jaboca_berry": "Baga Jaboca",
@@ -706,23 +706,23 @@
"item.cobblemon.mago_berry": "Baga Mago",
"item.cobblemon.mago_berry.tooltip": "Restaura 1/3 do HP máximo ao alcançar 1/4 do HP máximo ou menos; confunde se Natureza -Spe",
"item.cobblemon.magost_berry": "Baga Magost",
"item.cobblemon.magost_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.magost_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.maranga_berry": "Baga Maranga",
"item.cobblemon.maranga_berry.tooltip": "Aumenta a Defesa Especial do portador por 1 estágio após ser atingido por um ataque especial",
"item.cobblemon.micle_berry": "Baga Micle",
"item.cobblemon.micle_berry.tooltip": "O próximo ataque do portador tem 1.2x precisão ao alcançar 1/4 do HP máximo or menos",
"item.cobblemon.nanab_berry": "Baga Nanab",
"item.cobblemon.nanab_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.nanab_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.touga_berry": "Baga Touga",
"item.cobblemon.touga_berry.tooltip": "O portador é curado se ficar confuso",
"item.cobblemon.nomel_berry": "Baga Nomel",
"item.cobblemon.nomel_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.nomel_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.occa_berry": "Baga Occa",
"item.cobblemon.occa_berry.tooltip": "Reduz pela metade o dano recebido de um ataque supereficaz do tipo Fogo",
"item.cobblemon.oran_berry": "Baga Oran",
"item.cobblemon.oran_berry.tooltip": "Restaura 10 HP ao alcançar 1/2 do HP máximo ou menos",
"item.cobblemon.pamtre_berry": "Baga Pamtre",
"item.cobblemon.pamtre_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.pamtre_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.passho_berry": "Baga Passho",
"item.cobblemon.passho_berry.tooltip": "Reduz pela metade o dano recebido de um ataque supereficaz do tipo Água",
"item.cobblemon.payapa_berry": "Baga Payapa",
@@ -734,17 +734,17 @@
"item.cobblemon.petaya_berry": "Baga Petaya",
"item.cobblemon.petaya_berry.tooltip": "Aumenta o Ataque Especial do portador por 1 estágio ao alcançar 1/4 do HP máximo ou menos",
"item.cobblemon.pinap_berry": "Baga Pinap",
"item.cobblemon.pinap_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.pinap_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.pomeg_berry": "Baga Pomeg",
"item.cobblemon.pomeg_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.qualot_berry": "Baga Qualot",
"item.cobblemon.qualot_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.rabuta_berry": "Baga Rabuta",
"item.cobblemon.rabuta_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.rabuta_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.rawst_berry": "Baga Rawst",
"item.cobblemon.rawst_berry.tooltip": "O portador é curado se for queimado",
"item.cobblemon.razz_berry": "Baga Razz",
"item.cobblemon.razz_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.razz_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.rindo_berry": "Baga Rindo",
"item.cobblemon.rindo_berry.tooltip": "Reduz pela metade o dano recebido de um ataque supereficaz do tipo Planta",
"item.cobblemon.roseli_berry": "Baga Roseli",
@@ -758,7 +758,7 @@
"item.cobblemon.sitrus_berry": "Baga Sitrus",
"item.cobblemon.sitrus_berry.tooltip": "Restaura 1/4 do HP máximo quando alcançar 1/2 do HP máximo ou menos",
"item.cobblemon.spelon_berry": "Baga Spelon",
"item.cobblemon.spelon_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.spelon_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.starf_berry": "Baga Starf",
"item.cobblemon.starf_berry.tooltip": "Aumenta um atributo aleatório por 2 ao alcançar 1/4 do HP máximo ou menos",
"item.cobblemon.tamato_berry": "Baga Tamato",
@@ -768,9 +768,9 @@
"item.cobblemon.wacan_berry": "Baga Wacan",
"item.cobblemon.wacan_berry.tooltip": "Reduz pela metade o dano recebido de um ataque supereficaz do tipo Elétrico",
"item.cobblemon.watmel_berry": "Baga Watmel",
"item.cobblemon.watmel_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.watmel_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.wepear_berry": "Baga Wepear",
"item.cobblemon.wepear_berry.tooltip": "Não pode ser comida pelo portador",
"item.cobblemon.wepear_berry.tooltip": "Não pode ser comida durante batalhas",
"item.cobblemon.wiki_berry": "Baga Wiki",
"item.cobblemon.wiki_berry.tooltip": "Restaura 1/3 do HP máximo ao alcançar 1/4 do HP máximo ou menos; confunde se Natureza -SpA",
"item.cobblemon.yache_berry": "Baga Yache",
@@ -2240,7 +2240,7 @@
"cobblemon.mark.ribbon_event_color_green.desc": "Uma Fita comemorativa.",
"key.cobblemon.pokedex": "Abrir Pokédex",
"cobblemon.subtitle.wallpaper.unlock": "Papel de parede da caixa do PC desbloqueado",
"cobblemon.held_item.forbidden": "Tu não podes dar %1$s para %2$s segurar.",
"cobblemon.held_item.forbidden": "Tu não podes dar %1$s a %2$s.",
"cobblemon.cosmetic_item": "Item Cosmético",
"cobblemon.cosmetic_item.take": "Tu recuperaste %1$s de %2$s.",
"cobblemon.challenge.sent": "Tu desafiaste %1$s para uma %2$s.",
@@ -5509,7 +5509,7 @@
"cobblemon.team.error.missing_pokemon.receiver": "Não tens nenhum Pokémon usável!",
"item.cobblemon.grepa_berry.tooltip_1": "Diminui os EVs de Defesa Especial por 10 e aumenta Amizade",
"item.cobblemon.pomeg_berry.tooltip_1": "Diminui os EVs de HP por 10 e aumenta Amizade",
"item.cobblemon.hondew_berry.tooltip_2": "Não pode ser comida pelo portador",
"item.cobblemon.hondew_berry.tooltip_2": "Não pode ser comida durante batalhas",
"cobblemon.config.ui.default_box_count.tooltip": "O número de caixas disponíveis no PC.",
"cobblemon.config.ui.experience_multiplier.tooltip": "Multiplicador de Experiência adicional para o cálculo de Experiência.",
"cobblemon.battle.sidestart.ally.spikes": "Espinhos foram espalhados no chão à volta da tua equipa!",
@@ -5551,8 +5551,8 @@
"cobblemon.ui.challenge.challenge_title": "Pedido de Batalha",
"cobblemon.challenge.multi.error.invalid_team_size": "Equipas para Batalha Múltipla só podem ter %1$s jogadores!",
"item.cobblemon.kelpsy_berry.tooltip_1": "Diminui os EVs de Ataque por 10 e aumenta Amizade",
"item.cobblemon.qualot_berry.tooltip_2": "Não pode ser comida pelo portador",
"item.cobblemon.tamato_berry.tooltip_2": "Não pode ser comida pelo portador",
"item.cobblemon.qualot_berry.tooltip_2": "Não pode ser comida durante batalhas",
"item.cobblemon.tamato_berry.tooltip_2": "Não pode ser comida durante batalhas",
"cobblemon.command.behaviouredit.non_scriptable": "Não estás a olhar para uma entidade MoLang programável.",
"item.cobblemon.hondew_berry.tooltip_1": "Diminui os EVs de Ataque Especial por 10 e aumenta Amizade",
"cobblemon.command.cobblemon_config.reload": "Recarregando as configurações do Cobblemon.",
@@ -5611,7 +5611,7 @@
"item.cobblemon.mirror_herb.tooltip_1": "Permite ao portador refletir os aumentos de atributos de um adversário para aumentar os seus próprios atributos",
"item.cobblemon.revive.tooltip": "Reanima um Pokémon desmaiado até 50% do seu HP máximo",
"item.cobblemon.max_revive.tooltip": "Reanima e cura totalmente um Pokémon desmaiado",
"item.cobblemon.revival_herb.tooltip": "Revive totalmente um Pokémon desmaiado, mas reduz Amizade",
"item.cobblemon.revival_herb.tooltip": "Revive um Pokémon desmaiado até 25% do seu HP máximo, mas reduz Amizade",
"item.cobblemon.moomoo_milk": "Leite Moomoo",
"item.cobblemon.awakening.tooltip": "Desperta um Pokémon do sono",
"item.cobblemon.burn_heal.tooltip": "Cura um Pokémon de uma queimadura",
@@ -5622,12 +5622,12 @@
"item.cobblemon.genius_mochi": "Mochi Genial",
"item.cobblemon.clever_mochi": "Mochi Esperto",
"item.cobblemon.swift_mochi": "Mochi Rápido",
"item.cobblemon.health_mochi.tooltip": "Aumenta os EVs de HP do Pokémon por 10",
"item.cobblemon.muscle_mochi.tooltip": "Aumenta os EVs de Ataque do Pokémon por 10",
"item.cobblemon.resist_mochi.tooltip": "Aumenta os EVs de Defesa do Pokémon por 10",
"item.cobblemon.genius_mochi.tooltip": "Aumenta os EVs de Ataque Especial do Pokémon por 10",
"item.cobblemon.clever_mochi.tooltip": "Aumenta os EVs de Defesa Especial do Pokémon por 10",
"item.cobblemon.swift_mochi.tooltip": "Aumenta os EVs de Velocidade do Pokémon por 10",
"item.cobblemon.health_mochi.tooltip": "Aumenta os EVs de HP do Pokémon por 4",
"item.cobblemon.muscle_mochi.tooltip": "Aumenta os EVs de Ataque do Pokémon por 4",
"item.cobblemon.resist_mochi.tooltip": "Aumenta os EVs de Defesa do Pokémon por 4",
"item.cobblemon.genius_mochi.tooltip": "Aumenta os EVs de Ataque Especial do Pokémon por 4",
"item.cobblemon.clever_mochi.tooltip": "Aumenta os EVs de Defesa Especial do Pokémon por 4",
"item.cobblemon.swift_mochi.tooltip": "Aumenta os EVs de Velocidade do Pokémon por 4",
"item.cobblemon.fresh_start_mochi": "Mochi em Branco",
"item.cobblemon.fresh_start_mochi.tooltip": "Repõe todos os EVs do Pokémon a 0",
"item.cobblemon.aprijuice_black": "Sumo de Bolota Preta",
@@ -5636,7 +5636,7 @@
"item.cobblemon.aprijuice_pink": "Sumo de Bolota Rosa",
"item.cobblemon.aprijuice_white": "Sumo de Bolota Branca",
"item.cobblemon.aprijuice_yellow": "Sumo de Bolota Amarela",
"cobblemon.seasoning_food_header": "Comida",
"cobblemon.seasoning_food_header": "Nutrição",
"cobblemon.seasoning_flavor.dry": "Seco",
"cobblemon.seasoning_flavor.sweet": "Doce",
"item.cobblemon.tasty_tail": "Cauda Saborosa",
@@ -5648,7 +5648,7 @@
"cobblemon.item_class.seasonings": "Temperos",
"cobblemon.item_class.bait_effect_seasoning": "Tempero de Isca",
"cobblemon.item_class.mob_effect_seasoning": "Tempero de Efeito",
"cobblemon.item_class.food_seasoning": "Tempero de Comida",
"cobblemon.item_class.food_seasoning": "Temperos Nutricionais",
"cobblemon.seasoning_bait_effect_header": "Isca",
"cobblemon.seasoning_flavor_header": "Sabor",
"cobblemon.seasoning_bait_effect_info_header": "Informação da Isca:",
@@ -5742,11 +5742,11 @@
"cobblemon.team.error.existing_team.other": "%1$s já faz parte de uma equipa!",
"cobblemon.team.error.max_team_size.other": "%1$s não se pode juntar porque a equipa está cheia!",
"cobblemon.team.error.max_team_size.self": "Não é possível entrar, a equipa está cheia!",
"item.cobblemon.grepa_berry.tooltip_2": "Não pode ser comida pelo portador",
"item.cobblemon.kelpsy_berry.tooltip_2": "Não pode ser comida pelo portador",
"item.cobblemon.grepa_berry.tooltip_2": "Não pode ser comida durante batalhas",
"item.cobblemon.kelpsy_berry.tooltip_2": "Não pode ser comida durante batalhas",
"item.cobblemon.qualot_berry.tooltip_1": "Diminui os EVs de Defesa por 10 e aumenta Amizade",
"item.cobblemon.tamato_berry.tooltip_1": "Diminui os EVs de Velocidade por 10 e aumenta Amizade",
"item.cobblemon.pomeg_berry.tooltip_2": "Não pode ser comida pelo portador",
"item.cobblemon.pomeg_berry.tooltip_2": "Não pode ser comida durante batalhas",
"cobblemon.command.mark.invalid": "Nome de marca inválido.",
"cobblemon.command.error.nonpc": "Erro: Tu precisas de incluir um identificador de NPC válido.",
"cobblemon.command.freezepokemon.non_pokemon": "Não estás a olhar para um Pokémon.",
@@ -6165,5 +6165,66 @@
"tag.item.cobblemon.candies": "Guloseimas",
"tag.item.cobblemon.mint_leaves": "Folhas de Hortelã",
"tag.item.cobblemon.berries.stat_buff": "Bagas de Batalha",
"cobblemon.move.hydrovortex": "Vórtice Aquático"
"cobblemon.move.hydrovortex": "Vórtice Aquático",
"cobblemon.ui.ride_style.air.rocket": "Foguete",
"cobblemon.ui.ride_style.land": "Terrestre",
"cobblemon.ui.ride_style.land.horse": "Padrão",
"cobblemon.ui.ride_style.land.cart": "Carrinho",
"cobblemon.ui.ride_style.liquid": "Líquido",
"cobblemon.ui.ride_style.liquid.boat": "Barco",
"cobblemon.ui.ride_style.liquid.dolphin": "Golfinho",
"cobblemon.ui.ride_style.liquid.submarine": "Submarino",
"item.cobblemon.eggant_berry": "Baga Eggant",
"item.cobblemon.eggant_berry.tooltip": "O portador é curado se ficar apaixonado",
"cobblemon.battle.end.sandtomb": "%1$s foi libertado(a) da Sepultura de Areia!",
"gamerule.healersHealPC": "Curar Pokémon no PC ao usar uma Máquina de Cura",
"tag.item.cobblemon.berries.colour.white": "Bagas Brancas",
"tag.item.cobblemon.berries.colour.brown": "Bagas Castanhas",
"tag.item.cobblemon.berries.colour.red": "Bagas Vermelhas",
"tag.item.cobblemon.berries.colour.orange": "Bagas Laranjas",
"tag.item.cobblemon.berries.colour.yellow": "Bagas Amarelas",
"tag.item.cobblemon.berries.colour.lime": "Bagas Lima",
"tag.item.cobblemon.berries.colour.green": "Bagas Verdes",
"tag.item.cobblemon.berries.colour.cyan": "Bagas Ciano",
"tag.item.cobblemon.berries.colour.light_blue": "Bagas Azuis Claras",
"tag.item.cobblemon.berries.colour.blue": "Bagas Azuis",
"tag.item.cobblemon.berries.colour.purple": "Bagas Roxas",
"tag.item.cobblemon.berries.colour.magenta": "Bagas Magenta",
"tag.item.cobblemon.berries.colour.pink": "Bagas Rosa",
"tag.item.cobblemon.item_blocks": "Itens Decorativos",
"cobblemon.move.guardianofalola": "Guardião de Alola",
"cobblemon.move.guardianofalola.desc": "O utilizador, o Pokémon Espírito da Terra, obtém a energia de Alola usando o seu Poder-Z e ataca o alvo, reduzindo significativamente o HP do alvo.",
"cobblemon.move.oceanicoperetta": "Sinfonia Marítima",
"cobblemon.move.oceanicoperetta.desc": "O utilizador, Primarina, invoca uma enorme quantidade de água usando o seu Z-Power e ataca o alvo com toda a força.",
"cobblemon.move.pulverizingpancake": "Panqueca Pulverizadora",
"cobblemon.move.pulverizingpancake.desc": "O Poder-Z revela as verdadeiras capacidades do utilizador, Snorlax. O Pokémon move o seu enorme corpo energicamente e ataca o alvo com toda a força.",
"cobblemon.move.lightthatburnsthesky": "Luz Que Queima o Céu",
"cobblemon.move.lightthatburnsthesky.desc": "Este ataque compara os atributos de Ataque e Ataque Especial do utilizador e usa o que for mais elevado. Este movimento ignora a Habilidade do alvo.",
"cobblemon.move.letssnuggleforever": "Aconchego Eterno",
"cobblemon.move.letssnuggleforever.desc": "Usando o seu Poder-Z, o utilizador, Mimikyu, espanca o alvo com toda a sua força.",
"cobblemon.move.blackholeeclipse": "Buraco Negro Eclipsante",
"cobblemon.move.blackholeeclipse.desc": "O utilizador reúne energia negra usando o seu Poder-Z e suga o alvo para dentro dela. O poder varia, dependendo do movimento original.",
"cobblemon.entity.variable.resource_identifier.desc": "O identificador de recurso a ser usado para controlar a aparência do NPC, como cobblemon:standard ou cobblemon:mudkip.",
"cobblemon.entity.variable.resource_identifier.name": "Identificador de Recurso",
"cobblemon.move.continentalcrush": "Colisão Continental",
"cobblemon.move.continentalcrush.desc": "O utilizador invoca uma enorme montanha rochosa usando o seu Poder-Z e deixa-a cair sobre o alvo. O poder varia, dependendo do movimento original.",
"cobblemon.move.tectonicrage": "Fúria Tectónica",
"cobblemon.move.tectonicrage.desc": "O utilizador enterra-se no solo e atinge o alvo com toda a força do seu Poder-Z. O poder varia, dependendo do movimento original.",
"cobblemon.behaviour.configurable_resource_identifier.name": "Identificador de Recurso Configurável",
"cobblemon.behaviour.configurable_resource_identifier.desc": "Permite alterar o identificador de recurso que controla a aparência do NPC.",
"cobblemon.entity.variable.dialogue_selection.name": "Diálogo",
"cobblemon.entity.variable.dialogue_selection.desc": "O identificador de recurso do diálogo a ser aberto na interação, como cobblemon:your_dialogue",
"cobblemon.move.aciddownpour": "Dilúvio Ácido",
"cobblemon.move.aciddownpour.desc": "O utilizador cria um pântano venenoso usando o seu Poder-Z, afundando o alvo. O poder varia, dependendo do movimento original.",
"cobblemon.move.bloomdoom": "Desgraça Floral",
"cobblemon.move.bloomdoom.desc": "O utilizador recolhe energia vegetal usando o seu Poder-Z e ataca o alvo com toda a força. O poder varia, dependendo do movimento original.",
"cobblemon.behaviour.defend_owner.name": "Defender Dono",
"cobblemon.behaviour.defend_owner.desc": "Defende o seu dono quando este é atacado.",
"cobblemon.behaviour.pokemon_picks_up_items.name": "Apanha Itens",
"cobblemon.behaviour.pokemon_picks_up_items.desc": "O Pokémon irá apanhar itens que lhe interessam.",
"cobblemon.behaviour.player_textured.name": "Textura de Jogador",
"cobblemon.behaviour.player_textured.desc": "O NPC será texturizado com base num nome de utilizador de jogador específico.",
"cobblemon.behaviour.pokemon_gets_mad_at_thrower.name": "Fica Zangado com o Lançador da Pokébola",
"cobblemon.behaviour.pokemon_gets_mad_at_thrower.desc": "Fica zangado com o jogador que lhe atirou uma Pokébola. Pokémon agressivos atacarão o jogador e não agressivos fugirão.",
"cobblemon.move.twinkletackle": "Investida Brilhante"
}
@@ -9174,5 +9174,44 @@
"stat.cobblemon.battles_fled": "宝可梦对战逃跑次数",
"stat.cobblemon.eggs_collected": "已收集宝可梦蛋数",
"stat.cobblemon.level_up": "提升宝可梦等级次数",
"stat.cobblemon.times_ridden": "骑乘宝可梦次数"
"stat.cobblemon.times_ridden": "骑乘宝可梦次数",
"effect.cobblemon.cleanse_all": "效果清除",
"effect.cobblemon.cleanse_negative": "负面效果清除",
"effect.cobblemon.mental_restoration": "精神恢复",
"cobblemon.ui.ride_style.air.bird": "鸟类",
"cobblemon.ui.ride_style.air.hover": "悬浮",
"cobblemon.ui.ride_style.air.jet": "喷射",
"cobblemon.ui.ride_style.air.rocket": "火箭",
"cobblemon.ui.ride_style.land.horse": "常规",
"cobblemon.ui.ride_style.land.cart": "轮驱",
"cobblemon.ui.ride_style.liquid.boat": "乘船",
"cobblemon.ui.ride_style.liquid.dolphin": "海豚",
"cobblemon.ui.ride_style.liquid.submarine": "潜艇",
"cobblemon.config.ui.enable_in_flight_dismounting": "启用在飞行中离乘",
"cobblemon.config.ui.enable_in_flight_dismounting.tooltip": "允许玩家在空中骑乘宝可梦时离乘。禁用时,仅能在地面上离乘。",
"block.cobblemon.white_plaque": "白色标识牌",
"block.cobblemon.light_gray_plaque": "淡灰色标识牌",
"block.cobblemon.gray_plaque": "灰色标识牌",
"block.cobblemon.black_plaque": "黑色标识牌",
"block.cobblemon.brown_plaque": "棕色标识牌",
"block.cobblemon.red_plaque": "红色标识牌",
"block.cobblemon.orange_plaque": "橙色标识牌",
"block.cobblemon.yellow_plaque": "黄色标识牌",
"block.cobblemon.lime_plaque": "黄绿色标识牌",
"block.cobblemon.green_plaque": "绿色标识牌",
"block.cobblemon.cyan_plaque": "青色标识牌",
"block.cobblemon.light_blue_plaque": "淡蓝色标识牌",
"block.cobblemon.blue_plaque": "蓝色标识牌",
"block.cobblemon.purple_plaque": "紫色标识牌",
"block.cobblemon.magenta_plaque": "品红色标识牌",
"block.cobblemon.pink_plaque": "粉红色标识牌",
"tag.item.cobblemon.chest_boats": "箱船",
"tag.item.cobblemon.plaques": "标识牌",
"tag.item.cobblemon.display_case_items": "展示柜中的物品模型",
"tag.item.cobblemon.item_blocks": "装饰品",
"cobblemon.behaviour.defend_owner.name": "保护主人",
"cobblemon.behaviour.defend_owner.desc": "在主人受到攻击时保护他们。",
"stat.cobblemon.riding_land": "骑着宝可梦在陆地移动距离",
"stat.cobblemon.riding_air": "骑着宝可梦在空中移动距离",
"stat.cobblemon.riding_liquid": "骑着宝可梦在水域移动距离"
}
@@ -58,15 +58,33 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.leather",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.leather.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.leather.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -173,6 +191,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "4",
"toleratedLeaders": [
@@ -186,23 +209,18 @@
"fly": {
"canFly": true
},
"walk": {
"walkSpeed": 0.3
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.3
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -73,7 +73,7 @@
"poseOffsets": [
{
"offset": {
"x": 1.8626451e-09,
"x": 1.8626451E-9,
"y": -1.2779657,
"z": 0.059787232
},
@@ -113,7 +113,7 @@
},
{
"offset": {
"x": 1.8626451e-09,
"x": 1.8626451E-9,
"y": -1.2779657,
"z": 0.059787232
},
@@ -146,30 +146,30 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"entityInteract": {
"avoidedBySkeleton": true
},
"fireImmune": true,
"moving": {
"walk": {
"walkSpeed": "0.25"
},
"swim": {
"avoidsWater": true,
"canSwimInLava": true
},
"walk": {
"walkSpeed": "0.25"
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"fireImmune": true
}
},
"drops": {
"amount": 3,
@@ -375,25 +375,25 @@
}
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"entityInteract": {
"avoidedBySkeleton": true
},
"fireImmune": true,
"moving": {
"swim": {
"avoidsWater": true,
"canSwimInLava": true
}
},
"entityInteract": {
"avoidedBySkeleton": true
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"fireImmune": true
}
},
"moves": [
"1:rockslide",
@@ -53,11 +53,20 @@
"AIR": {
"key": "cobblemon:air/rocket",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -82,8 +91,35 @@
},
"LIQUID": {
"key": "cobblemon:liquid/submarine",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_sufrace.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.water_surface.mono",
"submerged": false,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.underwater.stereo",
"submerged": true,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
"hitboxBreachPercentage": 0.75,
"rideSounds": [],
"stats": {
"ACCELERATION": "45-65",
"JUMP": "30-50",
@@ -103,7 +139,7 @@
"poseOffsets": [
{
"offset": {
"x": -0.000759989,
"x": -7.59989E-4,
"y": -2.7762213,
"z": -0.08708589
},
@@ -113,7 +149,7 @@
},
{
"offset": {
"x": 0.000713408,
"x": 7.13408E-4,
"y": -2.888495,
"z": -0.031018771
},
@@ -255,6 +291,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "5"
},
@@ -269,14 +310,9 @@
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -527,6 +563,11 @@
}
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "6"
},
@@ -535,11 +576,6 @@
"canBreatheUnderwater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -57,32 +57,32 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForPassengers": true,
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForPassengers": false,
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForPassengers": true,
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.leather.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForPassengers": false,
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.leather.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
@@ -195,6 +195,7 @@
"willDefendSelf": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "5"
},
@@ -203,9 +204,9 @@
"canFly": true
},
"swim": {
"swimSpeed": 0.1,
"avoidsWater": true,
"canSwimInLava": true
"canSwimInLava": true,
"swimSpeed": 0.1
},
"walk": {
"walkSpeed": 0.147
@@ -213,11 +214,10 @@
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"fireImmune": true
}
},
"drops": {
"amount": 4,
@@ -507,28 +507,28 @@
}
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "6"
},
"moving": {
"fly": {
"canFly": true
},
"swim": {
"avoidsWater": true,
"canSwimInLava": true
},
"fly": {
"canFly": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"fireImmune": true
}
},
"evolutions": [],
"battleOnly": true,
@@ -628,28 +628,28 @@
}
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "6"
},
"moving": {
"fly": {
"canFly": true
},
"swim": {
"avoidsWater": true,
"canSwimInLava": true
},
"fly": {
"canFly": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"fireImmune": true
}
},
"evolutions": [],
"battleOnly": true,
@@ -67,7 +67,34 @@
},
"LIQUID": {
"key": "cobblemon:liquid/dolphin",
"rideSounds": [],
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_sufrace.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.water_surface.mono",
"submerged": false,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.underwater.stereo",
"submerged": true,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
"stats": {
"ACCELERATION": "50-75",
"JUMP": "25-50",
@@ -239,6 +266,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "5",
"toleratedLeaders": [
@@ -271,14 +301,11 @@
}
},
"resting": {
"drowsyChance": 0.0033,
"rouseChance": 0.0042,
"times": [
"day"
],
"drowsyChance": 0.0033,
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
]
}
},
"drops": {
@@ -58,19 +58,33 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"playForNonPassengers": true,
"submerged": false,
"soundLocation": "cobblemon:ride.loop.wind",
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForPassengers": true,
"playForNonPassengers": true,
"submerged": false,
"soundLocation": "cobblemon:ride.loop.leather",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.leather.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.leather.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -101,37 +115,27 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForPassengers": true,
"playForNonPassengers": false,
"submerged": false,
"soundLocation": "cobblemon:ride.loop.water_surface.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForPassengers": false,
"playForNonPassengers": true,
"submerged": false,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.water_surface.mono",
"submerged": false,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForPassengers": true,
"playForNonPassengers": false,
"submerged": true,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.underwater.stereo",
"submerged": true,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForPassengers": false,
"playForNonPassengers": true,
"submerged": true,
"soundLocation": "cobblemon:ride.loop.underwater.mono",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_sufrace.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -306,6 +310,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"moving": {
"fly": {
"canFly": true
@@ -319,16 +328,11 @@
}
},
"resting": {
"drowsyChance": 0.0014,
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -54,11 +54,20 @@
"AIR": {
"key": "cobblemon:air/jet",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -86,11 +95,30 @@
"LIQUID": {
"key": "cobblemon:liquid/dolphin",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_sufrace.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_surface",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.water_surface.mono",
"submerged": false,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.underwater.stereo",
"submerged": true,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -186,6 +214,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -207,17 +240,12 @@
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0014,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -67,13 +67,21 @@
},
"LIQUID": {
"key": "cobblemon:liquid/boat",
"surfaceLevelOffset": -1.6,
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_sufrace.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_surface",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.water_surface.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -83,7 +91,8 @@
"SKILL": "50-75",
"SPEED": "25-40",
"STAMINA": "45-75"
}
},
"surfaceLevelOffset": -1.6
}
},
"seats": [
@@ -169,6 +178,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "6",
"toleratedLeaders": [
@@ -185,24 +199,19 @@
"moving": {
"swim": {
"canBreatheUnderwater": true,
"swimSpeed": 0.3,
"canWalkOnWater": true
"canWalkOnWater": true,
"swimSpeed": 0.3
},
"walk": {
"walkSpeed": 0.15,
"avoidsLand": true
"avoidsLand": true,
"walkSpeed": 0.15
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -147,6 +147,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "3"
},
@@ -155,9 +158,6 @@
"avoidsWater": true
}
},
"combat": {
"willDefendOwner": true
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -416,6 +416,7 @@
"fixed": false,
"width": 0.8
},
"riding": {},
"drops": {
"amount": 1,
"entries": [
@@ -596,8 +597,7 @@
"variant": "level_up"
}
],
"battleOnly": false,
"riding": {}
"battleOnly": false
}
],
"features": [
@@ -147,6 +147,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "3",
"toleratedLeaders": [
@@ -158,27 +163,22 @@
},
"moving": {
"canLook": false,
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.45
},
"wanderChance": 20,
"swim": {
"avoidsWater": true
}
"wanderChance": 20
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0014,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -147,6 +147,12 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "4"
},
@@ -159,16 +165,10 @@
"walkSpeed": 0.15
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"fireImmune": true
}
},
"drops": {
"amount": 2,
@@ -147,6 +147,12 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -165,16 +171,10 @@
"walkSpeed": 0.2
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"fireImmune": true
}
},
"drops": {
"amount": 2,
@@ -52,8 +52,8 @@
"behaviours": {
"LIQUID": {
"key": "cobblemon:liquid/submarine",
"hitboxBreachPercentage": 0.9,
"rideSounds": [],
"hitboxBreachPercentage": 0.9,
"stats": {
"ACCELERATION": "35-70",
"JUMP": "15-35",
@@ -146,6 +146,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -173,11 +178,6 @@
"walkSpeed": 0.17
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -146,6 +146,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -177,15 +182,10 @@
},
"moving": {
"swim": {
"swimSpeed": "0.25",
"avoidsWater": true
"avoidsWater": true,
"swimSpeed": "0.25"
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -476,14 +476,9 @@
]
},
"behaviour": {
"moving": {
"swim": {
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
@@ -515,6 +510,11 @@
}
]
},
"moving": {
"swim": {
"avoidsWater": true
}
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -740,6 +740,12 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -755,16 +761,10 @@
"canSwimInLava": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"fireImmune": true
}
},
"moves": [
"1:tackle",
@@ -909,7 +909,6 @@
},
"LIQUID": {
"key": "cobblemon:liquid/boat",
"surfaceLevelOffset": -0.9,
"rideSounds": [
{
"muffleEnabled": true,
@@ -925,7 +924,8 @@
"SKILL": "40-55",
"SPEED": "30-40",
"STAMINA": "30-65"
}
},
"surfaceLevelOffset": -0.9
}
},
"seats": [
@@ -1011,6 +1011,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -1020,19 +1025,14 @@
}
]
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"moving": {
"swim": {
"canWalkOnWater": true
}
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
}
},
"moves": [
@@ -146,6 +146,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "7",
"toleratedLeaders": [
@@ -156,26 +161,21 @@
]
},
"moving": {
"walk": {
"walkSpeed": 0.135
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.135
}
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"night, noon"
],
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -390,25 +390,25 @@
}
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "8"
},
"resting": {
"times": [
"night, noon"
],
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"moving": {
"swim": {
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042,
"times": [
"night, noon"
]
}
},
"evolutions": [],
@@ -73,7 +73,7 @@
"poseOffsets": [
{
"offset": {
"x": 0.0009895586,
"x": 9.895586E-4,
"y": -0.6805381,
"z": 0.0058082193
},
@@ -85,7 +85,7 @@
"offset": {
"x": 0.008947004,
"y": -0.6557218,
"z": 0.0005530901
"z": 5.530901E-4
},
"poseTypes": [
"WALK"
@@ -146,30 +146,30 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "5"
},
"resting": {
"canSleep": true,
"light": "0-4",
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"walking": {
"walkSpeed": 0.18
},
"moving": {
"swim": {
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
"resting": {
"canSleep": true,
"drowsyChance": 0.0014,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"any"
]
},
"walking": {
"walkSpeed": 0.18
}
},
"drops": {
@@ -53,11 +53,20 @@
"AIR": {
"key": "cobblemon:air/hover",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -153,6 +162,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"moving": {
"fly": {
"canFly": true
@@ -166,17 +180,12 @@
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0014,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -73,7 +73,7 @@
"poseOffsets": [
{
"offset": {
"x": 3.3534473e-19,
"x": 3.3534473E-19,
"y": -1.0998156,
"z": 0.22897746
},
@@ -83,7 +83,7 @@
},
{
"offset": {
"x": -6.446602e-19,
"x": -6.446602E-19,
"y": -1.060447,
"z": 0.23613866
},
@@ -93,7 +93,7 @@
},
{
"offset": {
"x": 3.3534473e-19,
"x": 3.3534473E-19,
"y": -1.0998156,
"z": 0.22897746
},
@@ -103,7 +103,7 @@
},
{
"offset": {
"x": -6.446602e-19,
"x": -6.446602E-19,
"y": -1.060447,
"z": 0.23613866
},
@@ -113,7 +113,7 @@
},
{
"offset": {
"x": 3.3534473e-19,
"x": 3.3534473E-19,
"y": -1.0998156,
"z": 0.22897746
},
@@ -123,7 +123,7 @@
},
{
"offset": {
"x": -6.446602e-19,
"x": -6.446602E-19,
"y": -1.060447,
"z": 0.23613866
},
@@ -133,7 +133,7 @@
},
{
"offset": {
"x": 3.3534473e-19,
"x": 3.3534473E-19,
"y": -1.0998156,
"z": 0.22897746
},
@@ -146,6 +146,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -161,19 +164,16 @@
},
"moving": {
"canWalk": true,
"walkSpeed": "0.2",
"swim": {
"avoidsWater": true
}
},
"walkSpeed": "0.2"
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
}
},
"drops": {
@@ -54,11 +54,20 @@
"AIR": {
"key": "cobblemon:air/bird",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -165,6 +174,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"moving": {
"fly": {
"canFly": true
@@ -174,16 +188,11 @@
}
},
"resting": {
"drowsyChance": 0.0021,
"rouseChance": 0.0042,
"times": [
"167-11833,13702-22299"
],
"drowsyChance": 0.0021,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -366,22 +375,22 @@
},
"baseExperienceYield": 210,
"behaviour": {
"resting": {
"times": [
"167-11833,13702-22299"
],
"drowsyChance": 0.0021,
"rouseChance": 0.0042
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"moving": {
"swim": {
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
"resting": {
"drowsyChance": 0.0021,
"rouseChance": 0.0042,
"times": [
"167-11833,13702-22299"
]
}
},
"evolutions": [],
@@ -146,6 +146,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "7",
"toleratedLeaders": [
@@ -160,23 +165,18 @@
]
},
"moving": {
"walk": {
"walkSpeed": 0.15
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.15
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -145,27 +145,27 @@
]
},
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.3
},
"swim": {
"avoidsWater": true
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "3"
},
"moving": {
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.3
}
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
}
},
"drops": {
@@ -54,11 +54,20 @@
"AIR": {
"key": "cobblemon:air/bird",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -167,6 +176,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -184,21 +196,18 @@
"fly": {
"canFly": true
},
"walking": {
"walkSpeed": 0.19
},
"swim": {
"avoidsWater": true
},
"walking": {
"walkSpeed": 0.19
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
}
},
"drops": {
@@ -401,6 +410,11 @@
},
"baseExperienceYield": 207,
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -411,18 +425,13 @@
]
},
"moving": {
"swim": {
"avoidsWater": true
},
"fly": {
"canFly": true
},
"swim": {
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -541,6 +541,12 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -560,16 +566,10 @@
"canSwimInLava": true
}
},
"combat": {
"willDefendOwner": true,
"willFlee": false,
"willDefendSelf": true
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"fireImmune": true
}
},
"drops": {
"amount": 2,
@@ -762,6 +762,12 @@
},
"baseExperienceYield": 196,
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -777,16 +783,10 @@
"canSwimInLava": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"fireImmune": true
}
},
"evolutions": [],
"battleOnly": true,
@@ -56,15 +56,33 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.pow(math.min(math.max(0.5,(q.ride_velocity()*0.5 / 1.5) + 0.5), 1.0),2)",
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.saucer",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.saucer.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.saucer.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -160,6 +178,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "3"
},
@@ -176,17 +199,12 @@
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0014,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -54,11 +54,20 @@
"AIR": {
"key": "cobblemon:air/bird",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -93,8 +102,8 @@
{
"offset": {
"x": 0.003290192,
"y": -1.3213174,
"z": 0.215731
"y": -1.2900676,
"z": 0.17198098
},
"poseTypes": [
"STAND"
@@ -133,8 +142,8 @@
{
"offset": {
"x": 0.003290192,
"y": -1.3213174,
"z": 0.215731
"y": -1.2900676,
"z": 0.17198098
},
"poseTypes": [
"FLOAT"
@@ -152,9 +161,9 @@
},
{
"offset": {
"x": 0.003290192,
"y": -1.3213174,
"z": 0.215731
"x": -2.4577955E-4,
"y": -1.4635844,
"z": -0.041512404
},
"poseTypes": [
"GLIDE"
@@ -165,6 +174,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9"
},
@@ -172,23 +186,18 @@
"fly": {
"canFly": true
},
"walk": {
"walkSpeed": 0.24
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.24
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -57,15 +57,33 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.pow(math.min(math.max(0.5,(q.ride_velocity()*0.5 / 1.5) + 0.5), 1.0),2)",
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.saucer",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.saucer.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.saucer.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -99,7 +117,7 @@
"poseOffsets": [
{
"offset": {
"x": -0.0007805396,
"x": -7.805396E-4,
"y": -1.2943133,
"z": -0.40744212
},
@@ -119,7 +137,7 @@
},
{
"offset": {
"x": 0.0007733833,
"x": 7.733833E-4,
"y": -1.4106412,
"z": -0.3683446
},
@@ -129,7 +147,7 @@
},
{
"offset": {
"x": 0.0007733833,
"x": 7.733833E-4,
"y": -1.4106412,
"z": -0.4224712
},
@@ -139,7 +157,7 @@
},
{
"offset": {
"x": 0.0007733833,
"x": 7.733833E-4,
"y": -1.4106412,
"z": -0.3683446
},
@@ -149,7 +167,7 @@
},
{
"offset": {
"x": 0.0007733833,
"x": 7.733833E-4,
"y": -1.4106412,
"z": -0.4224712
},
@@ -159,7 +177,7 @@
},
{
"offset": {
"x": 0.0007733833,
"x": 7.733833E-4,
"y": -1.4106412,
"z": -0.3683446
},
@@ -356,7 +374,7 @@
},
{
"offset": {
"x": 0.000753602,
"x": 7.53602E-4,
"y": -1.3993053,
"z": 0.38156968
},
@@ -366,7 +384,7 @@
},
{
"offset": {
"x": 0.000753602,
"x": 7.53602E-4,
"y": -1.3993053,
"z": 0.3274431
},
@@ -376,7 +394,7 @@
},
{
"offset": {
"x": 0.000753602,
"x": 7.53602E-4,
"y": -1.3993053,
"z": 0.38156968
},
@@ -386,7 +404,7 @@
},
{
"offset": {
"x": 0.000753602,
"x": 7.53602E-4,
"y": -1.3993053,
"z": 0.3274431
},
@@ -396,7 +414,7 @@
},
{
"offset": {
"x": 0.000753602,
"x": 7.53602E-4,
"y": -1.3993053,
"z": 0.38156968
},
@@ -409,6 +427,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "6"
},
@@ -425,17 +448,12 @@
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0014,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -644,31 +662,31 @@
},
"baseExperienceYield": 350,
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "7"
},
"resting": {
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"moving": {
"swim": {
"avoidsWater": true
},
"fly": {
"canFly": true
},
"swim": {
"avoidsWater": true
},
"walk": {
"canWalk": false
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
"resting": {
"drowsyChance": 0.0014,
"rouseChance": 0.0042,
"times": [
"any"
]
}
},
"evolutions": [],
@@ -54,8 +54,35 @@
"behaviours": {
"LIQUID": {
"key": "cobblemon:liquid/submarine",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_sufrace.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.water_surface.mono",
"submerged": false,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.underwater.stereo",
"submerged": true,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
"hitboxBreachPercentage": 0.9,
"rideSounds": [],
"stats": {
"ACCELERATION": "25-40",
"JUMP": "50-75",
@@ -148,6 +175,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -172,14 +202,11 @@
}
},
"resting": {
"drowsyChance": 0.0014,
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
]
}
},
"drops": {
@@ -54,11 +54,20 @@
"AIR": {
"key": "cobblemon:air/bird",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -244,22 +253,22 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"moving": {
"fly": {
"canFly": true
},
"walking": {
"walkSpeed": 0.2
},
"swim": {
"avoidsWater": true
},
"walking": {
"walkSpeed": 0.2
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -465,19 +474,19 @@
},
"baseExperienceYield": 350,
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"moving": {
"swim": {
"avoidsWater": true
},
"fly": {
"canFly": true
},
"swim": {
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -52,7 +52,34 @@
"behaviours": {
"LIQUID": {
"key": "cobblemon:liquid/dolphin",
"rideSounds": [],
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_sufrace.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.water_surface.mono",
"submerged": false,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.underwater.stereo",
"submerged": true,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
"stats": {
"ACCELERATION": "55-85",
"JUMP": "45-75",
@@ -145,6 +172,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -172,11 +204,6 @@
"walkSpeed": 0.7
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -356,6 +383,11 @@
},
"baseExperienceYield": 196,
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -378,11 +410,6 @@
"avoidsLand": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -144,6 +144,9 @@
]
},
"behaviour": {
"combat": {
"willFlee": false
},
"herd": {
"maxSize": "8"
},
@@ -159,17 +162,14 @@
},
"resting": {
"canSleep": true,
"light": "0-14",
"sleepChance": "0.0023",
"depth": "comatose",
"drowsyChance": 0.0028,
"light": "0-14",
"rouseChance": 0.0028,
"sleepChance": "0.0023",
"times": [
"any"
],
"drowsyChance": 0.0028,
"rouseChance": 0.0028
},
"combat": {
"willFlee": false
]
}
},
"drops": {
@@ -55,11 +55,20 @@
"AIR": {
"key": "cobblemon:air/bird",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -68,7 +77,7 @@
"JUMP": "70-90",
"SKILL": "20-40",
"SPEED": "20-45",
"STAMINA": "40-70"
"STAMINA": "55-80"
}
},
"LAND": {
@@ -79,7 +88,7 @@
"JUMP": "10-20",
"SKILL": "30-50",
"SPEED": "15-25",
"STAMINA": "50-80"
"STAMINA": "55-85"
}
}
},
@@ -245,6 +254,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "6",
"toleratedLeaders": [
@@ -262,23 +276,18 @@
"fly": {
"canFly": true
},
"walk": {
"walkSpeed": 0.147
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.147
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -66,8 +66,35 @@
},
"LIQUID": {
"key": "cobblemon:liquid/submarine",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_sufrace.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.water_surface.mono",
"submerged": false,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.underwater.stereo",
"submerged": true,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
"hitboxBreachPercentage": 0.75,
"rideSounds": [],
"stats": {
"ACCELERATION": "30-55",
"JUMP": "25-40",
@@ -160,6 +187,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "6",
"toleratedLeaders": [
@@ -189,12 +219,9 @@
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
}
},
"drops": {
@@ -66,8 +66,35 @@
},
"LIQUID": {
"key": "cobblemon:liquid/submarine",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_sufrace.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.water_surface.mono",
"submerged": false,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.underwater.stereo",
"submerged": true,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
"hitboxBreachPercentage": 0.85,
"rideSounds": [],
"stats": {
"ACCELERATION": "20-45",
"JUMP": "40-55",
@@ -1582,6 +1609,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "7",
"toleratedLeaders": [
@@ -1606,13 +1636,10 @@
},
"resting": {
"canSleep": true,
"light": "0-4",
"depth": "comatose",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
}
},
"drops": {
@@ -225,6 +225,10 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"fireImmune": true,
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -245,14 +249,10 @@
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
},
"fireImmune": true
}
},
"drops": {
"amount": 2,
@@ -57,15 +57,33 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.pow(math.min(math.max(0.5,(q.ride_velocity()*0.5 / 1.5) + 0.5), 1.0),2)",
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.saucer",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.saucer.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.saucer.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -240,6 +258,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "3"
},
@@ -256,18 +279,13 @@
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0014,
"light": "0-14",
"rouseChance": 0.0042,
"sleepChance": "0.0023",
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -54,11 +54,20 @@
"AIR": {
"key": "cobblemon:air/hover",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -81,7 +90,7 @@
"poseOffsets": [
{
"offset": {
"x": 2.9055437e-18,
"x": 2.9055437E-18,
"y": -3.171875,
"z": 0.53125
},
@@ -101,7 +110,7 @@
},
{
"offset": {
"x": 2.9055437e-18,
"x": 2.9055437E-18,
"y": -3.171875,
"z": 0.53125
},
@@ -121,7 +130,7 @@
},
{
"offset": {
"x": 2.9055437e-18,
"x": 2.9055437E-18,
"y": -3.171875,
"z": 0.53125
},
@@ -141,7 +150,7 @@
},
{
"offset": {
"x": 2.9055437e-18,
"x": 2.9055437E-18,
"y": -3.171875,
"z": 0.53125
},
@@ -154,6 +163,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "7",
"toleratedLeaders": [
@@ -176,15 +188,12 @@
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0033,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"day"
],
"drowsyChance": 0.0033,
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
]
}
},
"drops": {
@@ -52,11 +52,20 @@
"AIR": {
"key": "cobblemon:air/hover",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -152,6 +161,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "4"
},
@@ -168,17 +182,12 @@
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0033,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"day"
],
"drowsyChance": 0.0033,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -56,11 +56,20 @@
"speed": "Math.clamp(q.entity.velocity.horizontal_magnitude + 0.33, 0, 1)",
"key": "cobblemon:air/jet",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -98,13 +107,21 @@
},
"LIQUID": {
"key": "cobblemon:liquid/boat",
"surfaceLevelOffset": -1.7,
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_sufrace.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_surface",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.water_surface.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -114,7 +131,8 @@
"SKILL": "10-25",
"SPEED": "35-60",
"STAMINA": "5-10"
}
},
"surfaceLevelOffset": -1.7
}
},
"seats": [
@@ -167,7 +185,7 @@
},
{
"offset": {
"x": 0.0006860052,
"x": 6.860052E-4,
"y": -2.1426969,
"z": -0.23987202
},
@@ -187,7 +205,7 @@
},
{
"offset": {
"x": 0.0008643751,
"x": 8.643751E-4,
"y": -2.4092257,
"z": -0.33146888
},
@@ -200,6 +218,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "7"
},
@@ -208,8 +231,8 @@
"canFly": true
},
"swim": {
"canSwim": true,
"avoidsWater": true,
"canSwim": true,
"canWalkOnWater": true
},
"walk": {
@@ -218,14 +241,9 @@
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -415,22 +433,22 @@
},
"baseExperienceYield": 350,
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "8"
},
"moving": {
"swim": {
"avoidsWater": true
},
"fly": {
"canFly": true
},
"swim": {
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -149,6 +149,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"moving": {
"swim": {
"canBreatheUnderwater": true,
@@ -160,9 +163,6 @@
"walkSpeed": "0.2"
}
},
"combat": {
"willDefendOwner": true
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -327,18 +327,18 @@
"east-sea"
],
"behaviour": {
"moving": {
"walk": {
"avoidsLand": true
},
"swim": {
"canSwimInWater": false,
"canBreatheUnderwater": true
}
},
"combat": {
"willDefendOwner": true
},
"moving": {
"swim": {
"canBreatheUnderwater": true,
"canSwimInWater": false
},
"walk": {
"avoidsLand": true
}
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -224,24 +224,24 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"moving": {
"walk": {
"walkSpeed": 0.2
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.2
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -57,15 +57,33 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.pow(math.min(math.max(0.5,(q.ride_velocity()*0.5 / 1.5) + 0.5), 1.0),2)",
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.saucer",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.saucer.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.saucer.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -161,6 +179,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9"
},
@@ -177,17 +200,12 @@
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0014,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -73,7 +73,7 @@
"poseOffsets": [
{
"offset": {
"x": 2.4365345e-18,
"x": 2.4365345E-18,
"y": -3.493299,
"z": -1.1497737
},
@@ -93,7 +93,7 @@
},
{
"offset": {
"x": 2.4365345e-18,
"x": 2.4365345E-18,
"y": -3.493299,
"z": -1.1497737
},
@@ -103,7 +103,7 @@
},
{
"offset": {
"x": 2.4365345e-18,
"x": 2.4365345E-18,
"y": -3.493299,
"z": -1.1497737
},
@@ -113,7 +113,7 @@
},
{
"offset": {
"x": 2.4365345e-18,
"x": 2.4365345E-18,
"y": -3.493299,
"z": -1.1497737
},
@@ -133,7 +133,7 @@
},
{
"offset": {
"x": 2.4365345e-18,
"x": 2.4365345E-18,
"y": -3.493299,
"z": -1.1497737
},
@@ -304,6 +304,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "8",
"toleratedLeaders": [
@@ -314,23 +319,18 @@
]
},
"moving": {
"walk": {
"walkSpeed": 0.2
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.2
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -74,7 +74,7 @@
"poseOffsets": [
{
"offset": {
"x": 0.00012022187,
"x": 1.2022187E-4,
"y": -3.0589306,
"z": -0.023141712
},
@@ -147,6 +147,12 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "2"
},
@@ -159,16 +165,10 @@
"walkSpeed": 0.2
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"fireImmune": true
}
},
"drops": {
"amount": 2,
@@ -56,15 +56,33 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.plumage",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.plumage.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.plumage.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -100,7 +118,7 @@
"poseOffsets": [
{
"offset": {
"x": 0.0009571392,
"x": 9.571392E-4,
"y": -1.234365,
"z": 0.35967734
},
@@ -140,7 +158,7 @@
},
{
"offset": {
"x": 0.0009571392,
"x": 9.571392E-4,
"y": -1.234365,
"z": 0.35967734
},
@@ -160,7 +178,7 @@
},
{
"offset": {
"x": 0.0009571392,
"x": 9.571392E-4,
"y": -1.234365,
"z": 0.35967734
},
@@ -173,25 +191,25 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9"
},
"moving": {
"walk": {
"walkSpeed": 0.2
},
"fly": {
"canFly": true
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.2
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -55,11 +55,20 @@
"AIR": {
"key": "cobblemon:air/jet",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -168,6 +177,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "8",
"toleratedLeaders": [
@@ -181,21 +193,18 @@
"fly": {
"canFly": true
},
"walk": {
"walkSpeed": 0.14
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.14
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
}
},
"drops": {
@@ -145,6 +145,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -158,21 +163,16 @@
}
]
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"moving": {
"swim": {
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
"resting": {
"canSleep": true,
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
}
},
"drops": {
@@ -168,6 +168,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -181,23 +186,18 @@
"fly": {
"canFly": true
},
"walk": {
"walkSpeed": 0.2
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.2
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -376,15 +376,33 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.plumage",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.plumage.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.plumage.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -393,7 +411,7 @@
"JUMP": "40-60",
"SKILL": "30-50",
"SPEED": "40-65",
"STAMINA": "60-00"
"STAMINA": "60-90"
}
},
"LAND": {
@@ -493,6 +511,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -503,18 +526,13 @@
]
},
"moving": {
"swim": {
"avoidsWater": true
},
"fly": {
"canFly": true
},
"swim": {
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -384,25 +384,25 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"moving": {
"walk": {
"walkSpeed": 0.15
},
"swim": {
"avoidsWater": true,
"canSwimInWater": false
},
"walk": {
"walkSpeed": 0.15
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -147,6 +147,12 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "5",
"toleratedLeaders": [
@@ -157,26 +163,20 @@
]
},
"moving": {
"walk": {
"walkSpeed": 0.3
},
"swim": {
"avoidsWater": true,
"canSwimInLava": true
},
"walk": {
"walkSpeed": 0.3
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"fireImmune": true
}
},
"drops": {
"amount": 1,
@@ -368,6 +368,11 @@
"width": 1.3
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "5",
"toleratedLeaders": [
@@ -377,26 +382,21 @@
}
]
},
"resting": {
"depth": "comatose",
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"moving": {
"walk": {
"canWalk": false
},
"canLook": false,
"swim": {
"avoidsWater": true,
"canSwimInWater": false
},
"canLook": false
"walk": {
"canWalk": false
}
},
"combat": {
"willDefendOwner": true,
"willFlee": false
},
"fireImmune": true
"resting": {
"depth": "comatose",
"drowsyChance": 0.0333,
"rouseChance": 0.0042
}
},
"moves": [
"1:tackle",
@@ -549,6 +549,11 @@
"h:zenmode"
],
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "5",
"toleratedLeaders": [
@@ -563,11 +568,6 @@
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -745,6 +745,12 @@
},
"baseExperienceYield": 189,
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "5",
"toleratedLeaders": [
@@ -755,27 +761,21 @@
]
},
"moving": {
"fly": {
"canFly": true
},
"swim": {
"avoidsWater": true,
"canSwimInLava": true
},
"walk": {
"canWalk": false
},
"fly": {
"canFly": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"fireImmune": true
}
},
"drops": {
"amount": 2,
@@ -54,18 +54,36 @@
"AIR": {
"key": "cobblemon:air/rocket",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.driver_input() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.rocket.stereo",
"volumeExpr": "math.pow(math.min((q.driver_input() / 1.5) + (q.ride_velocity() / 1.5), 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.driver_input() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.rocket",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.rocket.mono",
"volumeExpr": "math.pow(math.min((q.driver_input() / 1.5) + (q.ride_velocity() / 1.5), 1.0),2)"
}
],
@@ -331,34 +349,34 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "3"
},
"moving": {
"fly": {
"canFly": true
},
"swim": {
"avoidsWater": true,
"canSwimInWater": false
},
"walk": {
"walkSpeed": 0.35
},
"fly": {
"canFly": true
}
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0014,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -57,15 +57,33 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.leather",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.leather.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.leather.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -101,7 +119,7 @@
"poseOffsets": [
{
"offset": {
"x": 8.215185e-05,
"x": 8.215185E-5,
"y": -2.4957511,
"z": 0.10059106
},
@@ -121,7 +139,7 @@
},
{
"offset": {
"x": 8.215185e-05,
"x": 8.215185E-5,
"y": -2.4957511,
"z": 0.10059106
},
@@ -253,6 +271,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "5"
},
@@ -266,17 +289,12 @@
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0014,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -53,11 +53,20 @@
"AIR": {
"key": "cobblemon:air/hover",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -153,6 +162,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "8",
"toleratedLeaders": [
@@ -175,17 +189,12 @@
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0014,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -145,28 +145,28 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "5"
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"walk": {
"canWalk": true,
"walkSpeed": 0.19
},
"moving": {
"swim": {
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
"resting": {
"canSleep": true,
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"walk": {
"canWalk": true,
"walkSpeed": 0.19
}
},
"drops": {
@@ -53,11 +53,20 @@
"AIR": {
"key": "cobblemon:air/bird",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -166,6 +175,12 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "5"
},
@@ -179,18 +194,12 @@
}
},
"resting": {
"drowsyChance": 0.0014,
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"fireImmune": true
]
}
},
"drops": {
"amount": 3,
@@ -145,6 +145,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -171,21 +174,18 @@
]
},
"moving": {
"walk": {
"walkSpeed": 0.24
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.24
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
}
},
"drops": {
@@ -144,6 +144,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -154,21 +157,18 @@
]
},
"moving": {
"walk": {
"walkSpeed": 0.4
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.4
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
}
},
"drops": {
@@ -58,15 +58,33 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.leather",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.leather.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.leather.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -173,6 +191,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -190,17 +213,12 @@
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0014,
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
]
}
},
"drops": {
@@ -71,7 +71,7 @@
"poseOffsets": [
{
"offset": {
"x": -1.3886806e-19,
"x": -1.3886806E-19,
"y": -0.85467255,
"z": 0.19203149
},
@@ -91,7 +91,7 @@
},
{
"offset": {
"x": -1.3886806e-19,
"x": -1.3886806E-19,
"y": -0.85467255,
"z": 0.19203149
},
@@ -101,7 +101,7 @@
},
{
"offset": {
"x": -1.3886806e-19,
"x": -1.3886806E-19,
"y": -0.85467255,
"z": 0.19203149
},
@@ -111,7 +111,7 @@
},
{
"offset": {
"x": -1.3886806e-19,
"x": -1.3886806E-19,
"y": -0.85467255,
"z": 0.19203149
},
@@ -121,7 +121,7 @@
},
{
"offset": {
"x": -1.3886806e-19,
"x": -1.3886806E-19,
"y": -0.85467255,
"z": 0.19203149
},
@@ -131,7 +131,7 @@
},
{
"offset": {
"x": -1.3886806e-19,
"x": -1.3886806E-19,
"y": -0.85467255,
"z": 0.19203149
},
@@ -144,6 +144,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -158,21 +161,18 @@
]
},
"moving": {
"walk": {
"walkSpeed": 0.35
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.35
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
}
},
"drops": {
@@ -226,6 +226,12 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"fireImmune": true,
"herd": {
"maxSize": "7"
},
@@ -240,16 +246,10 @@
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"fireImmune": true
}
},
"drops": {
"amount": 1,
@@ -65,8 +65,35 @@
},
"LIQUID": {
"key": "cobblemon:liquid/submarine",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_sufrace.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.water_surface.mono",
"submerged": false,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.underwater.stereo",
"submerged": true,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
"hitboxBreachPercentage": 0.75,
"rideSounds": [],
"stats": {
"ACCELERATION": "40-55",
"JUMP": "70-100",
@@ -159,7 +186,15 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"moving": {
"fly": {
"canFly": true
},
"swim": {
"canBreatheUnderwater": true,
"swimSpeed": 0.2
@@ -167,24 +202,16 @@
"walk": {
"avoidsLand": true,
"canWalk": false
},
"fly": {
"canFly": true
}
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0014,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -93,7 +93,7 @@
{
"offset": {
"x": 0.0,
"y": -1.7750001,
"y": -1.9312501,
"z": 0.25
},
"poseTypes": [
@@ -103,7 +103,7 @@
{
"offset": {
"x": 0.0,
"y": -1.7750001,
"y": -1.9312501,
"z": 0.25
},
"poseTypes": [
@@ -133,7 +133,7 @@
{
"offset": {
"x": 0.0,
"y": -1.7750001,
"y": -1.9312501,
"z": 0.25
},
"poseTypes": [
@@ -145,6 +145,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -171,23 +176,18 @@
]
},
"moving": {
"walk": {
"walkSpeed": 0.27
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.27
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -57,15 +57,33 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.plumage",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.plumage.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.plumage.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -99,7 +117,7 @@
"poseOffsets": [
{
"offset": {
"x": 3.7252903e-09,
"x": 3.7252903E-9,
"y": -3.2956975,
"z": 0.12137693
},
@@ -159,7 +177,7 @@
},
{
"offset": {
"x": 3.7252903e-09,
"x": 3.7252903E-9,
"y": -3.2956975,
"z": 0.12137693
},
@@ -178,7 +196,7 @@
"poseOffsets": [
{
"offset": {
"x": 3.7252903e-09,
"x": 3.7252903E-9,
"y": -2.5119905,
"z": 0.53009856
},
@@ -238,7 +256,7 @@
},
{
"offset": {
"x": 3.7252903e-09,
"x": 3.7252903E-9,
"y": -2.5119905,
"z": 0.53009856
},
@@ -251,6 +269,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -264,23 +287,18 @@
"fly": {
"canFly": true
},
"walk": {
"walkSpeed": 0.18
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.18
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -57,11 +57,20 @@
"speed": "Math.clamp(q.entity.velocity.horizontal_magnitude + 0.33, 0, 1)",
"key": "cobblemon:air/jet",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
@@ -187,6 +196,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "7",
"toleratedLeaders": [
@@ -207,17 +221,12 @@
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0021,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"167-11833,13702-22299"
],
"drowsyChance": 0.0021,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
]
}
},
"drops": {
@@ -85,7 +85,7 @@
},
{
"offset": {
"x": -0.000930856,
"x": -9.30856E-4,
"y": -1.8752725,
"z": 0.43995833
},
@@ -148,23 +148,23 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"entityInteract": {
"avoidedByCreeper": true,
"avoidedByPhantom": true
},
"moving": {
"walk": {
"walkSpeed": 0.35
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.35
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -225,27 +225,27 @@
]
},
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.28
},
"swim": {
"avoidsWater": true
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "4"
},
"moving": {
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.28
}
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
}
},
"drops": {
@@ -466,25 +466,25 @@
"baseExperienceYield": 278,
"catchRate": 5,
"behaviour": {
"moving": {
"swim": {
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "5"
},
"moving": {
"swim": {
"avoidsWater": true
}
},
"resting": {
"drowsyChance": 0.0033,
"rouseChance": 0.0042,
"times": [
"day"
],
"drowsyChance": 0.0033,
"rouseChance": 0.0042
]
}
},
"moves": [
@@ -146,6 +146,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -155,24 +160,19 @@
}
]
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"rouseChance": 0.0042
},
"walking": {
"walkSpeed": 0.24
},
"moving": {
"swim": {
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
"resting": {
"canSleep": true,
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"walking": {
"walkSpeed": 0.24
}
},
"drops": {
@@ -145,6 +145,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "2",
"toleratedLeaders": [
@@ -167,9 +170,6 @@
"avoidsWater": true
}
},
"combat": {
"willDefendOwner": true
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -65,8 +65,35 @@
},
"LIQUID": {
"key": "cobblemon:liquid/submarine",
"rideSounds": [
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.water_sufrace.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.water_surface.mono",
"submerged": false,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.underwater.stereo",
"submerged": true,
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
"hitboxBreachPercentage": 0.7,
"rideSounds": [],
"stats": {
"ACCELERATION": "45-65",
"JUMP": "10-25",
@@ -633,6 +660,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "6",
"toleratedLeaders": [
@@ -656,11 +688,6 @@
"walkSpeed": 0.172
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0333,
"rouseChance": 0.0042
@@ -69,7 +69,7 @@
"poseOffsets": [
{
"offset": {
"x": -0.0006778786,
"x": -6.778786E-4,
"y": -0.6114769,
"z": 0.07402088
},
@@ -89,7 +89,7 @@
},
{
"offset": {
"x": 0.00037311524,
"x": 3.7311524E-4,
"y": -0.63224316,
"z": 0.13529435
},
@@ -99,7 +99,7 @@
},
{
"offset": {
"x": 0.00037311524,
"x": 3.7311524E-4,
"y": -0.63224316,
"z": 0.13529435
},
@@ -109,7 +109,7 @@
},
{
"offset": {
"x": 0.00037311524,
"x": 3.7311524E-4,
"y": -0.63224316,
"z": 0.13529435
},
@@ -119,7 +119,7 @@
},
{
"offset": {
"x": 0.00037311524,
"x": 3.7311524E-4,
"y": -0.63224316,
"z": 0.13529435
},
@@ -129,7 +129,7 @@
},
{
"offset": {
"x": 0.00037311524,
"x": 3.7311524E-4,
"y": -0.63224316,
"z": 0.13529435
},
@@ -221,25 +221,25 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"moving": {
"walk": {
"walkSpeed": 0.15
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.15
}
},
"resting": {
"canSleep": true,
"drowsyChance": 0.0014,
"light": "0-4",
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
]
}
},
"drops": {
@@ -465,7 +465,7 @@
"poseOffsets": [
{
"offset": {
"x": -0.0006778786,
"x": -6.778786E-4,
"y": -0.6114769,
"z": 0.07402088
},
@@ -485,7 +485,7 @@
},
{
"offset": {
"x": 0.00037311524,
"x": 3.7311524E-4,
"y": -0.63224316,
"z": 0.13529435
},
@@ -495,7 +495,7 @@
},
{
"offset": {
"x": 0.00037311524,
"x": 3.7311524E-4,
"y": -0.63224316,
"z": 0.13529435
},
@@ -505,7 +505,7 @@
},
{
"offset": {
"x": 0.00037311524,
"x": 3.7311524E-4,
"y": -0.63224316,
"z": 0.13529435
},
@@ -515,7 +515,7 @@
},
{
"offset": {
"x": 0.00037311524,
"x": 3.7311524E-4,
"y": -0.63224316,
"z": 0.13529435
},
@@ -525,7 +525,7 @@
},
{
"offset": {
"x": 0.00037311524,
"x": 3.7311524E-4,
"y": -0.63224316,
"z": 0.13529435
},
@@ -145,6 +145,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -159,23 +164,18 @@
]
},
"moving": {
"walk": {
"walkSpeed": 0.3
},
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.3
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -146,6 +146,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -157,21 +162,16 @@
},
"moving": {
"canWalk": true,
"walkSpeed": "0.35",
"swim": {
"avoidsWater": true
}
},
"walkSpeed": "0.35"
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
@@ -58,23 +58,41 @@
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.wind.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"soundLocation": "cobblemon:ride.loop.plumage",
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.wind.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": false,
"playForPassengers": true,
"soundLocation": "cobblemon:ride.loop.plumage.stereo",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
},
{
"muffleEnabled": true,
"pitchExpr": "math.max(1.0 ,0.2 + math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2))",
"playForNonPassengers": true,
"playForPassengers": false,
"soundLocation": "cobblemon:ride.loop.plumage.mono",
"volumeExpr": "math.pow(math.min(q.ride_velocity() / 1.5, 1.0),2)"
}
],
"stats": {
"ACCELERATION": "35-50",
"JUMP": "50-65",
"SKILL": "45-60",
"SPEED": "30-40",
"JUMP": "50-70",
"SKILL": "40-65",
"SPEED": "30-45",
"STAMINA": "40-65"
}
},
@@ -175,6 +193,9 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true
},
"herd": {
"maxSize": "9",
"toleratedLeaders": [
@@ -193,8 +214,8 @@
"canFly": true
},
"swim": {
"swimSpeed": "0.2",
"canWalkOnWater": true
"canWalkOnWater": true,
"swimSpeed": "0.2"
},
"walk": {
"walkSpeed": 0.21
@@ -202,12 +223,9 @@
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendOwner": true
}
},
"drops": {
@@ -81,7 +81,7 @@
},
{
"offset": {
"x": -2.6898228e-18,
"x": -2.6898228E-18,
"y": -0.5152839,
"z": -0.24532038
},
@@ -121,7 +121,7 @@
},
{
"offset": {
"x": -2.6898228e-18,
"x": -2.6898228E-18,
"y": -0.5152839,
"z": -0.24532038
},
@@ -144,22 +144,22 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"moving": {
"swim": {
"avoidsWater": true
}
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
},
"resting": {
"drowsyChance": 0.0014,
"rouseChance": 0.0042,
"times": [
"any"
],
"drowsyChance": 0.0014,
"rouseChance": 0.0042
]
}
},
"drops": {
@@ -224,6 +224,11 @@
]
},
"behaviour": {
"combat": {
"willDefendOwner": true,
"willDefendSelf": true,
"willFlee": false
},
"herd": {
"maxSize": "5",
"toleratedLeaders": [
@@ -234,23 +239,18 @@
]
},
"moving": {
"swim": {
"avoidsWater": true
},
"fly": {
"canFly": true
},
"swim": {
"avoidsWater": true
}
},
"resting": {
"canSleep": true,
"light": "0-4",
"drowsyChance": 0.0333,
"light": "0-4",
"rouseChance": 0.0042
},
"combat": {
"willDefendSelf": true,
"willDefendOwner": true,
"willFlee": false
}
},
"drops": {
+1 -1
View File
@@ -13,7 +13,7 @@ parchment_version = 2024.07.28@zip
java_version = 21
mod_id=cobblemon
mod_version=1.7.2
mod_version=1.7.3
snapshot=false
fabric.loom.multiProjectOptimisation=false
+1 -1
View File
@@ -57,6 +57,6 @@ How to run:
3. Run this new configuration
4. A new window on the right-hand side should open, where you can evaluate code.
8. Go into a superflat singleplayer world, go to [0, -60, 0]
8. Go into a superflat singleplayer world, go to [0, -60, 0] (make sure Pokémon are in your field of view)
9. Copy script and paste it into the REPL console
10. Wait a couple seconds, then reload your species directory.
+14 -6
View File
@@ -223,13 +223,19 @@
(:body)
(csv/read-csv))))
(defn normalize-sound-json [v]
(cond
(vector? v) v
(map? v) [v]
:else []))
(defn get-sound-mappings []
(let [data (->> (client/get "https://docs.google.com/spreadsheets/u/1/d/1YhQlnH6m-tlkVbopIg5KLV8BFaaDCgZNkx3dIAy5PZ0/export?format=csv&id=1YhQlnH6m-tlkVbopIg5KLV8BFaaDCgZNkx3dIAy5PZ0&gid=513653624")
(:body)
(csv/read-csv)
(rest)
(into {}))]
(update-vals data #(read-str % :key-fn keyword))))
(update-vals data #(-> % (read-str :key-fn keyword) normalize-sound-json))))
(def sound-headers
[:generation :dex-no :species
@@ -246,10 +252,12 @@
(map #(assoc % :form (or (:form %) "Normal")))))
(defn condense-sound-type [sound-data sound-mappings riding-type]
(let [keys (map #(concat-keyword riding-type (str "riding-sound-" %)) [1 2 3 4 5])
values (vec (filter not-empty (map #(get sound-data %) keys)))
json (map #(get sound-mappings %) values)]
(vec json)))
(->> (map #(concat-keyword riding-type (str "riding-sound-" %)) [1 2 3 4 5])
(map #(get sound-data %))
(filter not-empty)
(mapcat #(get sound-mappings %))
vec))
(defn sound-data->json [sound-mappings sound-data riding-type]
(->> (map #(assoc % :sound-json (condense-sound-type % sound-mappings riding-type)) sound-data)
@@ -560,7 +568,7 @@
(defn generate-seat-data
"Generates per-pose seat data for a species (and optional form)"
[species-data]
(let [species (.getByName PokemonSpecies/INSTANCE (sanitize-species-name (:species species-data)))
(let [species (PokemonSpecies/getByName (sanitize-species-name (:species species-data)))
form (.getFormByName species (sanitize-species-name (or (:form species-data) "Normal")))
seat-data (map (fn [x] {(.name x) (render-pokemon species form x)}) (remove ignored-poses (PoseType/getEntries)))
non-nil-seat-data (filter #(val (first %)) seat-data)]