mirror of
https://gitlab.com/cable-mc/cobblemon.git
synced 2026-11-02 06:19:55 -05:00
Compare commits
171
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a9d671033 | ||
|
|
f6124d7474 | ||
|
|
a0300ccd18 | ||
|
|
486056d7f0 | ||
|
|
03ca6a4396 | ||
|
|
b2d26abc4b | ||
|
|
ebb677cc9c | ||
|
|
f181aabb3c | ||
|
|
4df5e987c7 | ||
|
|
3026e5c66f | ||
|
|
f2310d8979 | ||
|
|
65971386f2 | ||
|
|
5b52fe5479 | ||
|
|
13ca5871cb | ||
|
|
54ba99a002 | ||
|
|
b40f47b00d | ||
|
|
800d348611 | ||
|
|
d4dd48b3ff | ||
|
|
89d6bb2356 | ||
|
|
3a65425015 | ||
|
|
0ded29dcad | ||
|
|
62fae979eb | ||
|
|
bae26162dd | ||
|
|
ad7a881fdc | ||
|
|
f9a2b5cc9c | ||
|
|
e2cc006c7c | ||
|
|
13240d28ea | ||
|
|
5324b7b19e | ||
|
|
5bddc31cbf | ||
|
|
72bc2221af | ||
|
|
9099cb4b5d | ||
|
|
99e0b7d995 | ||
|
|
372f44538b | ||
|
|
0bec3ac851 | ||
|
|
17b8dd3532 | ||
|
|
4cf8a19d43 | ||
|
|
f205e7f29e | ||
|
|
cec031595f | ||
|
|
af007dad17 | ||
|
|
8490f3a923 | ||
|
|
9bf6200163 | ||
|
|
f4dd73e4d9 | ||
|
|
4482a4f072 | ||
|
|
a92f37c740 | ||
|
|
4677dda922 | ||
|
|
81f7320e4a | ||
|
|
3c9cf42da4 | ||
|
|
620ed73fe9 | ||
|
|
7d09b7e2fe | ||
|
|
656cff2ab3 | ||
|
|
1d8462fd63 | ||
|
|
e417db6a8d | ||
|
|
16d0d3b7e1 | ||
|
|
dbedc58dd9 | ||
|
|
c0ea565967 | ||
|
|
7e92f5f314 | ||
|
|
df3ed93032 | ||
|
|
2335fd388e | ||
|
|
e152cc9fd0 | ||
|
|
3f7e2bef40 | ||
|
|
25927c6ebe | ||
|
|
2f18d6b05f | ||
|
|
2600e23233 | ||
|
|
5c5c72d800 | ||
|
|
2c812344f9 | ||
|
|
37b4577230 | ||
|
|
fcf64b00bf | ||
|
|
02b8cd81a0 | ||
|
|
def1b44f08 | ||
|
|
b28f915af9 | ||
|
|
29ce8b584a | ||
|
|
84f3a44109 | ||
|
|
08a58eee8a | ||
|
|
c10f48090c | ||
|
|
9c0e5e487a | ||
|
|
95f2bbbf15 | ||
|
|
864d184cd9 | ||
|
|
a2256f6208 | ||
|
|
945d556b43 | ||
|
|
f0def2e883 | ||
|
|
79c644dad0 | ||
|
|
87e41bdb89 | ||
|
|
2a21ecb06e | ||
|
|
8a8505d816 | ||
|
|
1a19c51748 | ||
|
|
8a66ab9235 | ||
|
|
ee50361555 | ||
|
|
d3631f1436 | ||
|
|
79e1f9143c | ||
|
|
bef0b2fb87 | ||
|
|
d7bbc05af8 | ||
|
|
7ca3ab5e30 | ||
|
|
1bbb1201c8 | ||
|
|
8ed4fee8af | ||
|
|
a3dacc2c3d | ||
|
|
c265f73308 | ||
|
|
670dedc0e2 | ||
|
|
6e19ee6059 | ||
|
|
a865d59b99 | ||
|
|
8896440451 | ||
|
|
39b27a8c17 | ||
|
|
aa2cf97811 | ||
|
|
69368e5e7e | ||
|
|
a0eb614f2a | ||
|
|
f579f660e5 | ||
|
|
7ec41b7afc | ||
|
|
0575899c28 | ||
|
|
a6e4aeb321 | ||
|
|
bb796921b5 | ||
|
|
9f6f764aa1 | ||
|
|
f115a87b66 | ||
|
|
412619e6d5 | ||
|
|
12d95e54ee | ||
|
|
77c880ff2d | ||
|
|
16c64b9d8e | ||
|
|
caeb45e9e1 | ||
|
|
6e341438e9 | ||
|
|
7407483498 | ||
|
|
020c728004 | ||
|
|
7125987c98 | ||
|
|
6448c4472e | ||
|
|
eedac70d13 | ||
|
|
025e09cd12 | ||
|
|
4d2cfb63ea | ||
|
|
40794acdd5 | ||
|
|
82f8855725 | ||
|
|
5abcdbb837 | ||
|
|
2f817a7f9a | ||
|
|
67767fc53a | ||
|
|
43cd4b8403 | ||
|
|
2660d73bb6 | ||
|
|
faa7ca5d19 | ||
|
|
0fcbe51d97 | ||
|
|
b23ad62f99 | ||
|
|
3ca4ce8f80 | ||
|
|
446a994195 | ||
|
|
60e7ac828d | ||
|
|
a870effd3b | ||
|
|
236237a170 | ||
|
|
0fc67ba042 | ||
|
|
997ab29d91 | ||
|
|
e74f54f1d0 | ||
|
|
081e368551 | ||
|
|
1538f58a4a | ||
|
|
e5103e5d03 | ||
|
|
1cea15c9e5 | ||
|
|
3395fe0140 | ||
|
|
2eff8d14eb | ||
|
|
ed3cdf9b75 | ||
|
|
6e1ba0599f | ||
|
|
497d5ce39b | ||
|
|
660de3ea03 | ||
|
|
5ab3d7b493 | ||
|
|
2ce0069484 | ||
|
|
d87fa57c95 | ||
|
|
69947b0b32 | ||
|
|
f4c3f9ae04 | ||
|
|
04e1a6b41c | ||
|
|
6ae2adb2d0 | ||
|
|
0bf6932fe5 | ||
|
|
71382a3bd1 | ||
|
|
0f4f29518b | ||
|
|
8aeeece0a3 | ||
|
|
850b418c80 | ||
|
|
42af2898b2 | ||
|
|
663399e2ac | ||
|
|
478d7207f5 | ||
|
|
6e2c191d30 | ||
|
|
7f088fa039 | ||
|
|
46e29fa4aa | ||
|
|
c55af7c856 |
No files matched your search
@@ -4,14 +4,22 @@
|
||||
### Fixes
|
||||
- Scaled down Amaura's fetus model to avoid clipping through the tank while animating
|
||||
- Added Polished Tumblestone and Tumblestone Brick block sets from Tumblestone, Black Tumblestone, and Sky Tumblestone.
|
||||
- Fixed Cubone's cry not having a sound.
|
||||
- Fixed the Seafloor spawning context not being a usable context.
|
||||
- Fixed Pokemon spawning in non-full blocks like slabs.
|
||||
- Fixed Gilded Chests not dropping the chest itself when broken, only the contents.
|
||||
- Fixed Pokémon losing their Hidden Ability through evolution if the middle stage did not have a Hidden Ability.
|
||||
- Fixed Crumbling Arch not blending in with the world.
|
||||
- Fixed Energy Root applying being usable on a fainted Pokemon.
|
||||
- Fixed Pokémon entity not spawning when starting a battle while recalling said Pokémon
|
||||
|
||||
### Additions
|
||||
- Added extra visuals to early berry growth stages
|
||||
|
||||
### Added cries to the following Pokémon
|
||||
- Timburr, Gurdurr, Conkeldurr
|
||||
- Golett, Golurk
|
||||
|
||||
### Changes
|
||||
- Altered the item model for Medicinal Leeks and Roasted Leeks to be held like sticks and other rod items.
|
||||
- Adjusted some berry balance values like yield and growth times
|
||||
|
||||
@@ -246,6 +246,10 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, RegistryKey<Regi
|
||||
val IMPACT_STEEL = this.create("impact.steel")
|
||||
@JvmField
|
||||
val IMPACT_WATER = this.create("impact.water")
|
||||
@JvmField
|
||||
val SUPER_EFFECTIVE = this.create("supereffective")
|
||||
@JvmField
|
||||
val NOT_VERY_EFFECTIVE = this.create("notveryeffective")
|
||||
|
||||
@JvmField
|
||||
val TUMBLESTONE_SOUNDS = BlockSoundGroup(1f, 1f,
|
||||
|
||||
+9
-3
@@ -21,13 +21,15 @@ import net.minecraft.registry.RegistryKeys
|
||||
/**
|
||||
* An action effect keyframe that plays a positioned sound for all matching entities.
|
||||
*
|
||||
* @author Hiroku
|
||||
* @author Hiroku, Waldleufer
|
||||
* @since January 21st, 2024
|
||||
*/
|
||||
class EntitySoundActionEffectKeyframe : ConditionalActionEffectKeyframe(), EntityConditionalActionEffectKeyframe {
|
||||
override val entityCondition = "q.entity.is_user".asExpressionLike()
|
||||
var sound: String? = null
|
||||
val delay: ExpressionLike = "0".asExpressionLike()
|
||||
val volume: ExpressionLike = "1".asExpressionLike()
|
||||
val pitch: ExpressionLike = "1".asExpressionLike()
|
||||
|
||||
override fun playWhenTrue(context: ActionEffectContext): CompletableFuture<Unit> {
|
||||
val entities = context.providers
|
||||
@@ -40,9 +42,13 @@ class EntitySoundActionEffectKeyframe : ConditionalActionEffectKeyframe(), Entit
|
||||
sound
|
||||
}?.asIdentifierDefaultingNamespace() ?: return skip()
|
||||
|
||||
val volumeValue = volume.resolveFloat(context.runtime)
|
||||
val pitchValue = pitch.resolveFloat(context.runtime)
|
||||
|
||||
entities.forEach { entity ->
|
||||
val soundEvent = entity.world.registryManager.get(RegistryKeys.SOUND_EVENT).get(soundIdentifier) ?: return skip()
|
||||
entity.playSound(soundEvent, 1f, 1f)
|
||||
val soundEvent =
|
||||
entity.world.registryManager.get(RegistryKeys.SOUND_EVENT).get(soundIdentifier) ?: return skip()
|
||||
entity.playSound(soundEvent, volumeValue, pitchValue)
|
||||
}
|
||||
|
||||
return delayedFuture(seconds = delay.resolveFloat(context.runtime), serverThread = true)
|
||||
|
||||
@@ -92,7 +92,6 @@ object ShowdownInterpreter {
|
||||
updateInstructionParser["-mustrecharge"] = { _, _, message, _ -> RechargeInstruction(message) }
|
||||
updateInstructionParser["replace"] = { _, _, message, _ -> ReplaceInstruction(message) }
|
||||
updateInstructionParser["-resisted"] = { _, _, message, _ -> ResistedInstruction(message) }
|
||||
updateInstructionParser["-resisted"] = { _, _, message, _ -> ResistedInstruction(message) }
|
||||
updateInstructionParser["-setboost"] = { _, _, message, _ -> SetBoostInstruction(message) }
|
||||
updateInstructionParser["-sideend"] = { _, _, message, _ -> SideEndInstruction(message) }
|
||||
updateInstructionParser["-sidestart"] = { _, _, message, _ -> SideStartInstruction(message) }
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* 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.battles.interpreter.instructions
|
||||
|
||||
import com.cobblemon.mod.common.api.battles.interpreter.BattleMessage
|
||||
import com.cobblemon.mod.common.battles.dispatch.InterpreterInstruction
|
||||
|
||||
interface EffectivenessInstruction : InterpreterInstruction {
|
||||
val message: BattleMessage
|
||||
val typeOfEffectiveness: String
|
||||
}
|
||||
+2
-2
@@ -11,7 +11,6 @@ package com.cobblemon.mod.common.battles.interpreter.instructions
|
||||
import com.cobblemon.mod.common.api.battles.interpreter.BattleMessage
|
||||
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
|
||||
import com.cobblemon.mod.common.api.text.red
|
||||
import com.cobblemon.mod.common.battles.dispatch.InterpreterInstruction
|
||||
import com.cobblemon.mod.common.util.battleLang
|
||||
|
||||
/**
|
||||
@@ -21,7 +20,8 @@ import com.cobblemon.mod.common.util.battleLang
|
||||
* @author Hiroku
|
||||
* @since October 3rd, 2022
|
||||
*/
|
||||
class ImmuneInstruction(val message: BattleMessage): InterpreterInstruction {
|
||||
class ImmuneInstruction(override val message: BattleMessage): EffectivenessInstruction {
|
||||
override val typeOfEffectiveness: String = "immune"
|
||||
|
||||
override fun invoke(battle: PokemonBattle) {
|
||||
battle.dispatchWaiting {
|
||||
|
||||
+5
@@ -111,6 +111,11 @@ class MoveInstruction(
|
||||
}
|
||||
}
|
||||
|
||||
val moveEffectiveness = subsequentInstructions.filterIsInstance<EffectivenessInstruction>().mapNotNull { it.typeOfEffectiveness}
|
||||
runtime.environment.getQueryStruct().addFunction("effectiveness") { params ->
|
||||
return@addFunction StringValue(moveEffectiveness.firstOrNull() ?: "normal")
|
||||
}
|
||||
|
||||
val hurtTargets = subsequentInstructions.filterIsInstance<DamageInstruction>().mapNotNull { it.expectedTarget }
|
||||
runtime.environment.getQueryStruct().addFunction("hurt") { params ->
|
||||
if (params.params.size == 0) {
|
||||
|
||||
+2
-2
@@ -10,7 +10,6 @@ package com.cobblemon.mod.common.battles.interpreter.instructions
|
||||
|
||||
import com.cobblemon.mod.common.api.battles.interpreter.BattleMessage
|
||||
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
|
||||
import com.cobblemon.mod.common.battles.dispatch.InterpreterInstruction
|
||||
import com.cobblemon.mod.common.util.battleLang
|
||||
|
||||
/**
|
||||
@@ -20,7 +19,8 @@ import com.cobblemon.mod.common.util.battleLang
|
||||
* @author Hunter
|
||||
* @since August 18th, 2022
|
||||
*/
|
||||
class ResistedInstruction(val message: BattleMessage): InterpreterInstruction {
|
||||
class ResistedInstruction(override val message: BattleMessage): EffectivenessInstruction {
|
||||
override val typeOfEffectiveness: String = "resisted"
|
||||
|
||||
override fun invoke(battle: PokemonBattle) {
|
||||
battle.dispatchGo {
|
||||
|
||||
+2
-2
@@ -10,7 +10,6 @@ package com.cobblemon.mod.common.battles.interpreter.instructions
|
||||
|
||||
import com.cobblemon.mod.common.api.battles.interpreter.BattleMessage
|
||||
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
|
||||
import com.cobblemon.mod.common.battles.dispatch.InterpreterInstruction
|
||||
import com.cobblemon.mod.common.util.battleLang
|
||||
|
||||
/**
|
||||
@@ -20,7 +19,8 @@ import com.cobblemon.mod.common.util.battleLang
|
||||
* @author Hunter
|
||||
* @since August 18th, 2022
|
||||
*/
|
||||
class SuperEffectiveInstruction(val message: BattleMessage): InterpreterInstruction {
|
||||
class SuperEffectiveInstruction(override val message: BattleMessage): EffectivenessInstruction {
|
||||
override val typeOfEffectiveness: String = "superEffective"
|
||||
|
||||
override fun invoke(battle: PokemonBattle) {
|
||||
battle.dispatchGo {
|
||||
|
||||
+10
-1
@@ -47,7 +47,16 @@ class SwitchInstruction(val instructionSet: InstructionSet, val battleActor: Bat
|
||||
if (!battle.started) {
|
||||
activePokemon.battlePokemon = pokemon
|
||||
activePokemon.illusion = illusion
|
||||
val pokemonEntity = pokemon.entity
|
||||
val pokemonEntity = pokemon.entity?.let {
|
||||
// If a Pokémon entity is being recalled with an animation,
|
||||
// wrap up the animation and recall the Pokémon immediately.
|
||||
if (it.beamMode == 3) {
|
||||
pokemon.effectedPokemon.recall()
|
||||
return@let null
|
||||
}
|
||||
pokemon.entity
|
||||
}
|
||||
|
||||
if (pokemonEntity == null && entity != null) {
|
||||
val targetPos = battleActor.getSide().getOppositeSide().actors.filterIsInstance<EntityBackedBattleActor<*>>().firstOrNull()?.entity?.pos?.let { pos ->
|
||||
val offset = pos.subtract(entity.pos)
|
||||
|
||||
+1
@@ -36,6 +36,7 @@ class ConkeldurrModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame, B
|
||||
lateinit var battleidle: PokemonPose
|
||||
|
||||
override val cryAnimation = CryProvider { _, _ -> bedrockStateful("conkeldurr", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("conkeldurr", "blink") }
|
||||
|
||||
|
||||
+3
@@ -14,6 +14,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFr
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.ModelFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPose
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPoseableModel
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
@@ -40,6 +41,8 @@ class GolettModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame, Biped
|
||||
lateinit var walk: PokemonPose
|
||||
lateinit var sleep: PokemonPose
|
||||
|
||||
override val cryAnimation = CryProvider { _, _ -> bedrockStateful("golett", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("golett", "blink") }
|
||||
standing = registerPose(
|
||||
|
||||
+3
@@ -12,6 +12,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.PoseableEntitySt
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.StatefulAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.ModelFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPose
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPoseableModel
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
@@ -33,6 +34,8 @@ class GolurkModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
|
||||
lateinit var walk: PokemonPose
|
||||
lateinit var sleep: PokemonPose
|
||||
|
||||
override val cryAnimation = CryProvider { _, _ -> bedrockStateful("golurk", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("golurk", "blink") }
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ import com.cobblemon.mod.common.api.events.pokemon.ShoulderMountEvent
|
||||
import com.cobblemon.mod.common.api.interaction.PokemonEntityInteraction
|
||||
import com.cobblemon.mod.common.api.net.serializers.PoseTypeDataSerializer
|
||||
import com.cobblemon.mod.common.api.net.serializers.StringSetDataSerializer
|
||||
import com.cobblemon.mod.common.api.pokemon.PokemonProperties
|
||||
import com.cobblemon.mod.common.api.pokemon.feature.ChoiceSpeciesFeatureProvider
|
||||
import com.cobblemon.mod.common.api.pokemon.feature.FlagSpeciesFeature
|
||||
import com.cobblemon.mod.common.api.pokemon.feature.SpeciesFeatures
|
||||
@@ -105,11 +104,8 @@ import net.minecraft.sound.SoundEvents
|
||||
import net.minecraft.text.Text
|
||||
import net.minecraft.text.TextContent
|
||||
import net.minecraft.util.ActionResult
|
||||
import net.minecraft.util.Colors
|
||||
import net.minecraft.util.DyeColor
|
||||
import net.minecraft.util.Hand
|
||||
import net.minecraft.util.Identifier
|
||||
import net.minecraft.util.Util
|
||||
import net.minecraft.util.math.BlockPos
|
||||
import net.minecraft.util.math.Box
|
||||
import net.minecraft.util.math.Vec3d
|
||||
@@ -121,7 +117,7 @@ import java.util.*
|
||||
@Suppress("unused")
|
||||
open class PokemonEntity(
|
||||
world: World,
|
||||
pokemon: Pokemon = Pokemon(),
|
||||
pokemon: Pokemon = Pokemon().apply { isClient = world.isClient },
|
||||
type: EntityType<out PokemonEntity> = CobblemonEntities.POKEMON,
|
||||
) : TameableShoulderEntity(type, world), Poseable, Shearable, Schedulable {
|
||||
companion object {
|
||||
@@ -163,6 +159,7 @@ open class PokemonEntity(
|
||||
|
||||
var pokemon: Pokemon = pokemon
|
||||
set(value) {
|
||||
value.isClient = this.world.isClient
|
||||
field = value
|
||||
delegate.changePokemon(value)
|
||||
stepHeight = behaviour.moving.stepHeight
|
||||
@@ -497,15 +494,15 @@ open class PokemonEntity(
|
||||
entityId = id // Doesn't really matter on the entity
|
||||
)
|
||||
} else {
|
||||
pokemon = Pokemon()
|
||||
pokemon = this.createSidedPokemon()
|
||||
health = 0F
|
||||
}
|
||||
} else {
|
||||
pokemon = try {
|
||||
Pokemon().loadFromNBT(nbt.getCompound(DataKeys.POKEMON))
|
||||
this.createSidedPokemon().loadFromNBT(nbt.getCompound(DataKeys.POKEMON))
|
||||
} catch (_: InvalidSpeciesException) {
|
||||
health = 0F
|
||||
Pokemon()
|
||||
this.createSidedPokemon()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1220,8 +1217,6 @@ open class PokemonEntity(
|
||||
return !this.isBusy && !this.pokemon.isFainted() && !feature.enabled
|
||||
}
|
||||
|
||||
|
||||
|
||||
override fun canUsePortals() = false
|
||||
|
||||
override fun setAir(air: Int) {
|
||||
@@ -1256,4 +1251,11 @@ open class PokemonEntity(
|
||||
|
||||
/** Retrieves the battle theme associated with this Pokemon's Species/Form, or the default PVW theme if not found. */
|
||||
fun getBattleTheme() = Registries.SOUND_EVENT.get(this.form.battleTheme) ?: CobblemonSounds.PVW_BATTLE
|
||||
|
||||
/**
|
||||
* A utility method to instance a [Pokemon] aware if the [world] is client sided or not.
|
||||
*
|
||||
* @return The side safe [Pokemon] with the [Pokemon.isClient] set.
|
||||
*/
|
||||
private fun createSidedPokemon(): Pokemon = Pokemon().apply { isClient = this@PokemonEntity.world.isClient }
|
||||
}
|
||||
@@ -43,7 +43,7 @@ class EnergyRootItem(block: EnergyRootBlock, settings: Settings) : AliasedBlockI
|
||||
|
||||
fun getHealAmount() = CobblemonMechanics.remedies.getHealingAmount("root", runtime, 150)
|
||||
|
||||
override fun canUseOnPokemon(pokemon: Pokemon) = !pokemon.isFullHealth()
|
||||
override fun canUseOnPokemon(pokemon: Pokemon) = !pokemon.isFullHealth() && !pokemon.isFainted()
|
||||
|
||||
override fun applyToPokemon(player: ServerPlayerEntity, stack: ItemStack, pokemon: Pokemon): TypedActionResult<ItemStack> {
|
||||
return if (this.canUseOnPokemon(pokemon)) {
|
||||
|
||||
@@ -835,9 +835,9 @@ open class Pokemon : ShowdownIdentifiable {
|
||||
experience = nbt.getInt(DataKeys.POKEMON_EXPERIENCE).takeIf { experienceGroup.getLevel(it) == level } ?: experienceGroup.getExperience(level)
|
||||
friendship = nbt.getShort(DataKeys.POKEMON_FRIENDSHIP).toInt().coerceIn(0, if (this.isClient) Int.MAX_VALUE else Cobblemon.config.maxPokemonFriendship)
|
||||
gender = Gender.valueOf(nbt.getString(DataKeys.POKEMON_GENDER).takeIf { it.isNotBlank() } ?: Gender.MALE.name)
|
||||
currentHealth = nbt.getShort(DataKeys.POKEMON_HEALTH).toInt()
|
||||
ivs.loadFromNBT(nbt.getCompound(DataKeys.POKEMON_IVS))
|
||||
evs.loadFromNBT(nbt.getCompound(DataKeys.POKEMON_EVS))
|
||||
currentHealth = nbt.getShort(DataKeys.POKEMON_HEALTH).toInt()
|
||||
moveSet.loadFromNBT(nbt)
|
||||
scaleModifier = nbt.getFloat(DataKeys.POKEMON_SCALE_MODIFIER)
|
||||
if (nbt.contains(DataKeys.POKEMON_ABILITY, COMPOUND_TYPE.toInt())) {
|
||||
|
||||
+5
@@ -169,6 +169,11 @@
|
||||
},
|
||||
"animation.cubone.cry": {
|
||||
"animation_length": 1.16667,
|
||||
"sound_effects": {
|
||||
"0.04": {
|
||||
"effect": "pokemon.cubone.cry"
|
||||
}
|
||||
},
|
||||
"bones": {
|
||||
"upper_torso": {
|
||||
"rotation": {
|
||||
|
||||
+5
@@ -445,6 +445,11 @@
|
||||
},
|
||||
"animation.golett.cry": {
|
||||
"animation_length": 1.5,
|
||||
"sound_effects": {
|
||||
"0.0417": {
|
||||
"effect": "pokemon.golett.cry"
|
||||
}
|
||||
},
|
||||
"bones": {
|
||||
"neck": {
|
||||
"rotation": {
|
||||
|
||||
+5
@@ -782,6 +782,11 @@
|
||||
},
|
||||
"animation.golurk.cry": {
|
||||
"animation_length": 1.5,
|
||||
"sound_effects": {
|
||||
"0.0417": {
|
||||
"effect": "pokemon.golurk.cry"
|
||||
}
|
||||
},
|
||||
"bones": {
|
||||
"neck": {
|
||||
"rotation": {
|
||||
|
||||
@@ -441,225 +441,225 @@
|
||||
"sounds": [ "cobblemon:effective" ]
|
||||
},
|
||||
"notveryeffective": {
|
||||
"sounds": [ "cobblemon:notveryeffective" ]
|
||||
"sounds": [ { "name": "cobblemon:attacks/effectiveness_layer/not_very_effective_layer", "volume": 0.8 } ]
|
||||
},
|
||||
"supereffective": {
|
||||
"sounds": [ "cobblemon:supereffective" ]
|
||||
"sounds": [ { "name": "cobblemon:attacks/effectiveness_layer/super_effective_layer", "volume": 0.6 } ]
|
||||
},
|
||||
"impact.normal": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.ice": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.water": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.fire": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.electric": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.grass": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.fighting": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.poison": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.ground": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.flying": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.psychic": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.bug": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.rock": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.ghost": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.dragon": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.dark": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.steel": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"impact.fairy": {
|
||||
"sounds": [
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_1", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_2", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_3", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_4", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_5", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_6", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_7", "volume": 0.8 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_8", "volume": 0.8 }
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_1", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_2", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_3", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_4", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_5", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_6", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_7", "volume": 1.0 },
|
||||
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_8", "volume": 1.0 }
|
||||
]
|
||||
},
|
||||
"status.paralysis.actor": {
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -15,6 +15,10 @@
|
||||
"expressions": ["q.play_animation(q.bedrock_stateful('particle_dummy', 'dragon_claw_target'))"],
|
||||
"delay": 0.1
|
||||
},
|
||||
{
|
||||
"type": "run_action_effect",
|
||||
"actionEffect": "cobblemon:generic_effectiveness"
|
||||
},
|
||||
{
|
||||
"type": "remove_holds",
|
||||
"holds": ["effects"]
|
||||
|
||||
@@ -20,6 +20,10 @@
|
||||
"entityCondition": "q.entity.is_user == false && q.missed(q.entity.uuid) == false",
|
||||
"delay": 0.1
|
||||
},
|
||||
{
|
||||
"type": "run_action_effect",
|
||||
"actionEffect": "cobblemon:generic_effectiveness"
|
||||
},
|
||||
{
|
||||
"type": "remove_holds",
|
||||
"holds": ["effects"]
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"condition": "q.move.damage_category != 'status' && q.effectiveness != 'immune'",
|
||||
"timeline": [
|
||||
{
|
||||
"type": "entity_sound",
|
||||
"entityCondition": "q.effectiveness == 'superEffective' && q.entity.is_user == false && q.missed(q.entity.uuid) == false",
|
||||
"sound": "cobblemon:supereffective",
|
||||
"pitch": 1.0,
|
||||
"volume": 1.6
|
||||
},
|
||||
{
|
||||
"type": "entity_sound",
|
||||
"entityCondition": "q.effectiveness == 'resisted' && q.entity.is_user == false && q.missed(q.entity.uuid) == false",
|
||||
"sound": "cobblemon:notveryeffective",
|
||||
"pitch": 1.0,
|
||||
"volume": 1.0
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -11,18 +11,38 @@
|
||||
},
|
||||
{
|
||||
"type": "sequence",
|
||||
"condition": "q.move.damage_category != 'status'",
|
||||
"condition": "q.move.damage_category != 'status' && q.effectiveness != 'immune'",
|
||||
"keyframes": [
|
||||
{
|
||||
"type": "entity_sound",
|
||||
"entityCondition": "q.entity.is_user == false && q.missed(q.entity.uuid) == false",
|
||||
"sound": "'cobblemon:impact.' + q.move.type"
|
||||
"entityCondition": "q.effectiveness == 'normal' && q.entity.is_user == false && q.missed(q.entity.uuid) == false",
|
||||
"sound": "'cobblemon:impact.' + q.move.type",
|
||||
"pitch": 1.0,
|
||||
"volume": 1.0
|
||||
},
|
||||
{
|
||||
"type": "entity_sound",
|
||||
"entityCondition": "q.effectiveness == 'superEffective' && q.entity.is_user == false && q.missed(q.entity.uuid) == false",
|
||||
"sound": "'cobblemon:impact.' + q.move.type",
|
||||
"pitch": 1.0,
|
||||
"volume": 0.9
|
||||
},
|
||||
{
|
||||
"type": "entity_sound",
|
||||
"entityCondition": "q.effectiveness == 'resisted' && q.entity.is_user == false && q.missed(q.entity.uuid) == false",
|
||||
"sound": "'cobblemon:impact.' + q.move.type",
|
||||
"pitch": 1.0,
|
||||
"volume": 0.6
|
||||
},
|
||||
{
|
||||
"type": "entity_particles",
|
||||
"entityCondition": "q.entity.is_user == false && q.missed(q.entity.uuid) == false",
|
||||
"effect": "'cobblemon:impact_' + q.move.type",
|
||||
"locator": "target"
|
||||
},
|
||||
{
|
||||
"type": "run_action_effect",
|
||||
"actionEffect": "cobblemon:generic_effectiveness"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -354,12 +354,56 @@
|
||||
},
|
||||
{
|
||||
"content": 8,
|
||||
"tag": "#minecraft:corals"
|
||||
"item": "minecraft:tube_coral"
|
||||
},
|
||||
{
|
||||
"content": 8,
|
||||
"item": "minecraft:brain_coral"
|
||||
},
|
||||
{
|
||||
"content": 8,
|
||||
"item": "minecraft:bubble_coral"
|
||||
},
|
||||
{
|
||||
"content": 8,
|
||||
"item": "minecraft:fire_coral"
|
||||
},
|
||||
{
|
||||
"content": 8,
|
||||
"item": "minecraft:horn_coral"
|
||||
},
|
||||
{
|
||||
"content": 8,
|
||||
"item": "minecraft:tube_coral_fan"
|
||||
},
|
||||
{
|
||||
"content": 8,
|
||||
"item": "minecraft:brain_coral_fan"
|
||||
},
|
||||
{
|
||||
"content": 8,
|
||||
"item": "minecraft:bubble_coral_fan"
|
||||
},
|
||||
{
|
||||
"content": 8,
|
||||
"item": "minecraft:fire_coral_fan"
|
||||
},
|
||||
{
|
||||
"content": 8,
|
||||
"item": "minecraft:horn_coral_fan"
|
||||
},
|
||||
{
|
||||
"content": 4,
|
||||
"tag": "#minecraft:mushrooms"
|
||||
},
|
||||
{
|
||||
"content": 4,
|
||||
"item": "minecraft:brown_mushroom"
|
||||
},
|
||||
{
|
||||
"content": 4,
|
||||
"item": "minecraft:red_mushroom"
|
||||
},
|
||||
{
|
||||
"content": 16,
|
||||
"item": "minecraft:cake"
|
||||
|
||||
Reference in new issue
Block a user