diff --git a/binaries/data/mods/public/audio/interface/alarm/alarm_attacked_gaia.xml b/binaries/data/mods/public/audio/interface/alarm/alarm_attacked_gaia.xml
new file mode 100644
index 0000000000..a00672a1c8
--- /dev/null
+++ b/binaries/data/mods/public/audio/interface/alarm/alarm_attacked_gaia.xml
@@ -0,0 +1,17 @@
+
+
+ 1
+ owner
+ 0.35
+ 100
+ 1
+ 0
+ 1
+ 1
+ 0.35
+ 0.30
+ 1
+ 1
+ audio/interface/alarm/
+ alarm_attacked_gaia_01.ogg
+
diff --git a/binaries/data/mods/public/audio/interface/alarm/alarm_attacked_gaia_01.ogg b/binaries/data/mods/public/audio/interface/alarm/alarm_attacked_gaia_01.ogg
new file mode 100644
index 0000000000..d855f20bff
--- /dev/null
+++ b/binaries/data/mods/public/audio/interface/alarm/alarm_attacked_gaia_01.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b9568ffc25c9be27a4b3de6b8d42fafe2ba37023668d0c21f4b7cfc92e2e41f
+size 392012
diff --git a/binaries/data/mods/public/globalscripts/AttackEffects.js b/binaries/data/mods/public/globalscripts/AttackEffects.js
index 0af93a0669..eadaa07d6d 100755
--- a/binaries/data/mods/public/globalscripts/AttackEffects.js
+++ b/binaries/data/mods/public/globalscripts/AttackEffects.js
@@ -7,7 +7,8 @@ const g_EffectReceiver = {
},
"Capture": {
"IID": "IID_Capturable",
- "method": "Capture"
+ "method": "Capture",
+ "sound": "capture"
},
"ApplyStatus": {
"IID": "IID_StatusEffectsReceiver",
diff --git a/binaries/data/mods/public/simulation/components/AttackDetection.js b/binaries/data/mods/public/simulation/components/AttackDetection.js
index 6d7abe1285..5bdc316361 100644
--- a/binaries/data/mods/public/simulation/components/AttackDetection.js
+++ b/binaries/data/mods/public/simulation/components/AttackDetection.js
@@ -50,12 +50,12 @@ AttackDetection.prototype.OnGlobalAttacked = function(msg)
Engine.PostMessage(msg.target, MT_MinimapPing);
- this.AttackAlert(msg.target, msg.attacker, msg.attackerOwner);
+ this.AttackAlert(msg.target, msg.attacker, msg.type, msg.attackerOwner);
};
//// External interface ////
-AttackDetection.prototype.AttackAlert = function(target, attacker, attackerOwner)
+AttackDetection.prototype.AttackAlert = function(target, attacker, type, attackerOwner)
{
let playerID = Engine.QueryInterface(this.entity, IID_Player).GetPlayerID();
@@ -127,7 +127,15 @@ AttackDetection.prototype.AttackAlert = function(target, attacker, attackerOwner
"attacker": atkOwner,
"targetIsDomesticAnimal": targetIsDomesticAnimal
});
- PlaySound("attacked", target);
+
+ let soundGroup = "attacked";
+ if (g_EffectReceiver[type] && g_EffectReceiver[type].sound)
+ soundGroup += '_' + g_EffectReceiver[type].sound;
+
+ if (attackerOwner === 0)
+ soundGroup += "_gaia";
+
+ PlaySound(soundGroup, target);
};
AttackDetection.prototype.GetSuppressionTime = function()
diff --git a/binaries/data/mods/public/simulation/templates/template_structure.xml b/binaries/data/mods/public/simulation/templates/template_structure.xml
index 0e873c9626..8891cd6f8f 100644
--- a/binaries/data/mods/public/simulation/templates/template_structure.xml
+++ b/binaries/data/mods/public/simulation/templates/template_structure.xml
@@ -133,6 +133,9 @@
interface/complete/building/complete_universal.xml
attack/destruction/building_collapse_large.xml
interface/alarm/alarm_attackplayer.xml
+ interface/alarm/alarm_attacked_gaia.xml
+ interface/alarm/alarm_attackplayer.xml
+ interface/alarm/alarm_attacked_gaia.xml
attack/weapon/bow_attack.xml
attack/impact/arrow_impact.xml
diff --git a/binaries/data/mods/public/simulation/templates/template_unit.xml b/binaries/data/mods/public/simulation/templates/template_unit.xml
index efa715d51c..bfc2ffbded 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit.xml
@@ -104,6 +104,9 @@
interface/alarm/alarm_attackplayer.xml
+ interface/alarm/alarm_attacked_gaia.xml
+ interface/alarm/alarm_attackplayer.xml
+ interface/alarm/alarm_attacked_gaia.xml
attack/weapon/sword_attack.xml