Add Exp Bottle Effects
This commit is contained in:
parent
507a8a4b84
commit
f3bd288f02
@ -4,6 +4,8 @@
|
|||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
#include "../ClientHandle.h"
|
#include "../ClientHandle.h"
|
||||||
|
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
|
|
||||||
cExpOrb::cExpOrb(double a_X, double a_Y, double a_Z, int a_Reward) :
|
cExpOrb::cExpOrb(double a_X, double a_Y, double a_Z, int a_Reward) :
|
||||||
cEntity(etExpOrb, a_X, a_Y, a_Z, 0.98, 0.98),
|
cEntity(etExpOrb, a_X, a_Y, a_Z, 0.98, 0.98),
|
||||||
@ -51,6 +53,12 @@ void cExpOrb::Tick(float a_Dt, cChunk & a_Chunk)
|
|||||||
{
|
{
|
||||||
LOGD("Player %s picked up an ExpOrb. His reward is %i", a_ClosestPlayer->GetName().c_str(), m_Reward);
|
LOGD("Player %s picked up an ExpOrb. His reward is %i", a_ClosestPlayer->GetName().c_str(), m_Reward);
|
||||||
a_ClosestPlayer->DeltaExperience(m_Reward);
|
a_ClosestPlayer->DeltaExperience(m_Reward);
|
||||||
|
|
||||||
|
srand (static_cast <unsigned> (time(0)));
|
||||||
|
float r1 = static_cast <float> (rand()) / static_cast <float> (RAND_MAX); // Random Float Value (Java: random.nextFloat())
|
||||||
|
float r2 = static_cast <float> (rand()) / static_cast <float> (RAND_MAX); // Random Float Value (Java: random.nextFloat())
|
||||||
|
a_ClosestPlayer->PlaySoundEffect("random.orb", 0.1F, 0.5F * ((r1 - r2) * 0.7F + 1.8F));
|
||||||
|
|
||||||
Destroy(true);
|
Destroy(true);
|
||||||
}
|
}
|
||||||
a_Distance.Normalize();
|
a_Distance.Normalize();
|
||||||
|
@ -1059,6 +1059,15 @@ void cPlayer::CloseWindowIfID(char a_WindowID, bool a_CanRefuse)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void cPlayer::PlaySoundEffect(const AString & a_SoundName, float a_Volume, float a_Pitch)
|
||||||
|
{
|
||||||
|
m_ClientHandle->SendSoundEffect(a_SoundName, (int) (GetPosX() * 8.0), (int) (GetPosY() * 8.0), (int) (GetPosZ() * 8.0), a_Volume, a_Pitch);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cPlayer::SetLastBlockActionTime()
|
void cPlayer::SetLastBlockActionTime()
|
||||||
{
|
{
|
||||||
if (m_World != NULL)
|
if (m_World != NULL)
|
||||||
|
@ -208,6 +208,8 @@ public:
|
|||||||
const AString & GetName(void) const { return m_PlayerName; }
|
const AString & GetName(void) const { return m_PlayerName; }
|
||||||
void SetName(const AString & a_Name) { m_PlayerName = a_Name; }
|
void SetName(const AString & a_Name) { m_PlayerName = a_Name; }
|
||||||
|
|
||||||
|
void PlaySoundEffect(const AString & a_SoundName, float a_Volume, float a_Pitch);
|
||||||
|
|
||||||
// tolua_end
|
// tolua_end
|
||||||
|
|
||||||
typedef std::list< cGroup* > GroupList;
|
typedef std::list< cGroup* > GroupList;
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
#include "../ChunkMap.h"
|
#include "../ChunkMap.h"
|
||||||
#include "../Chunk.h"
|
#include "../Chunk.h"
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -680,6 +682,7 @@ super(pkExpBottle, a_Creator, a_X, a_Y, a_Z, 0.25, 0.25)
|
|||||||
void cExpBottleEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace)
|
void cExpBottleEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace)
|
||||||
{
|
{
|
||||||
// Spawn an experience orb with a reward between 3 and 11.
|
// Spawn an experience orb with a reward between 3 and 11.
|
||||||
|
m_World->BroadcastSoundParticleEffect(2002, (int) round(GetPosX()), (int) round(GetPosY()), (int) round(GetPosZ()), 0);
|
||||||
m_World->SpawnExperienceOrb(GetPosX(), GetPosY(), GetPosZ(), 3 + m_World->GetTickRandomNumber(8));
|
m_World->SpawnExperienceOrb(GetPosX(), GetPosY(), GetPosZ(), 3 + m_World->GetTickRandomNumber(8));
|
||||||
|
|
||||||
Destroy();
|
Destroy();
|
||||||
|
Loading…
Reference in New Issue
Block a user