diff --git a/src/Perpetuum/Zones/NpcSystem/SmartCreature.cs b/src/Perpetuum/Zones/NpcSystem/SmartCreature.cs index 279e3c426..37026158d 100644 --- a/src/Perpetuum/Zones/NpcSystem/SmartCreature.cs +++ b/src/Perpetuum/Zones/NpcSystem/SmartCreature.cs @@ -364,6 +364,11 @@ public override void AcceptVisitor(IEntityVisitor visitor) } } + public virtual bool IsFriendly(Unit source) + { + return false; + } + protected override void OnTileChanged() { base.OnTileChanged(); @@ -417,7 +422,11 @@ protected override void OnDamageTaken(Unit source, DamageTakenEventArgs e) } BossInfo?.OnDamageTaken(this, player); - AddThreat(player, new Threat(ThreatType.Damage, e.TotalDamage * 0.9), true); + + if (!IsFriendly(source)) + { + AddThreat(player, new Threat(ThreatType.Damage, e.TotalDamage * 0.9), true); + } } protected override void OnUpdate(TimeSpan time) diff --git a/src/Perpetuum/Zones/RemoteControl/CombatDrone.cs b/src/Perpetuum/Zones/RemoteControl/CombatDrone.cs index f4585b94e..af07e3f17 100644 --- a/src/Perpetuum/Zones/RemoteControl/CombatDrone.cs +++ b/src/Perpetuum/Zones/RemoteControl/CombatDrone.cs @@ -106,7 +106,7 @@ internal override bool IsHostile(MobileTeleport teleport) protected override void OnUnitLockStateChanged(Lock @lock) { - // Do nothing + // Do nothing; Combat Drones don't care about locks } protected override void UpdateUnitVisibility(Unit target) diff --git a/src/Perpetuum/Zones/RemoteControl/SentryTurret.cs b/src/Perpetuum/Zones/RemoteControl/SentryTurret.cs index 6461f2fa2..a183503dd 100644 --- a/src/Perpetuum/Zones/RemoteControl/SentryTurret.cs +++ b/src/Perpetuum/Zones/RemoteControl/SentryTurret.cs @@ -2,9 +2,8 @@ using Perpetuum.Players; using Perpetuum.Services.Standing; using Perpetuum.Units; -using Perpetuum.Zones.DamageProcessors; +using Perpetuum.Zones.Locking.Locks; using Perpetuum.Zones.NpcSystem; -using Perpetuum.Zones.NpcSystem.ThreatManaging; using System; namespace Perpetuum.Zones.RemoteControl @@ -73,21 +72,16 @@ protected override void OnUpdate(TimeSpan time) base.OnUpdate(time); } - protected override void OnDamageTaken(Unit source, DamageTakenEventArgs e) + protected override void OnUnitLockStateChanged(Lock @lock) { - base.OnDamageTaken(source, e); + // Do nothing; Sentry Turrets don't care about locks + } + public override bool IsFriendly(Unit source) + { Player player = Zone.ToPlayerOrGetOwnerPlayer(source); - if (player == null) - { - return; - } - - if (IsHostilePlayer(player)) - { - AddThreat(player, new Threat(ThreatType.Damage, e.TotalDamage * 0.9), true); - } + return player != null && IsHostilePlayer(player); } } } \ No newline at end of file