From b2232f5244592fe271989d4a4ab7f480ab232ad9 Mon Sep 17 00:00:00 2001 From: Floral <49110090+floral-qua-floral@users.noreply.github.com> Date: Thu, 24 Oct 2024 19:43:53 -0400 Subject: [PATCH] Implemented voicelines. Trying to implement skidding sounds --- .../com/floralquafloral/MarioPackets.java | 2 + .../com/floralquafloral/MarioQuaMario.java | 2 - .../java/com/floralquafloral/VoiceLine.java | 78 +++++++++++++++- .../mariodata/MarioDataPackets.java | 11 ++- .../mariodata/MarioPlayerData.java | 88 +++++++++++++++++- .../mariodata/client/Input.java | 2 +- .../states/MarioMajorStateDefinition.java | 4 +- .../states/ParsedMajorMarioState.java | 6 +- .../action/GroundedActionDefinition.java | 2 + .../baseactions/grounded/ActionBasic.java | 57 ++++++------ .../baseactions/grounded/DuckSlide.java | 10 +- .../baseactions/grounded/DuckWaddle.java | 10 +- .../action/baseactions/grounded/PRun.java | 10 +- .../states/character/ParsedCharacter.java | 2 +- .../character/basecharacters/Mario.java | 4 +- .../powerup/basepowerups/SmallForm.java | 4 +- .../powerup/basepowerups/SuperForm.java | 4 +- .../{CharaStat.java => stats/BaseStats.java} | 43 ++------- .../com/floralquafloral/stats/CharaStat.java | 17 ++++ .../com/floralquafloral/util/MarioSFX.java | 5 + .../assets/qua_mario/lang/en_us.json | 8 ++ .../resources/assets/qua_mario/sounds.json | 42 +++++++++ .../qua_mario/sounds/sfx/action/unduck.ogg | Bin 0 -> 5693 bytes .../qua_mario/sounds/sfx/movement/skid.ogg | Bin 0 -> 26998 bytes .../sounds/sfx/movement/skid_ice.ogg | Bin 0 -> 15579 bytes .../sounds/sfx/movement/skid_sand.ogg | Bin 0 -> 14049 bytes .../sounds/sfx/movement/skid_snow.ogg | Bin 0 -> 19453 bytes .../sounds/sfx/movement/skid_wall.ogg | Bin 0 -> 10129 bytes 28 files changed, 310 insertions(+), 101 deletions(-) rename src/main/java/com/floralquafloral/{CharaStat.java => stats/BaseStats.java} (71%) create mode 100644 src/main/java/com/floralquafloral/stats/CharaStat.java create mode 100644 src/main/resources/assets/qua_mario/sounds/sfx/action/unduck.ogg create mode 100644 src/main/resources/assets/qua_mario/sounds/sfx/movement/skid.ogg create mode 100644 src/main/resources/assets/qua_mario/sounds/sfx/movement/skid_ice.ogg create mode 100644 src/main/resources/assets/qua_mario/sounds/sfx/movement/skid_sand.ogg create mode 100644 src/main/resources/assets/qua_mario/sounds/sfx/movement/skid_snow.ogg create mode 100644 src/main/resources/assets/qua_mario/sounds/sfx/movement/skid_wall.ogg diff --git a/src/main/java/com/floralquafloral/MarioPackets.java b/src/main/java/com/floralquafloral/MarioPackets.java index 106fe02..7ebea92 100644 --- a/src/main/java/com/floralquafloral/MarioPackets.java +++ b/src/main/java/com/floralquafloral/MarioPackets.java @@ -22,6 +22,7 @@ public static void registerCommon() { SyncUseCharacterStatsS2CPayload.register(); MarioDataPackets.registerCommon(); StompHandler.registerPackets(); + VoiceLine.registerPackets(); ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> { MarioQuaMario.LOGGER.info(""); @@ -31,6 +32,7 @@ public static void registerClient() { SyncUseCharacterStatsS2CPayload.registerReceiver(); MarioDataPackets.registerClient(); StompHandler.registerPacketsClient(); + VoiceLine.registerPacketsClient(); } public static PlayerEntity getPlayerFromInt(ClientPlayNetworking.Context context, int playerID) { diff --git a/src/main/java/com/floralquafloral/MarioQuaMario.java b/src/main/java/com/floralquafloral/MarioQuaMario.java index 76c73fe..3b8eb34 100644 --- a/src/main/java/com/floralquafloral/MarioQuaMario.java +++ b/src/main/java/com/floralquafloral/MarioQuaMario.java @@ -4,7 +4,6 @@ import com.floralquafloral.mariodata.MarioDataManager; import com.floralquafloral.mariodata.MarioDataPackets; import com.floralquafloral.registries.RegistryManager; -import com.floralquafloral.registries.states.powerup.ParsedPowerUp; import com.floralquafloral.util.ModConfig; import com.floralquafloral.util.MarioSFX; import me.shedaniel.autoconfig.AutoConfig; @@ -20,7 +19,6 @@ import net.fabricmc.loader.api.FabricLoader; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; import net.minecraft.util.Identifier; import net.minecraft.world.GameRules; import org.slf4j.Logger; diff --git a/src/main/java/com/floralquafloral/VoiceLine.java b/src/main/java/com/floralquafloral/VoiceLine.java index b7b244d..0d5cad4 100644 --- a/src/main/java/com/floralquafloral/VoiceLine.java +++ b/src/main/java/com/floralquafloral/VoiceLine.java @@ -1,15 +1,29 @@ package com.floralquafloral; +import com.floralquafloral.mariodata.MarioData; import com.floralquafloral.registries.RegistryManager; import com.floralquafloral.registries.states.character.ParsedCharacter; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.sound.PositionedSoundInstance; +import net.minecraft.client.sound.SoundManager; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; +import net.minecraft.network.packet.CustomPayload; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvent; import net.minecraft.util.Identifier; +import net.minecraft.util.math.random.Random; import java.util.HashMap; +import java.util.Locale; import java.util.Map; public enum VoiceLine { @@ -40,10 +54,72 @@ public enum VoiceLine { SOUND_EVENTS = new HashMap<>(); for(ParsedCharacter character : RegistryManager.CHARACTERS) { - Identifier id = Identifier.of(character.ID.getNamespace(), "voice." + character.ID.getPath() + "." + this.name().toLowerCase()); + Identifier id = Identifier.of(character.ID.getNamespace(), "voice." + character.ID.getPath() + "." + this.name().toLowerCase(Locale.ROOT)); + MarioQuaMario.LOGGER.info("Automatically registering VoiceLine sound event {}...", id); SoundEvent event = SoundEvent.of(id); SOUND_EVENTS.put(character, event); Registry.register(Registries.SOUND_EVENT, id, event); } } + + public void play(MarioData data, long seed) { + MarioQuaMario.LOGGER.info("UWU: {}", SOUND_EVENTS.get(data.getCharacter())); + + PlayerEntity mario = data.getMario(); + + if(mario.getWorld().isClient) { + PositionedSoundInstance prevVoiceSound = PLAYER_VOICE_LINES.get(mario); + SoundManager soundManager = MinecraftClient.getInstance().getSoundManager(); + soundManager.stop(prevVoiceSound); + + PositionedSoundInstance voiceSound = new PositionedSoundInstance( + SOUND_EVENTS.get(data.getCharacter()), + SoundCategory.VOICE, + 1.0F, + 1.0F, + Random.create(seed), + data.getMario().getX(), + data.getMario().getY(), + data.getMario().getZ() + ); + soundManager.play(voiceSound); + PLAYER_VOICE_LINES.put(mario, voiceSound); + } + else { + MarioQuaMario.LOGGER.info("Send voiceline packet!!!"); + MarioPackets.sendPacketToTrackers((ServerPlayerEntity) data.getMario(), new PlayVoiceLineS2CPayload(data.getMario(), this, seed)); + } + } + + public static void registerPackets() { + PlayVoiceLineS2CPayload.register(); + } + public static void registerPacketsClient() { + PlayVoiceLineS2CPayload.registerReceiver(); + } + + private record PlayVoiceLineS2CPayload(int player, int voiceLineOrdinal, long seed) implements CustomPayload { + public static final Id ID = new Id<>(Identifier.of(MarioQuaMario.MOD_ID, "play_voice_line")); + public static final PacketCodec CODEC = PacketCodec.tuple( + PacketCodecs.INTEGER, PlayVoiceLineS2CPayload::player, + PacketCodecs.INTEGER, PlayVoiceLineS2CPayload::voiceLineOrdinal, + PacketCodecs.VAR_LONG, PlayVoiceLineS2CPayload::seed, + PlayVoiceLineS2CPayload::new + ); + public PlayVoiceLineS2CPayload(PlayerEntity player, VoiceLine voiceLine, long seed) { + this(player.getId(), voiceLine.ordinal(), seed); + } + public static void registerReceiver() { + ClientPlayNetworking.registerGlobalReceiver(ID, (payload, context) -> { + + }); + } + + @Override public Id getId() { + return ID; + } + public static void register() { + PayloadTypeRegistry.playS2C().register(ID, CODEC); + } + } } diff --git a/src/main/java/com/floralquafloral/mariodata/MarioDataPackets.java b/src/main/java/com/floralquafloral/mariodata/MarioDataPackets.java index 4d016ef..865e14d 100644 --- a/src/main/java/com/floralquafloral/mariodata/MarioDataPackets.java +++ b/src/main/java/com/floralquafloral/mariodata/MarioDataPackets.java @@ -60,7 +60,7 @@ public static void sendAllData(ServerPlayerEntity toWho, PlayerEntity aboutWho) // am I supposed to send one packet with all this data or is this fine???? ServerPlayNetworking.send(toWho, new SetEnabledS2CPayload(aboutWho, data.isEnabled())); ServerPlayNetworking.send(toWho, new SetActionS2CPayload(aboutWho, data.getAction(), true, 0)); - ServerPlayNetworking.send(toWho, new SetPowerUpS2CPayload(aboutWho, data.getPowerUp())); + ServerPlayNetworking.send(toWho, new SetPowerUpS2CPayload(aboutWho, data.getPowerUp(), true)); ServerPlayNetworking.send(toWho, new SetCharacterS2CPayload(aboutWho, data.getCharacter())); } @@ -93,7 +93,7 @@ public static String forceSetMarioAction(ServerPlayerEntity mario, ParsedAction public static String setMarioPowerUp(ServerPlayerEntity mario, ParsedPowerUp powerUp) { getMarioData(mario).setPowerUp(powerUp); - MarioPackets.sendPacketToTrackers(mario, new SetPowerUpS2CPayload(mario, powerUp)); + MarioPackets.sendPacketToTrackers(mario, new SetPowerUpS2CPayload(mario, powerUp, false)); return(mario.getName().getString() + "'s Power-up has been set to " + powerUp.ID); } @@ -159,15 +159,16 @@ public static void register() { } } - private record SetPowerUpS2CPayload(int player, int powerUp) implements CustomPayload { + private record SetPowerUpS2CPayload(int player, int powerUp, boolean transitionless) implements CustomPayload { public static final Id ID = new Id<>(Identifier.of(MarioQuaMario.MOD_ID, "set_power_up")); public static final PacketCodec CODEC = PacketCodec.tuple( PacketCodecs.INTEGER, SetPowerUpS2CPayload::player, PacketCodecs.INTEGER, SetPowerUpS2CPayload::powerUp, + PacketCodecs.BOOL, SetPowerUpS2CPayload::transitionless, SetPowerUpS2CPayload::new ); - public SetPowerUpS2CPayload(PlayerEntity player, ParsedPowerUp powerUp) { - this(player.getId(), RegistryManager.POWER_UPS.getRawIdOrThrow(powerUp)); + public SetPowerUpS2CPayload(PlayerEntity player, ParsedPowerUp powerUp, boolean transitionless) { + this(player.getId(), RegistryManager.POWER_UPS.getRawIdOrThrow(powerUp), transitionless); } public static void registerReceiver() { ClientPlayNetworking.registerGlobalReceiver(ID, (payload, context) -> diff --git a/src/main/java/com/floralquafloral/mariodata/MarioPlayerData.java b/src/main/java/com/floralquafloral/mariodata/MarioPlayerData.java index 3a6e422..0a56c46 100644 --- a/src/main/java/com/floralquafloral/mariodata/MarioPlayerData.java +++ b/src/main/java/com/floralquafloral/mariodata/MarioPlayerData.java @@ -6,10 +6,17 @@ import com.floralquafloral.registries.states.character.ParsedCharacter; import com.floralquafloral.registries.states.powerup.ParsedPowerUp; import com.floralquafloral.util.CPMIntegration; +import com.floralquafloral.util.MarioSFX; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.sound.*; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvent; import net.minecraft.util.Identifier; import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.random.Random; +import org.joml.Vector2d; public class MarioPlayerData implements MarioData { private boolean enabled; @@ -150,12 +157,91 @@ public void tick() { @Override public boolean getSneakProhibited() { return useMarioPhysics() && getAction().SNEAK_LEGALITY.prohibitSneak(); } + + private class SkidSoundInstance extends MovingSoundInstance { + private final PlayerEntity MARIO; + private final boolean IS_WALL; + private final SkidMaterial MATERIAL; + private int ticks; + + protected SkidSoundInstance(boolean isWall, SkidMaterial material) { + super(isWall ? MarioSFX.SKID_WALL : MarioSFX.SKID_BLOCK, SoundCategory.PLAYERS, SoundInstance.createRandom()); + this.MARIO = getMario(); + this.IS_WALL = isWall; + this.MATERIAL = material; + this.updatePos(); + this.repeat = true; + this.repeatDelay = 0; + this.volume = 1.0F; + this.ticks = 0; + } + + private static SkidMaterial getFloorSkidMaterial(PlayerEntity mario) { + + return SkidMaterial.BASIC; + } + + private enum SkidMaterial { + BASIC(MarioSFX.SKID_BLOCK); + + public final SoundEvent EVENT; + SkidMaterial(SoundEvent event) { + this.EVENT = event; + } + } + + @Override public void tick() { + this.ticks++; + MarioQuaMario.LOGGER.info("Ticking sound!"); + if(this.IS_WALL || this.MARIO.isOnGround()) { + SkidMaterial newMaterial = getFloorSkidMaterial(this.MARIO); + if(newMaterial != this.MATERIAL && !this.IS_WALL) { + MarioQuaMario.LOGGER.info("Switching skid sound effect!"); + this.kill(); +// SkidSoundInstance.create(this.DATA, false); + } + else this.updatePos(); + } + else this.volume = 0.0F; + } + + private void updatePos() { + this.x = this.MARIO.getX(); + this.y = this.MARIO.getY(); + this.z = this.MARIO.getZ(); + MarioQuaMario.LOGGER.info("X: " + this.x); + if(this.IS_WALL) return; + float slidingSpeed = (float) this.MARIO.getVelocity().horizontalLengthSquared(); + this.volume = Math.min(1.0F, ((float) ticks) / 3.0F) * Math.min(1.0F, 0.7F * slidingSpeed); + this.pitch = 1.0F + Math.min(0.15F, 0.5F * slidingSpeed); + } + + @Override public boolean shouldAlwaysPlay() { + return true; + } + + private void kill() { + skidSFX = null; + this.setDone(); + } + } + private SkidSoundInstance skidSFX; + @Override public void setAction(ParsedAction action, long seed) { getAction().transitionTo(this, action, seed); this.setActionTransitionless(action); } @Override public void setActionTransitionless(ParsedAction action) { - if(!this.mario.getWorld().isClient) { + if(this.mario.getWorld().isClient) { + // Skid SFX + if(this.skidSFX != null) this.skidSFX.kill(); + if(action.SLIDING_STATUS.doSlideSfx() || action.SLIDING_STATUS.doWallSlideSfx()) { + this.skidSFX = new SkidSoundInstance(action.SLIDING_STATUS.doWallSlideSfx(), SkidSoundInstance.getFloorSkidMaterial(getMario())); + MinecraftClient.getInstance().getSoundManager().play(this.skidSFX); + MarioQuaMario.LOGGER.info("SFX? " + this.skidSFX); + } + } + else { if(this.action.ANIMATION != null) CPMIntegration.commonAPI.playAnimation(PlayerEntity.class, this.mario, this.action.ANIMATION, 0); if(action.ANIMATION != null) diff --git a/src/main/java/com/floralquafloral/mariodata/client/Input.java b/src/main/java/com/floralquafloral/mariodata/client/Input.java index e1cd01e..112070a 100644 --- a/src/main/java/com/floralquafloral/mariodata/client/Input.java +++ b/src/main/java/com/floralquafloral/mariodata/client/Input.java @@ -49,7 +49,7 @@ static void update(ClientPlayerEntity mario) { JUMP.update(mario.input.jumping); - DUCK.update(mario.input.sneaking, mario.input.sneaking || mario.isInSneakingPose()); + DUCK.update(mario.input.sneaking || mario.isInSneakingPose(), mario.input.sneaking); SPIN.update(false); } diff --git a/src/main/java/com/floralquafloral/registries/states/MarioMajorStateDefinition.java b/src/main/java/com/floralquafloral/registries/states/MarioMajorStateDefinition.java index e64203e..094dcdc 100644 --- a/src/main/java/com/floralquafloral/registries/states/MarioMajorStateDefinition.java +++ b/src/main/java/com/floralquafloral/registries/states/MarioMajorStateDefinition.java @@ -1,11 +1,11 @@ package com.floralquafloral.registries.states; -import com.floralquafloral.CharaStat; +import com.floralquafloral.stats.BaseStats; import java.util.EnumMap; public interface MarioMajorStateDefinition extends MarioStateDefinition { - void populateStatFactors(EnumMap statFactorMap); + void populateStatFactors(EnumMap statFactorMap); float getWidthFactor(); float getHeightFactor(); diff --git a/src/main/java/com/floralquafloral/registries/states/ParsedMajorMarioState.java b/src/main/java/com/floralquafloral/registries/states/ParsedMajorMarioState.java index c6f865a..0fdebcf 100644 --- a/src/main/java/com/floralquafloral/registries/states/ParsedMajorMarioState.java +++ b/src/main/java/com/floralquafloral/registries/states/ParsedMajorMarioState.java @@ -1,20 +1,20 @@ package com.floralquafloral.registries.states; -import com.floralquafloral.CharaStat; +import com.floralquafloral.stats.BaseStats; import java.util.EnumMap; public abstract class ParsedMajorMarioState extends ParsedMarioState { public final float WIDTH_FACTOR; public final float HEIGHT_FACTOR; - public final EnumMap STAT_FACTORS; + public final EnumMap STAT_FACTORS; protected ParsedMajorMarioState(MarioMajorStateDefinition definition) { super(definition); this.WIDTH_FACTOR = definition.getWidthFactor(); this.HEIGHT_FACTOR = definition.getHeightFactor(); - this.STAT_FACTORS = new EnumMap<>(CharaStat.class); + this.STAT_FACTORS = new EnumMap<>(BaseStats.class); definition.populateStatFactors(this.STAT_FACTORS); } } diff --git a/src/main/java/com/floralquafloral/registries/states/action/GroundedActionDefinition.java b/src/main/java/com/floralquafloral/registries/states/action/GroundedActionDefinition.java index 160e88d..d13eb2f 100644 --- a/src/main/java/com/floralquafloral/registries/states/action/GroundedActionDefinition.java +++ b/src/main/java/com/floralquafloral/registries/states/action/GroundedActionDefinition.java @@ -1,5 +1,6 @@ package com.floralquafloral.registries.states.action; +import com.floralquafloral.VoiceLine; import com.floralquafloral.mariodata.MarioData; import com.floralquafloral.mariodata.client.Input; import com.floralquafloral.mariodata.client.MarioClientData; @@ -29,6 +30,7 @@ protected abstract static class GroundedTransitions { (data, isSelf, seed) -> { // Play duck voiceline data.getMario().playSound(MarioSFX.DUCK); + VoiceLine.DUCK.play(data, seed); LOGGER.info("Ducking voiceline with seed {}", seed); }, (data, seed) -> { diff --git a/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/ActionBasic.java b/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/ActionBasic.java index 2415854..e4a5be0 100644 --- a/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/ActionBasic.java +++ b/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/ActionBasic.java @@ -1,6 +1,5 @@ package com.floralquafloral.registries.states.action.baseactions.grounded; -import com.floralquafloral.CharaStat; import com.floralquafloral.MarioQuaMario; import com.floralquafloral.mariodata.MarioPlayerData; import com.floralquafloral.mariodata.client.Input; @@ -10,7 +9,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import static com.floralquafloral.CharaStat.*; +import static com.floralquafloral.stats.BaseStats.*; import java.util.List; @@ -32,19 +31,19 @@ public void groundedSelfTick(MarioClientData data) { if(data.getForwardVel() > RUN_SPEED.getAsLimit(data)) { // Overrun groundAccel(data, - OVERRUN_ACCEL.get(data), RUN_SPEED.get(data), - STRAFE_ACCEL.get(data), STRAFE_SPEED.get(data), + OVERRUN_ACCEL.getValue(data), RUN_SPEED.getValue(data), + STRAFE_ACCEL.getValue(data), STRAFE_SPEED.getValue(data), Input.getForwardInput(), Input.getStrafeInput() * 0.8, - RUN_REDIRECTION.get(data) + RUN_REDIRECTION.getValue(data) ); } else { // Run Accel groundAccel(data, - RUN_ACCEL.get(data), RUN_SPEED.get(data), - STRAFE_ACCEL.get(data), STRAFE_SPEED.get(data), + RUN_ACCEL.getValue(data), RUN_SPEED.getValue(data), + STRAFE_ACCEL.getValue(data), STRAFE_SPEED.getValue(data), Input.getForwardInput(), Input.getStrafeInput(), - RUN_REDIRECTION.get(data) + RUN_REDIRECTION.getValue(data) ); } } @@ -52,28 +51,28 @@ public void groundedSelfTick(MarioClientData data) { if(data.getForwardVel() > WALK_SPEED.getAsLimit(data)) { // Overwalk groundAccel(data, - OVERWALK_ACCEL.get(data), WALK_SPEED.get(data), - STRAFE_ACCEL.get(data), STRAFE_SPEED.get(data), + OVERWALK_ACCEL.getValue(data), WALK_SPEED.getValue(data), + STRAFE_ACCEL.getValue(data), STRAFE_SPEED.getValue(data), Input.getForwardInput(), Input.getStrafeInput(), - WALK_REDIRECTION.get(data) + WALK_REDIRECTION.getValue(data) ); } else if(data.getForwardVel() <= WALK_STANDSTILL_THRESHOLD.getAsThreshold(data)) { // Walk accel from low velocity groundAccel(data, - WALK_STANDSTILL_ACCEL.get(data), WALK_SPEED.get(data), - STRAFE_ACCEL.get(data), STRAFE_SPEED.get(data), + WALK_STANDSTILL_ACCEL.getValue(data), WALK_SPEED.getValue(data), + STRAFE_ACCEL.getValue(data), STRAFE_SPEED.getValue(data), Input.getForwardInput(), Input.getStrafeInput(), - WALK_REDIRECTION.get(data) + WALK_REDIRECTION.getValue(data) ); } else { // Walk accel groundAccel(data, - WALK_ACCEL.get(data), WALK_SPEED.get(data), - STRAFE_ACCEL.get(data), STRAFE_SPEED.get(data), + WALK_ACCEL.getValue(data), WALK_SPEED.getValue(data), + STRAFE_ACCEL.getValue(data), STRAFE_SPEED.getValue(data), Input.getForwardInput(), Input.getStrafeInput(), - WALK_REDIRECTION.get(data) + WALK_REDIRECTION.getValue(data) ); } } @@ -82,36 +81,36 @@ else if(Input.getForwardInput() < 0) { if(data.getForwardVel() > 0) { // Under-backpedal groundAccel(data, - UNDERBACKPEDAL_ACCEL.get(data), BACKPEDAL_SPEED.get(data), - STRAFE_ACCEL.get(data), STRAFE_SPEED.get(data), + UNDERBACKPEDAL_ACCEL.getValue(data), BACKPEDAL_SPEED.getValue(data), + STRAFE_ACCEL.getValue(data), STRAFE_SPEED.getValue(data), Input.getForwardInput(), Input.getStrafeInput(), - BACKPEDAL_REDIRECTION.get(data) + BACKPEDAL_REDIRECTION.getValue(data) ); } else if(data.getForwardVel() < BACKPEDAL_SPEED.getAsLimit(data)) { // Over-backpedal groundAccel(data, - OVERBACKPEDAL_ACCEL.get(data), BACKPEDAL_SPEED.get(data), - STRAFE_ACCEL.get(data), STRAFE_SPEED.get(data), + OVERBACKPEDAL_ACCEL.getValue(data), BACKPEDAL_SPEED.getValue(data), + STRAFE_ACCEL.getValue(data), STRAFE_SPEED.getValue(data), Input.getForwardInput(), Input.getStrafeInput(), - BACKPEDAL_REDIRECTION.get(data) + BACKPEDAL_REDIRECTION.getValue(data) ); } else { // Backpedal Accel groundAccel(data, - BACKPEDAL_ACCEL.get(data), BACKPEDAL_SPEED.get(data), - STRAFE_ACCEL.get(data), STRAFE_SPEED.get(data), + BACKPEDAL_ACCEL.getValue(data), BACKPEDAL_SPEED.getValue(data), + STRAFE_ACCEL.getValue(data), STRAFE_SPEED.getValue(data), Input.getForwardInput(), Input.getStrafeInput(), - BACKPEDAL_REDIRECTION.get(data) + BACKPEDAL_REDIRECTION.getValue(data) ); } } else { // Idle deaccel groundAccel(data, - IDLE_DEACCEL.get(data), 0, - STRAFE_ACCEL.get(data), STRAFE_SPEED.get(data), + IDLE_DEACCEL.getValue(data), 0, + STRAFE_ACCEL.getValue(data), STRAFE_SPEED.getValue(data), 0.0, 0.0, 0.0 ); } @@ -139,7 +138,7 @@ public List getPreTickTransitions() { new ActionTransitionDefinition("qua_mario:p_run", (data) -> data.getForwardVel() >= RUN_SPEED.getAsThreshold(data), (data, isSelf, seed) -> { - if(isSelf) data.setForwardVel(Math.max(P_SPEED.get(data), data.getForwardVel())); + if(isSelf) data.setForwardVel(Math.max(P_SPEED.getValue(data), data.getForwardVel())); }, (data, seed) -> { diff --git a/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/DuckSlide.java b/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/DuckSlide.java index 14bbc85..ffbd9a0 100644 --- a/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/DuckSlide.java +++ b/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/DuckSlide.java @@ -13,7 +13,7 @@ import java.util.List; -import static com.floralquafloral.CharaStat.*; +import static com.floralquafloral.stats.BaseStats.*; public class DuckSlide extends GroundedActionDefinition { @Override public @NotNull Identifier getID() { @@ -26,11 +26,11 @@ public class DuckSlide extends GroundedActionDefinition { @Override public void groundedSelfTick(MarioClientData data) { applyDrag(data, - DUCK_SLIDE_DRAG.get(data), - DUCK_SLIDE_DRAG_MIN.get(data), + DUCK_SLIDE_DRAG.getValue(data), + DUCK_SLIDE_DRAG_MIN.getValue(data), Input.getForwardInput(), Input.getStrafeInput(), - DUCK_SLIDE_REDIRECTION.get(data) + DUCK_SLIDE_REDIRECTION.getValue(data) ); } @@ -77,7 +77,7 @@ public List getTransitionInjections() { new ActionTransitionDefinition( "qua_mario:duck_slide", (data) -> { - double threshold = DUCK_SLIDE_THRESHOLD.get(data); + double threshold = DUCK_SLIDE_THRESHOLD.getValue(data); return Input.DUCK.isHeld() && data.getMario().isOnGround() diff --git a/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/DuckWaddle.java b/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/DuckWaddle.java index 2a49c7f..a11ba86 100644 --- a/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/DuckWaddle.java +++ b/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/DuckWaddle.java @@ -11,7 +11,7 @@ import java.util.List; -import static com.floralquafloral.CharaStat.*; +import static com.floralquafloral.stats.BaseStats.*; public class DuckWaddle extends GroundedActionDefinition { public static final ActionTransitionDefinition UNDUCK = new ActionTransitionDefinition( @@ -30,10 +30,10 @@ public class DuckWaddle extends GroundedActionDefinition { public void groundedSelfTick(MarioClientData data) { boolean waddlingForward = data.getForwardVel() > 0; groundAccel(data, - waddlingForward ? WADDLE_ACCEL.get(data) : WADDLE_BACKPEDAL_ACCEL.get(data), - waddlingForward ? WADDLE_SPEED.get(data) : WADDLE_BACKPEDAL_SPEED.get(data), - WADDLE_STRAFE_ACCEL.get(data), WADDLE_STRAFE_SPEED.get(data), - Input.getForwardInput(), Input.getStrafeInput(), WADDLE_REDIRECTION.get(data) + waddlingForward ? WADDLE_ACCEL.getValue(data) : WADDLE_BACKPEDAL_ACCEL.getValue(data), + waddlingForward ? WADDLE_SPEED.getValue(data) : WADDLE_BACKPEDAL_SPEED.getValue(data), + WADDLE_STRAFE_ACCEL.getValue(data), WADDLE_STRAFE_SPEED.getValue(data), + Input.getForwardInput(), Input.getStrafeInput(), WADDLE_REDIRECTION.getValue(data) ); } diff --git a/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/PRun.java b/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/PRun.java index 29d041a..9ab3eb3 100644 --- a/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/PRun.java +++ b/src/main/java/com/floralquafloral/registries/states/action/baseactions/grounded/PRun.java @@ -11,7 +11,7 @@ import java.util.List; -import static com.floralquafloral.CharaStat.*; +import static com.floralquafloral.stats.BaseStats.*; public class PRun extends GroundedActionDefinition { @Override public @NotNull Identifier getID() { @@ -25,11 +25,11 @@ public class PRun extends GroundedActionDefinition { public void groundedSelfTick(MarioClientData data) { boolean sprinting = data.getMario().isSprinting(); groundAccel(data, - sprinting ? OVERRUN_ACCEL.get(data) : OVERWALK_ACCEL.get(data), - sprinting ? P_SPEED.get(data) : WALK_SPEED.get(data), - STRAFE_ACCEL.get(data), STRAFE_SPEED.get(data), + sprinting ? OVERRUN_ACCEL.getValue(data) : OVERWALK_ACCEL.getValue(data), + sprinting ? P_SPEED.getValue(data) : WALK_SPEED.getValue(data), + STRAFE_ACCEL.getValue(data), STRAFE_SPEED.getValue(data), Input.getForwardInput(), Input.getStrafeInput(), - P_SPEED_REDIRECTION.get(data) + P_SPEED_REDIRECTION.getValue(data) ); } diff --git a/src/main/java/com/floralquafloral/registries/states/character/ParsedCharacter.java b/src/main/java/com/floralquafloral/registries/states/character/ParsedCharacter.java index 2db8e43..14232b3 100644 --- a/src/main/java/com/floralquafloral/registries/states/character/ParsedCharacter.java +++ b/src/main/java/com/floralquafloral/registries/states/character/ParsedCharacter.java @@ -7,7 +7,7 @@ public ParsedCharacter(CharacterDefinition definition) { super(definition); } -// public double getStatFactor(CharaStat stat) { +// public double getStatFactor(BaseStats stat) { // // } } diff --git a/src/main/java/com/floralquafloral/registries/states/character/basecharacters/Mario.java b/src/main/java/com/floralquafloral/registries/states/character/basecharacters/Mario.java index c9d5ab1..dcd8903 100644 --- a/src/main/java/com/floralquafloral/registries/states/character/basecharacters/Mario.java +++ b/src/main/java/com/floralquafloral/registries/states/character/basecharacters/Mario.java @@ -1,6 +1,6 @@ package com.floralquafloral.registries.states.character.basecharacters; -import com.floralquafloral.CharaStat; +import com.floralquafloral.stats.BaseStats; import com.floralquafloral.MarioQuaMario; import com.floralquafloral.mariodata.MarioPlayerData; import com.floralquafloral.mariodata.client.MarioClientData; @@ -12,7 +12,7 @@ public class Mario implements CharacterDefinition { @Override - public void populateStatFactors(EnumMap statFactorMap) { + public void populateStatFactors(EnumMap statFactorMap) { } diff --git a/src/main/java/com/floralquafloral/registries/states/powerup/basepowerups/SmallForm.java b/src/main/java/com/floralquafloral/registries/states/powerup/basepowerups/SmallForm.java index 52ac197..4372e9a 100644 --- a/src/main/java/com/floralquafloral/registries/states/powerup/basepowerups/SmallForm.java +++ b/src/main/java/com/floralquafloral/registries/states/powerup/basepowerups/SmallForm.java @@ -1,6 +1,6 @@ package com.floralquafloral.registries.states.powerup.basepowerups; -import com.floralquafloral.CharaStat; +import com.floralquafloral.stats.BaseStats; import com.floralquafloral.MarioQuaMario; import com.floralquafloral.mariodata.MarioData; import com.floralquafloral.mariodata.MarioPlayerData; @@ -40,7 +40,7 @@ public void serverTick(MarioPlayerData data) { return 0.5F; } - @Override public void populateStatFactors(EnumMap statFactorMap) { + @Override public void populateStatFactors(EnumMap statFactorMap) { } diff --git a/src/main/java/com/floralquafloral/registries/states/powerup/basepowerups/SuperForm.java b/src/main/java/com/floralquafloral/registries/states/powerup/basepowerups/SuperForm.java index 37b692f..53a6b53 100644 --- a/src/main/java/com/floralquafloral/registries/states/powerup/basepowerups/SuperForm.java +++ b/src/main/java/com/floralquafloral/registries/states/powerup/basepowerups/SuperForm.java @@ -1,6 +1,6 @@ package com.floralquafloral.registries.states.powerup.basepowerups; -import com.floralquafloral.CharaStat; +import com.floralquafloral.stats.BaseStats; import com.floralquafloral.MarioQuaMario; import com.floralquafloral.mariodata.MarioData; import com.floralquafloral.mariodata.MarioPlayerData; @@ -40,7 +40,7 @@ public void serverTick(MarioPlayerData data) { return 1.0F; } - @Override public void populateStatFactors(EnumMap statFactorMap) { + @Override public void populateStatFactors(EnumMap statFactorMap) { } diff --git a/src/main/java/com/floralquafloral/CharaStat.java b/src/main/java/com/floralquafloral/stats/BaseStats.java similarity index 71% rename from src/main/java/com/floralquafloral/CharaStat.java rename to src/main/java/com/floralquafloral/stats/BaseStats.java index 2b9c952..f3bc3b4 100644 --- a/src/main/java/com/floralquafloral/CharaStat.java +++ b/src/main/java/com/floralquafloral/stats/BaseStats.java @@ -1,10 +1,11 @@ -package com.floralquafloral; +package com.floralquafloral.stats; +import com.floralquafloral.MarioQuaMario; +import com.floralquafloral.MarioQuaMarioClient; import com.floralquafloral.mariodata.MarioData; -import com.floralquafloral.mariodata.MarioPlayerData; import net.minecraft.world.World; -public enum CharaStat { +public enum BaseStats implements CharaStat { ALL_JUMP_VELOCITIES, ALL_GRAVITIES, ALL_FRICTIONS, @@ -132,17 +133,17 @@ public enum CharaStat { AQUATIC_GROUND_POUND_DRAG; private final double DEFAULT_VALUE; - private final CharaStat PARENT_STAT; + private final BaseStats PARENT_STAT; - CharaStat() { + BaseStats() { this.DEFAULT_VALUE = 1.0; this.PARENT_STAT = null; } - CharaStat(double defaultValue) { + BaseStats(double defaultValue) { this.DEFAULT_VALUE = defaultValue; this.PARENT_STAT = null; } - CharaStat(double defaultValue, CharaStat parentStat) { + BaseStats(double defaultValue, BaseStats parentStat) { this.DEFAULT_VALUE = defaultValue; this.PARENT_STAT = parentStat; } @@ -150,38 +151,10 @@ public enum CharaStat { public double getDefaultValue() { return DEFAULT_VALUE; } - - public double get(MarioData data) { - return this.getDefaultValue() * this.getMultiplier(data); - } - public double getAsThreshold(MarioData data) { - return this.get(data) * 0.99; - } - public double getAsLimit(MarioData data) { - return this.get(data) * 1.015; - } - public double getMultiplier(MarioData data) { World marioWorld = data.getMario().getWorld(); boolean useCharacterStats = marioWorld.isClient ? MarioQuaMarioClient.useCharacterStats : marioWorld.getGameRules().getBoolean(MarioQuaMario.USE_CHARACTER_STATS); return (useCharacterStats ? data.getCharacter().STAT_FACTORS.getOrDefault(this, 1.0) : 1.0) * data.getPowerUp().STAT_FACTORS.getOrDefault(this, 1.0); } - -// public double getValue(PlayerEntity player) { -// if(ModMarioQuaMario.playerIsMarioClient(player)) return this.getValue(); -// return this.getValue(ModMarioQuaMario.getUseCharacterStats(player), ModMarioQuaMario.getCharacter(player), ModMarioQuaMario.getPowerUp(player)); -// } -// -// public double getValue(boolean useCharacterStats, @NotNull MarioCharacter character, @NotNull PowerUp powerUp) { -// return(this.getDefaultValue() * this.getMultiplier(useCharacterStats, character, powerUp)); -// } -// -// public double getMultiplier(boolean useCharacterStats, @NotNull MarioCharacter character, @NotNull PowerUp powerUp) { -// return( -// (this.PARENT_STAT == null ? 1.0 : this.PARENT_STAT.getMultiplier(useCharacterStats, character, powerUp)) * -// (useCharacterStats ? character.getStatFactor(this) : 1) * -// (powerUp instanceof StatChangingPowerUp statChangingPowerUp ? statChangingPowerUp.getStatFactor(this) : 1.0) -// ); -// } } diff --git a/src/main/java/com/floralquafloral/stats/CharaStat.java b/src/main/java/com/floralquafloral/stats/CharaStat.java new file mode 100644 index 0000000..68316d9 --- /dev/null +++ b/src/main/java/com/floralquafloral/stats/CharaStat.java @@ -0,0 +1,17 @@ +package com.floralquafloral.stats; + +import com.floralquafloral.mariodata.MarioData; + +public interface CharaStat { + double getDefaultValue(); + default double getValue(MarioData data) { + return this.getDefaultValue() * this.getMultiplier(data); + }; + default double getAsThreshold(MarioData data) { + return this.getValue(data) * 0.99; + } + default double getAsLimit(MarioData data) { + return this.getValue(data) * 1.015; + } + double getMultiplier(MarioData data); +} diff --git a/src/main/java/com/floralquafloral/util/MarioSFX.java b/src/main/java/com/floralquafloral/util/MarioSFX.java index a0f5b1e..a303bbd 100644 --- a/src/main/java/com/floralquafloral/util/MarioSFX.java +++ b/src/main/java/com/floralquafloral/util/MarioSFX.java @@ -9,6 +9,11 @@ public abstract class MarioSFX { public static final SoundEvent JUMP = makeMovementSound("jump"); public static final SoundEvent FLIP = makeMovementSound("flip"); + public static final SoundEvent SKID_BLOCK = makeMovementSound("skid_block"); + public static final SoundEvent SKID_ICE = makeMovementSound("skid_ice"); + public static final SoundEvent SKID_SAND = makeMovementSound("skid_sand"); + public static final SoundEvent SKID_SNOW = makeMovementSound("skid_snow"); + public static final SoundEvent SKID_WALL = makeMovementSound("skid_wall"); public static final SoundEvent NORMAL_POWER = makePowerSound("normal_power"); public static final SoundEvent REVERT = makePowerSound("revert"); diff --git a/src/main/resources/assets/qua_mario/lang/en_us.json b/src/main/resources/assets/qua_mario/lang/en_us.json index 4d8c132..0a6c208 100644 --- a/src/main/resources/assets/qua_mario/lang/en_us.json +++ b/src/main/resources/assets/qua_mario/lang/en_us.json @@ -26,12 +26,20 @@ "subtitles.qua_mario.movement.jump": "Jumping", "subtitles.qua_mario.movement.flip": "Aerial flip", + "subtitles.qua_mario.movement.skid": "Skidding", + "subtitles.qua_mario.movement.skid_ice": "Slipping", + "subtitles.qua_mario.movement.skid_sand": "Skidding", + "subtitles.qua_mario.movement.skid_snow": "Skidding", + "subtitles.qua_mario.movement.skid_wall": "Sliding", "subtitles.qua_mario.power_up.normal_power": "Powering up", "subtitles.qua_mario.power_up.revert": "Powering down", "subtitles.qua_mario.stomp.stomp": "Something gets stomped", "subtitles.qua_mario.stomp.pointy": "Something pointy gets stomped", "subtitles.qua_mario.stomp.spin": "Something gets stomped", + "subtitles.qua_mario.stomp.heavy": "Something gets stomped", "subtitles.qua_mario.stomp.yoshi": "Something gets crushed", + "subtitles.qua_mario.action.duck": "Ducking", + "subtitles.qua_mario.action.unduck": "Un-ducking", "subtitles.qua_mario.action.ground_pound_pre": "Aerial flip", "subtitles.qua_mario.action.ground_pound": "Ground pounded", diff --git a/src/main/resources/assets/qua_mario/sounds.json b/src/main/resources/assets/qua_mario/sounds.json index 86b90e9..44ef0e3 100644 --- a/src/main/resources/assets/qua_mario/sounds.json +++ b/src/main/resources/assets/qua_mario/sounds.json @@ -11,6 +11,36 @@ "qua_mario:sfx/movement/flip" ] }, + "sfx.movement.skid": { + "subtitle": "subtitles.qua_mario.movement.skid", + "sounds": [ + "qua_mario:sfx/movement/skid" + ] + }, + "sfx.movement.skid_ice": { + "subtitle": "subtitles.qua_mario.movement.skid_ice", + "sounds": [ + "qua_mario:sfx/movement/skid_ice" + ] + }, + "sfx.movement.skid_sand": { + "subtitle": "subtitles.qua_mario.movement.skid_sand", + "sounds": [ + "qua_mario:sfx/movement/skid_sand" + ] + }, + "sfx.movement.skid_snow": { + "subtitle": "subtitles.qua_mario.movement.skid_snow", + "sounds": [ + "qua_mario:sfx/movement/skid_snow" + ] + }, + "sfx.movement.skid_wall": { + "subtitle": "subtitles.qua_mario.movement.skid_wall", + "sounds": [ + "qua_mario:sfx/movement/skid_wall" + ] + }, "sfx.power_up.normal_power": { "subtitle": "subtitles.qua_mario.power_up.normal_power", "sounds": [ @@ -53,6 +83,18 @@ "qua_mario:sfx/stomp/yoshi" ] }, + "sfx.action.duck": { + "subtitle": "subtitles.qua_mario.action.duck", + "sounds": [ + "qua_mario:sfx/action/duck" + ] + }, + "sfx.action.unduck": { + "subtitle": "subtitles.qua_mario.action.unduck", + "sounds": [ + "qua_mario:sfx/action/unduck" + ] + }, "sfx.action.ground_pound_pre": { "subtitle": "subtitles.qua_mario.action.ground_pound_pre", "sounds": [ diff --git a/src/main/resources/assets/qua_mario/sounds/sfx/action/unduck.ogg b/src/main/resources/assets/qua_mario/sounds/sfx/action/unduck.ogg new file mode 100644 index 0000000000000000000000000000000000000000..94f9351241fa46747b1eced6a2ed5befe3a2d39e GIT binary patch literal 5693 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/qua_mario/sounds/sfx/movement/skid.ogg b/src/main/resources/assets/qua_mario/sounds/sfx/movement/skid.ogg new file mode 100644 index 0000000000000000000000000000000000000000..19a326417ccb12e2858a8555713b2846c83e5624 GIT binary patch literal 26998 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 N@>g_b@+2fJ0|2GMR22XK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/qua_mario/sounds/sfx/movement/skid_ice.ogg b/src/main/resources/assets/qua_mario/sounds/sfx/movement/skid_ice.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6b978d86f17b39cf9eda34863d3db5ae45dca760 GIT binary patch literal 15579 zcmeIZcT`hP*C>1v2qe@1p@Rkpy-4q92t``xAXOpsE*%RRklsX^5Q>1*Py_@NR0Qe0 zcg2E$6tN&!P`L;FJ=m<$A%(#f|xWXl#YY>6mLM zKwy6#UKFQg4FTXFTE+<7OPolz0s!zCoG_vcneO_cnmvXc8j%&TriMd&cy&Ntn zGJXFl(DJUV06+;4MG$Fs*Y&-}R6IC@(}Idsyo{AA(bP$1uT&7v_Jv&hE1D~O{KrHE z;q}aRvRo(prE4-1_Si?q#+wSO3C`!Lpi zA=dG0tTRX4Klxka%df}z&(zTnpjbd9XH~S6pR4qZN-0H5TrCuEJr)TXk-;yTaaX^> z-Mii^ztyv*)o-{-Vz`O!4+&^jl*dm46nl{>{$JVMHplIMpRt|;VgMGDWq%+~e;`K3 z9Mc~pLH$R<0|2N~thq#Qko?(T`Tk&aFrN+49?UWt{bI!UFC`qS9RRR0JiUQDgP=6b zC8vWF&IN1C2jk~KQ5;L;f1RTK*b6ujzC!mLZz5bS-T9ALh~TgsC2%deznnmVgp#*t z(gbO5RE2@GR$PtBpYBSu%olE}&dvX$LEkaXRZy3rLwUW$c@w1IF?~8x`QO?l=6ve9 z>M0P$xlzE-$LS2xc}x7j9{@{5#%1W>I~5DnHz|f|Me(Psc6@9O)AbmP7;?JG$dLHdc}V#?jvTL ziFfip^7tnnGiE_BPs&PK$Z1$vTAd5?v%MX<{2Z=R^O)bBd5&jNWo}YsLefS;nn+@fS0ahrR_Z%czuo@7&HwhC zvq2azgPx-kg!vE8>6GEo0==n80>AfnjvAAoKtpuc|5E_~(3wtW_-7q4Gnbq-SC}=I zw6fIrUwaIQot4K=%Y%Z=1^`X~cw1I6bD4pekgk%b=?T~G;pufy-7L84kP@FRpsW9$ z&te2g*^)b}JqS>JeNz4U&san~e#7hEp(%jA1R{z+V!dO; zM%TaW8hntCMl2PG$rx{_`gDxfGkIt7|NP;I06>IL14Mvj2>b76x~s6g%u#?24WS5)7uE0|o#Z19ZMt&RM%uDv|`oPvoIMiQzqMGZfy! z%JKH9P0mJQsR*fp+%5$&8vnCJfx(?8>EB>^JPKTe!PVH2owS~KJOY_qPYY5`%i}@H zd043@siK+;?j+bhgtMWJ>YY*c7eZ1W z|3~_livE#tkRzy#V?hZHAM2=^Or`-_)1aVYkKmSvYD+WH1m5C{XOV&_21SDs~; zEZNGD@5={j%?E_J$QiVNFmNh95(aG`tg)BFCsjuz-~JfuQ>P%h7Hrr!Yv)qiB6K$; z;}}-kGRL1~F58E)0BfWe>AtTVF10cncA3o2zMZg;1c`k>TM%$ft?sh}4F}5iXKO*%%JUN znS=deK^}i&XHXzCAdf!?1MtX-!Xf@5vNAxr@_!H@BXInG5FjIPn7=*1%5eyueN1~? z`BPRO*TClA@-LzsWCQ~Lf{q!1&40%G!zjyK>~9lXekqPuKLIhx9%H$Bb?8}?tP%E) z&w?j3Bz0r+oLx;y(2%}ctrb~FG`Fv+sOQP`*`IzSn#mktGJXz6&nb+A||zPp{p7mbvK z3l#xCGhqaon9z%sDd7?ktDqqE!s4z10}~5+j~)`GC>$nw9jS3}95UL52Ma+cE5D8t zUilcqT~KUcxrGJ!000m03S7Px0e=3{yw!IfzX1p)PCii?6-}l;Xhq-~0O*+$6B0bv zl~vVGV{zKLdImMDbSf+L2Vw=pq!bxmqRT) zQ4pY6h0nQE;a-+fTcBBIuDar>jPTV6lR8mBd3)CCG85K@irXcS!mX;j3a8m0SAxp7 zL>0(rf|bv5sf2igvr&oz<#stPukogLNUYa_Qx))|9K∾fOx#pQ1e$-GHGc@^>NC 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 iea8l1R|bW!%^nb7CNxa#arBHiF;T9) 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/qua_mario/sounds/sfx/movement/skid_snow.ogg b/src/main/resources/assets/qua_mario/sounds/sfx/movement/skid_snow.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c015419f70b781de2f78fac50c356a7dc9e40178 GIT binary patch literal 19453 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 >iRZna>lFkoGYL{f5PGztPs~0zaMiO`boGwG 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