summaryrefslogtreecommitdiffstats
path: root/src/Entities
diff options
context:
space:
mode:
Diffstat (limited to 'src/Entities')
-rw-r--r--src/Entities/Entity.cpp12
-rw-r--r--src/Entities/Pawn.cpp5
-rw-r--r--src/Entities/SplashPotionEntity.cpp1
-rw-r--r--src/Entities/SplashPotionEntity.h2
4 files changed, 14 insertions, 6 deletions
diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp
index 30aa87f37..6e1dec957 100644
--- a/src/Entities/Entity.cpp
+++ b/src/Entities/Entity.cpp
@@ -1927,10 +1927,13 @@ void cEntity::AttachTo(cEntity * a_AttachTo)
Detach();
}
- // Attach to the new entity:
+ // Update state information
m_AttachedTo = a_AttachTo;
a_AttachTo->m_Attachee = this;
- m_World->BroadcastAttachEntity(*this, a_AttachTo);
+ if (a_AttachTo != nullptr)
+ {
+ m_World->BroadcastAttachEntity(*this, *a_AttachTo);
+ }
}
@@ -1941,12 +1944,13 @@ void cEntity::Detach(void)
{
if (m_AttachedTo == nullptr)
{
- // Attached to no entity, our work is done
+ // Already not attached to any entity, our work is done
return;
}
+ m_World->BroadcastDetachEntity(*this, *m_AttachedTo);
+
m_AttachedTo->m_Attachee = nullptr;
m_AttachedTo = nullptr;
- m_World->BroadcastAttachEntity(*this, nullptr);
}
diff --git a/src/Entities/Pawn.cpp b/src/Entities/Pawn.cpp
index 69c2db5e7..462fa5057 100644
--- a/src/Entities/Pawn.cpp
+++ b/src/Entities/Pawn.cpp
@@ -418,8 +418,9 @@ void cPawn::HandleFalling(void)
TakeDamage(dtFalling, nullptr, Damage, Damage, 0);
// Fall particles
- int ParticleSize = static_cast<int>((std::min(15, Damage) - 1.f) * ((50.f - 20.f) / (15.f - 1.f)) + 20.f);
- GetWorld()->BroadcastSoundParticleEffect(EffectID::PARTICLE_FALL_PARTICLES, POSX_TOINT, POSY_TOINT - 1, POSZ_TOINT, ParticleSize);
+ // TODO: Re-enable this when effects in 1.9 aren't broken (right now this uses the wrong effect ID in 1.9 and the right one in 1.8 and 1.7)
+ // int ParticleSize = static_cast<int>((std::min(15, Damage) - 1.f) * ((50.f - 20.f) / (15.f - 1.f)) + 20.f);
+ // GetWorld()->BroadcastSoundParticleEffect(EffectID::PARTICLE_FALL_PARTICLES, POSX_TOINT, POSY_TOINT - 1, POSZ_TOINT, ParticleSize);
}
m_bTouchGround = true;
diff --git a/src/Entities/SplashPotionEntity.cpp b/src/Entities/SplashPotionEntity.cpp
index e61df0525..af4008e83 100644
--- a/src/Entities/SplashPotionEntity.cpp
+++ b/src/Entities/SplashPotionEntity.cpp
@@ -80,6 +80,7 @@ cSplashPotionEntity::cSplashPotionEntity(
const cItem & a_Item
) :
super(pkSplashPotion, a_Creator, a_X, a_Y, a_Z, 0.25, 0.25),
+ m_Item(a_Item),
m_DestroyTimer(-1)
{
SetSpeed(a_Speed);
diff --git a/src/Entities/SplashPotionEntity.h b/src/Entities/SplashPotionEntity.h
index c9831ce88..85aa5046f 100644
--- a/src/Entities/SplashPotionEntity.h
+++ b/src/Entities/SplashPotionEntity.h
@@ -41,6 +41,7 @@ public:
cEntityEffect::eType GetEntityEffectType(void) const { return m_EntityEffectType; }
cEntityEffect GetEntityEffect(void) const { return m_EntityEffect; }
int GetPotionColor(void) const { return m_PotionColor; }
+ const cItem & GetItem(void) const { return m_Item; }
void SetEntityEffectType(cEntityEffect::eType a_EntityEffectType) { m_EntityEffectType = a_EntityEffectType; }
void SetEntityEffect(cEntityEffect a_EntityEffect) { m_EntityEffect = a_EntityEffect; }
@@ -53,6 +54,7 @@ protected:
cEntityEffect::eType m_EntityEffectType;
cEntityEffect m_EntityEffect;
int m_PotionColor;
+ cItem m_Item;
// cProjectileEntity overrides: