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/Painting.cpp9
-rw-r--r--src/Entities/Painting.h6
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;