diff --git a/Minecraft.Client/Common/Audio/SoundNames.cpp b/Minecraft.Client/Common/Audio/SoundNames.cpp index ebb7e9ee1..c48e780cb 100644 --- a/Minecraft.Client/Common/Audio/SoundNames.cpp +++ b/Minecraft.Client/Common/Audio/SoundNames.cpp @@ -223,6 +223,7 @@ const WCHAR *ConsoleSoundEngine::wchSoundNames[eSoundType_MAX]= // 4J-PB - Some sounds were updated, but we can't do that for the 360 or we have to do a new sound bank // instead, we'll add the sounds as new ones and change the code to reference them L"fire.new_ignite", + L"damage.critical" //eSoundType_DAMAGE_CRITICAL }; diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/damage/critical.mp3 b/Minecraft.Client/Windows64Media/Sound/Minecraft/damage/critical.mp3 new file mode 100644 index 000000000..37b9e1f4f Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/damage/critical.mp3 differ diff --git a/Minecraft.World/DamageSource.cpp b/Minecraft.World/DamageSource.cpp index bc3adc804..fd6ca9208 100644 --- a/Minecraft.World/DamageSource.cpp +++ b/Minecraft.World/DamageSource.cpp @@ -78,6 +78,16 @@ bool DamageSource::isProjectile() { return _isProjectile; } +//whoa new stuff! +bool DamageSource::isCritical() +{ + return _isCritical; +} +DamageSource *DamageSource::setCritical() +{ + _isCritical = true; + return this; +} DamageSource *DamageSource::setProjectile() { diff --git a/Minecraft.World/DamageSource.h b/Minecraft.World/DamageSource.h index 1173db4db..73d32e132 100644 --- a/Minecraft.World/DamageSource.h +++ b/Minecraft.World/DamageSource.h @@ -47,8 +47,11 @@ private: bool _scalesWithDifficulty; bool _isMagic; bool _isExplosion; + bool _isCritical; public: + bool isCritical(); + DamageSource* setCritical(); bool isProjectile(); DamageSource *setProjectile(); bool isExplosion(); diff --git a/Minecraft.World/LivingEntity.cpp b/Minecraft.World/LivingEntity.cpp index 3ace88068..11161ac17 100644 --- a/Minecraft.World/LivingEntity.cpp +++ b/Minecraft.World/LivingEntity.cpp @@ -858,8 +858,13 @@ bool LivingEntity::hurt(DamageSource *source, float dmg) die(source); } else - { - if (sound) playSound(getHurtSound(), getSoundVolume(), getVoicePitch()); + { + if (sound) { + + //New Critical Sound plays and works for the most part + if (source->isCritical()) playSound(getCritHurtSound(), getSoundVolume(), getVoicePitch()); + playSound(getHurtSound(), getSoundVolume(), getVoicePitch()); + } } MemSect(0); @@ -960,6 +965,13 @@ int LivingEntity::getHurtSound() return eSoundType_DAMAGE_HURT; } + + +int LivingEntity::getCritHurtSound() +{ + return eSoundType_DAMAGE_CRITICAL; +} + int LivingEntity::getDeathSound() { return eSoundType_DAMAGE_HURT; diff --git a/Minecraft.World/LivingEntity.h b/Minecraft.World/LivingEntity.h index ecc819df9..cc8ed79dd 100644 --- a/Minecraft.World/LivingEntity.h +++ b/Minecraft.World/LivingEntity.h @@ -187,6 +187,7 @@ public: protected: virtual int getHurtSound(); virtual int getDeathSound(); + virtual int getCritHurtSound(); protected: virtual void dropRareDeathLoot(int rareLootLevel); diff --git a/Minecraft.World/Player.cpp b/Minecraft.World/Player.cpp index 00c7148e4..480366c4b 100644 --- a/Minecraft.World/Player.cpp +++ b/Minecraft.World/Player.cpp @@ -1630,7 +1630,14 @@ void Player::attack(shared_ptr entity) entity->setOnFire(1); } + + DamageSource *damageSource = DamageSource::playerAttack(dynamic_pointer_cast(shared_from_this())); + + if (bCrit) + { + damageSource->setCritical(); + } bool wasHurt = entity->hurt(damageSource, dmg); delete damageSource; if (wasHurt) diff --git a/Minecraft.World/SoundTypes.h b/Minecraft.World/SoundTypes.h index 81e81d796..ba057a03d 100644 --- a/Minecraft.World/SoundTypes.h +++ b/Minecraft.World/SoundTypes.h @@ -114,105 +114,106 @@ enum eSOUND_TYPE eSoundType_STEP_CLOTH, eSoundType_STEP_SAND, // soundbank 2 - eSoundType_MOB_ENDERDRAGON_END, - eSoundType_MOB_ENDERDRAGON_GROWL, - eSoundType_MOB_ENDERDRAGON_HIT, - eSoundType_MOB_ENDERDRAGON_MOVE, - eSoundType_MOB_IRONGOLEM_THROW, - eSoundType_MOB_IRONGOLEM_HIT, - eSoundType_MOB_IRONGOLEM_DEATH, - eSoundType_MOB_IRONGOLEM_WALK, +eSoundType_MOB_ENDERDRAGON_END, +eSoundType_MOB_ENDERDRAGON_GROWL, +eSoundType_MOB_ENDERDRAGON_HIT, +eSoundType_MOB_ENDERDRAGON_MOVE, +eSoundType_MOB_IRONGOLEM_THROW, +eSoundType_MOB_IRONGOLEM_HIT, +eSoundType_MOB_IRONGOLEM_DEATH, +eSoundType_MOB_IRONGOLEM_WALK, - // TU14 - eSoundType_DAMAGE_THORNS, - eSoundType_RANDOM_ANVIL_BREAK, - eSoundType_RANDOM_ANVIL_LAND, - eSoundType_RANDOM_ANVIL_USE, - eSoundType_MOB_VILLAGER_HAGGLE, - eSoundType_MOB_VILLAGER_IDLE, - eSoundType_MOB_VILLAGER_HIT, - eSoundType_MOB_VILLAGER_DEATH, - eSoundType_MOB_VILLAGER_YES, - eSoundType_MOB_VILLAGER_NO, - eSoundType_MOB_ZOMBIE_INFECT, - eSoundType_MOB_ZOMBIE_UNFECT, - eSoundType_MOB_ZOMBIE_REMEDY, - eSoundType_STEP_SNOW, - eSoundType_STEP_LADDER, - eSoundType_DIG_CLOTH, - eSoundType_DIG_GRASS, - eSoundType_DIG_GRAVEL, - eSoundType_DIG_SAND, - eSoundType_DIG_SNOW, - eSoundType_DIG_STONE, - eSoundType_DIG_WOOD, +// TU14 +eSoundType_DAMAGE_THORNS, +eSoundType_RANDOM_ANVIL_BREAK, +eSoundType_RANDOM_ANVIL_LAND, +eSoundType_RANDOM_ANVIL_USE, +eSoundType_MOB_VILLAGER_HAGGLE, +eSoundType_MOB_VILLAGER_IDLE, +eSoundType_MOB_VILLAGER_HIT, +eSoundType_MOB_VILLAGER_DEATH, +eSoundType_MOB_VILLAGER_YES, +eSoundType_MOB_VILLAGER_NO, +eSoundType_MOB_ZOMBIE_INFECT, +eSoundType_MOB_ZOMBIE_UNFECT, +eSoundType_MOB_ZOMBIE_REMEDY, +eSoundType_STEP_SNOW, +eSoundType_STEP_LADDER, +eSoundType_DIG_CLOTH, +eSoundType_DIG_GRASS, +eSoundType_DIG_GRAVEL, +eSoundType_DIG_SAND, +eSoundType_DIG_SNOW, +eSoundType_DIG_STONE, +eSoundType_DIG_WOOD, - // 1.6.4 - eSoundType_FIREWORKS_LAUNCH, - eSoundType_FIREWORKS_BLAST, - eSoundType_FIREWORKS_BLAST_FAR, - eSoundType_FIREWORKS_LARGE_BLAST, - eSoundType_FIREWORKS_LARGE_BLAST_FAR, - eSoundType_FIREWORKS_TWINKLE, - eSoundType_FIREWORKS_TWINKLE_FAR, +// 1.6.4 +eSoundType_FIREWORKS_LAUNCH, +eSoundType_FIREWORKS_BLAST, +eSoundType_FIREWORKS_BLAST_FAR, +eSoundType_FIREWORKS_LARGE_BLAST, +eSoundType_FIREWORKS_LARGE_BLAST_FAR, +eSoundType_FIREWORKS_TWINKLE, +eSoundType_FIREWORKS_TWINKLE_FAR, - eSoundType_MOB_BAT_IDLE, - eSoundType_MOB_BAT_HURT, - eSoundType_MOB_BAT_DEATH, - eSoundType_MOB_BAT_TAKEOFF, +eSoundType_MOB_BAT_IDLE, +eSoundType_MOB_BAT_HURT, +eSoundType_MOB_BAT_DEATH, +eSoundType_MOB_BAT_TAKEOFF, - eSoundType_MOB_WITHER_SPAWN, - eSoundType_MOB_WITHER_IDLE, //"mob.wither.idle"; - eSoundType_MOB_WITHER_HURT, //"mob.wither.hurt"; - eSoundType_MOB_WITHER_DEATH,//"mob.wither.death"; - eSoundType_MOB_WITHER_SHOOT,//"mob.wither.shoot"; +eSoundType_MOB_WITHER_SPAWN, +eSoundType_MOB_WITHER_IDLE, //"mob.wither.idle"; +eSoundType_MOB_WITHER_HURT, //"mob.wither.hurt"; +eSoundType_MOB_WITHER_DEATH,//"mob.wither.death"; +eSoundType_MOB_WITHER_SHOOT,//"mob.wither.shoot"; - eSoundType_MOB_COW_STEP, - eSoundType_MOB_CHICKEN_STEP, - eSoundType_MOB_PIG_STEP, - eSoundType_MOB_ENDERMAN_STARE, - eSoundType_MOB_ENDERMAN_SCREAM, - eSoundType_MOB_SHEEP_SHEAR, - eSoundType_MOB_SHEEP_STEP, - eSoundType_MOB_SKELETON_DEATH, - eSoundType_MOB_SKELETON_STEP, - eSoundType_MOB_SPIDER_STEP, - eSoundType_MOB_WOLF_STEP, - eSoundType_MOB_ZOMBIE_STEP, - eSoundType_LIQUID_SWIM, - eSoundType_MOB_HORSE_LAND, - eSoundType_MOB_HORSE_ARMOR, - eSoundType_MOB_HORSE_LEATHER, - eSoundType_MOB_HORSE_ZOMBIE_DEATH, - eSoundType_MOB_HORSE_SKELETON_DEATH, - eSoundType_MOB_HORSE_DONKEY_DEATH, - eSoundType_MOB_HORSE_DEATH, - eSoundType_MOB_HORSE_ZOMBIE_HIT, - eSoundType_MOB_HORSE_SKELETON_HIT, - eSoundType_MOB_HORSE_DONKEY_HIT, - eSoundType_MOB_HORSE_HIT, - eSoundType_MOB_HORSE_ZOMBIE_IDLE, - eSoundType_MOB_HORSE_SKELETON_IDLE, - eSoundType_MOB_HORSE_DONKEY_IDLE, - eSoundType_MOB_HORSE_IDLE, - eSoundType_MOB_HORSE_DONKEY_ANGRY, - eSoundType_MOB_HORSE_ANGRY, - eSoundType_MOB_HORSE_GALLOP, - eSoundType_MOB_HORSE_BREATHE, - eSoundType_MOB_HORSE_WOOD, - eSoundType_MOB_HORSE_SOFT, - eSoundType_MOB_HORSE_JUMP, - eSoundType_MOB_WITCH_IDLE, - eSoundType_MOB_WITCH_HURT, - eSoundType_MOB_WITCH_DEATH, - eSoundType_MOB_SLIME_BIG, - eSoundType_MOB_SLIME_SMALL, - eSoundType_EATING, - eSoundType_RANDOM_LEVELUP, - - eSoundType_FIRE_NEWIGNITE, +eSoundType_MOB_COW_STEP, +eSoundType_MOB_CHICKEN_STEP, +eSoundType_MOB_PIG_STEP, +eSoundType_MOB_ENDERMAN_STARE, +eSoundType_MOB_ENDERMAN_SCREAM, +eSoundType_MOB_SHEEP_SHEAR, +eSoundType_MOB_SHEEP_STEP, +eSoundType_MOB_SKELETON_DEATH, +eSoundType_MOB_SKELETON_STEP, +eSoundType_MOB_SPIDER_STEP, +eSoundType_MOB_WOLF_STEP, +eSoundType_MOB_ZOMBIE_STEP, +eSoundType_LIQUID_SWIM, +eSoundType_MOB_HORSE_LAND, +eSoundType_MOB_HORSE_ARMOR, +eSoundType_MOB_HORSE_LEATHER, +eSoundType_MOB_HORSE_ZOMBIE_DEATH, +eSoundType_MOB_HORSE_SKELETON_DEATH, +eSoundType_MOB_HORSE_DONKEY_DEATH, +eSoundType_MOB_HORSE_DEATH, +eSoundType_MOB_HORSE_ZOMBIE_HIT, +eSoundType_MOB_HORSE_SKELETON_HIT, +eSoundType_MOB_HORSE_DONKEY_HIT, +eSoundType_MOB_HORSE_HIT, +eSoundType_MOB_HORSE_ZOMBIE_IDLE, +eSoundType_MOB_HORSE_SKELETON_IDLE, +eSoundType_MOB_HORSE_DONKEY_IDLE, +eSoundType_MOB_HORSE_IDLE, +eSoundType_MOB_HORSE_DONKEY_ANGRY, +eSoundType_MOB_HORSE_ANGRY, +eSoundType_MOB_HORSE_GALLOP, +eSoundType_MOB_HORSE_BREATHE, +eSoundType_MOB_HORSE_WOOD, +eSoundType_MOB_HORSE_SOFT, +eSoundType_MOB_HORSE_JUMP, +eSoundType_MOB_WITCH_IDLE, +eSoundType_MOB_WITCH_HURT, +eSoundType_MOB_WITCH_DEATH, +eSoundType_MOB_SLIME_BIG, +eSoundType_MOB_SLIME_SMALL, +eSoundType_EATING, +eSoundType_RANDOM_LEVELUP, +eSoundType_FIRE_NEWIGNITE, +//New ENUM +eSoundType_DAMAGE_CRITICAL, eSoundType_MAX };