From 01e72ddb6567531b16f92af2564b853878b6ef65 Mon Sep 17 00:00:00 2001 From: changyong guo Date: Mon, 23 Jul 2018 17:24:00 +0800 Subject: Rewrite explosion knock back (#4251) 1. Base knockback on an entity's bounding box intersection with the explosion 2. Armor blast protection reduces knockback 3. Don't apply knockback to players flying in creative mode Fixes #4139 --- src/Entities/Entity.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/Entities/Entity.h') diff --git a/src/Entities/Entity.h b/src/Entities/Entity.h index 7ac12c95b..ae150b4e2 100644 --- a/src/Entities/Entity.h +++ b/src/Entities/Entity.h @@ -333,6 +333,10 @@ public: /** Returns the hitpoints that the currently equipped armor's enchantments would cover */ virtual int GetEnchantmentCoverAgainst(const cEntity * a_Attacker, eDamageType a_DamageType, int a_Damage); + /** Returns explosion knock back reduction percent from blast protection level + @return knock back reduce percent */ + virtual float GetEnchantmentBlastKnockbackReduction(); + /** Returns the knockback amount that the currently equipped items would cause to a_Receiver on a hit */ virtual double GetKnockbackAmountAgainst(const cEntity & a_Receiver); @@ -545,6 +549,12 @@ public: /** Returs whether the entity has any mob leashed to */ bool HasAnyMobLeashed() const { return m_LeashedMobs.size() > 0; } + /** a lightweight calculation approach to get explosion exposure rate + @param a_ExplosionPosition explosion position + @param a_ExlosionPower explosion power + @return exposure rate */ + virtual float GetExplosionExposureRate(Vector3d a_ExplosionPosition, float a_ExlosionPower); + protected: /** Structure storing the portal delay timer and cooldown boolean */ struct sPortalCooldownData @@ -714,5 +724,4 @@ private: /** List of leashed mobs to this entity */ cMonsterList m_LeashedMobs; - } ; // tolua_export -- cgit v1.2.3