diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Entities/Entity.cpp | 12 | ||||
-rw-r--r-- | src/Entities/Painting.cpp | 9 | ||||
-rw-r--r-- | src/Entities/Painting.h | 6 |
3 files changed, 22 insertions, 5 deletions
diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp index aada520f7..e9605fe5a 100644 --- a/src/Entities/Entity.cpp +++ b/src/Entities/Entity.cpp @@ -390,6 +390,18 @@ bool cEntity::DoTakeDamage(TakeDamageInfo & a_TDI) return false; } + if (IsPainting()) + { + KilledBy(a_TDI); + + if (a_TDI.Attacker != nullptr) + { + a_TDI.Attacker->Killed(this); + } + + return true; + } + if ((a_TDI.Attacker != nullptr) && (a_TDI.Attacker->IsPlayer())) { cPlayer * Player = static_cast<cPlayer *>(a_TDI.Attacker); diff --git a/src/Entities/Painting.cpp b/src/Entities/Painting.cpp index 0f2139cd1..1f9662019 100644 --- a/src/Entities/Painting.cpp +++ b/src/Entities/Painting.cpp @@ -24,6 +24,8 @@ void cPainting::SpawnOn(cClientHandle & a_Client) { Super::SpawnOn(a_Client); a_Client.SendPaintingSpawn(*this); + + m_World->BroadcastSoundEffect("entity.painting.place", GetPosition(), 1, 1); } @@ -41,3 +43,10 @@ void cPainting::GetDrops(cItems & a_Items, cEntity * a_Killer) + +void cPainting::KilledBy(TakeDamageInfo & a_TDI) +{ + Super::KilledBy(a_TDI); + m_World->BroadcastSoundEffect("entity.painting.break", GetPosition(), 1, 1); + Destroy(); +} diff --git a/src/Entities/Painting.h b/src/Entities/Painting.h index 844fd72f5..f6ca5f000 100644 --- a/src/Entities/Painting.h +++ b/src/Entities/Painting.h @@ -28,11 +28,7 @@ private: virtual void SpawnOn(cClientHandle & a_Client) override; virtual void GetDrops(cItems & a_Items, cEntity * a_Killer) override; - virtual void KilledBy(TakeDamageInfo & a_TDI) override - { - Super::KilledBy(a_TDI); - Destroy(); - } + virtual void KilledBy(TakeDamageInfo & a_TDI) override; AString m_Name; |