Compare commits

...
Author SHA1 Message Date
Waldleufer 3a9d671033 Merge branch 'refs/heads/main' into sounds/supereffective 2024-06-19 20:53:00 +02:00
Sterrezo f4dd73e4d9 Merge branch 'main' into sounds/supereffective 2024-05-14 13:55:50 +02:00
Sterrezo 2a21ecb06e Tweaks to all effectiveness layers 2024-04-25 14:14:07 +02:00
Sterrezo aa2cf97811 More work on super effective / not very effective layers 2024-04-17 21:19:19 +02:00
Waldleufer 69368e5e7e feat: supereffective audio settings 2024-04-16 23:27:34 +02:00
Sterrezo f579f660e5 Merge branch 'sounds/supereffective' of https://gitlab.com/cable-mc/cobblemon into sounds/supereffective 2024-04-15 23:07:47 +02:00
Sterrezo 7ec41b7afc Updated battle sfx assets, added a new super effective layer
Also removed some junk sound files, who even put that there?
2024-04-15 22:53:24 +02:00
Waldleufer 0575899c28 feat: added default options for changing the sound of the generic impact depending on the effectiveness of the move. 2024-04-15 17:55:55 +02:00
Waldleufer 412619e6d5 refactor: Turned EffectivenessInstruction into an interface implementing it in all different variants of it.
and ran formatting.licenseFormat
2024-04-14 11:10:21 +02:00
Waldleufer 12d95e54ee Merge branch 'refs/heads/main' into sounds/supereffective
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/ShowdownInterpreter.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/interpreter/instructions/MoveInstruction.kt
2024-04-14 09:49:40 +02:00
Waldleufer 663399e2ac feat: using the generic fire impact sound for now. 2024-03-24 13:11:01 +01:00
Waldleufer 478d7207f5 feat: allowing easy adding of the generic effectiveness sound with a run_action_effect keyframe for now. 2024-03-24 13:01:56 +01:00
Waldleufer 6e2c191d30 feat: exposing volume and pitch for EntitySoundActionEffectKeyframe 2024-03-24 11:16:03 +01:00
Waldleufer 7f088fa039 feat: Don't play generic_move if target is immune to attack type. 2024-03-24 10:26:16 +01:00
Waldleufer 46e29fa4aa feat: handling showdown with EffectivenessInstruction is super effective! 2024-03-24 10:25:20 +01:00
Waldleufer c55af7c856 feat: first version of possible sound extension by effectiveness in addition to impact type. 2024-03-24 00:13:28 +01:00
17 changed files with 237 additions and 159 deletions
@@ -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,
@@ -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) }
@@ -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
}
@@ -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 {
@@ -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) {
@@ -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 {
@@ -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 {
@@ -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": {
@@ -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"]
@@ -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"
}
]
},