diff options
author | Mattes D <github@xoft.cz> | 2014-07-01 15:07:12 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-07-01 15:07:12 +0200 |
commit | 9d843405b282937f9ee70e6ad066ce65a23a02a5 (patch) | |
tree | d7ad93182d00f62766e75fa7611d273dd4ff3d34 /src/Items/ItemBow.h | |
parent | Added a missing endline. (diff) | |
parent | Merge pull request #1140 from mc-server/FixMingw (diff) | |
download | cuberite-9d843405b282937f9ee70e6ad066ce65a23a02a5.tar cuberite-9d843405b282937f9ee70e6ad066ce65a23a02a5.tar.gz cuberite-9d843405b282937f9ee70e6ad066ce65a23a02a5.tar.bz2 cuberite-9d843405b282937f9ee70e6ad066ce65a23a02a5.tar.lz cuberite-9d843405b282937f9ee70e6ad066ce65a23a02a5.tar.xz cuberite-9d843405b282937f9ee70e6ad066ce65a23a02a5.tar.zst cuberite-9d843405b282937f9ee70e6ad066ce65a23a02a5.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Items/ItemBow.h | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/Items/ItemBow.h b/src/Items/ItemBow.h index 821e2ab26..940338d0f 100644 --- a/src/Items/ItemBow.h +++ b/src/Items/ItemBow.h @@ -46,20 +46,17 @@ public: { // Actual shot - produce the arrow with speed based on the ticks that the bow was charged ASSERT(a_Player != NULL); - + int BowCharge = a_Player->FinishChargingBow(); - double Force = (double)BowCharge / 20; - Force = (Force * Force + 2 * Force) / 3; // This formula is used by the 1.6.2 client + double Force = (double)BowCharge / 20.0; + Force = (Force * Force + 2.0 * Force) / 3.0; // This formula is used by the 1.6.2 client if (Force < 0.1) { // Too little force, ignore the shot return; } - if (Force > 1) - { - Force = 1; - } - + Force = std::max(Force, 1.0); + // Create the arrow entity: cArrowEntity * Arrow = new cArrowEntity(*a_Player, Force * 2); if (Arrow == NULL) @@ -72,8 +69,16 @@ public: Arrow = NULL; return; } - a_Player->GetWorld()->BroadcastSpawnEntity(*Arrow); - a_Player->GetWorld()->BroadcastSoundEffect("random.bow", (int)a_Player->GetPosX() * 8, (int)a_Player->GetPosY() * 8, (int)a_Player->GetPosZ() * 8, 0.5, (float)Force); + + cFastRandom Random; + a_Player->GetWorld()->BroadcastSoundEffect( + "random.bow", + (int)std::floor(a_Player->GetPosX() * 8.0), + (int)std::floor(a_Player->GetPosY() * 8.0), + (int)std::floor(a_Player->GetPosZ() * 8.0), + 1.0F, + 1.0F / (Random.NextFloat(1.0F) * 0.4F + 1.2F) + (float)Force * 0.5F + ); if (!a_Player->IsGameModeCreative()) { |