summaryrefslogtreecommitdiffstats
path: root/src/Items/ItemBow.h
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2014-07-01 15:07:12 +0200
committerMattes D <github@xoft.cz>2014-07-01 15:07:12 +0200
commit9d843405b282937f9ee70e6ad066ce65a23a02a5 (patch)
treed7ad93182d00f62766e75fa7611d273dd4ff3d34 /src/Items/ItemBow.h
parentAdded a missing endline. (diff)
parentMerge pull request #1140 from mc-server/FixMingw (diff)
downloadcuberite-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.h25
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())
{