Added destroy-timer system to splash potion entities
This commit is contained in:
parent
0e608b2844
commit
9e155c6add
@ -78,7 +78,8 @@ cSplashPotionEntity::cSplashPotionEntity(
|
|||||||
super(pkSplashPotion, a_Creator, a_X, a_Y, a_Z, 0.25, 0.25),
|
super(pkSplashPotion, a_Creator, a_X, a_Y, a_Z, 0.25, 0.25),
|
||||||
m_EntityEffectType(a_EntityEffectType),
|
m_EntityEffectType(a_EntityEffectType),
|
||||||
m_EntityEffect(a_EntityEffect),
|
m_EntityEffect(a_EntityEffect),
|
||||||
m_PotionColor(a_PotionColor)
|
m_PotionColor(a_PotionColor),
|
||||||
|
m_DestroyTimer(-1)
|
||||||
{
|
{
|
||||||
SetSpeed(a_Speed);
|
SetSpeed(a_Speed);
|
||||||
}
|
}
|
||||||
@ -90,7 +91,7 @@ cSplashPotionEntity::cSplashPotionEntity(
|
|||||||
void cSplashPotionEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace)
|
void cSplashPotionEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace)
|
||||||
{
|
{
|
||||||
Splash(a_HitPos);
|
Splash(a_HitPos);
|
||||||
Destroy();
|
m_DestroyTimer = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -101,7 +102,7 @@ void cSplashPotionEntity::OnHitEntity(cEntity & a_EntityHit, const Vector3d & a_
|
|||||||
{
|
{
|
||||||
a_EntityHit.TakeDamage(dtRangedAttack, this, 0, 1);
|
a_EntityHit.TakeDamage(dtRangedAttack, this, 0, 1);
|
||||||
Splash(a_HitPos);
|
Splash(a_HitPos);
|
||||||
Destroy(true);
|
m_DestroyTimer = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -52,10 +52,30 @@ protected:
|
|||||||
// cProjectileEntity overrides:
|
// cProjectileEntity overrides:
|
||||||
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace) override;
|
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace) override;
|
||||||
virtual void OnHitEntity (cEntity & a_EntityHit, const Vector3d & a_HitPos) override;
|
virtual void OnHitEntity (cEntity & a_EntityHit, const Vector3d & a_HitPos) override;
|
||||||
|
virtual void Tick (float a_Dt, cChunk & a_Chunk) override
|
||||||
|
{
|
||||||
|
if (m_DestroyTimer > 0)
|
||||||
|
{
|
||||||
|
m_DestroyTimer--;
|
||||||
|
if (m_DestroyTimer == 0)
|
||||||
|
{
|
||||||
|
Destroy();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
super::Tick(a_Dt, a_Chunk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Splashes the potion, fires its particle effects and sounds
|
/** Splashes the potion, fires its particle effects and sounds
|
||||||
@param a_HitPos The position where the potion will splash */
|
@param a_HitPos The position where the potion will splash */
|
||||||
void Splash(const Vector3d & a_HitPos);
|
void Splash(const Vector3d & a_HitPos);
|
||||||
|
|
||||||
virtual void SpawnOn(cClientHandle & a_Client) override;
|
virtual void SpawnOn(cClientHandle & a_Client) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
/** Time in ticks to wait for the hit animation to begin before destroying */
|
||||||
|
int m_DestroyTimer;
|
||||||
} ; // tolua_export
|
} ; // tolua_export
|
||||||
|
Loading…
Reference in New Issue
Block a user