mirror of
https://github.com/modernuo/ModernUO
synced 2026-08-11 22:23:06 -04:00
74 lines
2 KiB
C#
74 lines
2 KiB
C#
using System;
|
|
|
|
namespace Server.Misc
|
|
{
|
|
public static class AttackMessage
|
|
{
|
|
private const string AggressorFormat = "You are attacking {0}!";
|
|
private const string AggressedFormat = "{0} is attacking you!";
|
|
private const int Hue = 0x22;
|
|
|
|
private static readonly TimeSpan Delay = TimeSpan.FromMinutes(1.0);
|
|
|
|
public static void Initialize()
|
|
{
|
|
EventSink.AggressiveAction += EventSink_AggressiveAction;
|
|
}
|
|
|
|
public static void EventSink_AggressiveAction(AggressiveActionEventArgs e)
|
|
{
|
|
var aggressor = e.Aggressor;
|
|
var aggressed = e.Aggressed;
|
|
|
|
if (!aggressor.Player || !aggressed.Player)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (!CheckAggressions(aggressor, aggressed))
|
|
{
|
|
aggressor.LocalOverheadMessage(
|
|
MessageType.Regular,
|
|
Hue,
|
|
true,
|
|
string.Format(AggressorFormat, aggressed.Name)
|
|
);
|
|
aggressed.LocalOverheadMessage(
|
|
MessageType.Regular,
|
|
Hue,
|
|
true,
|
|
string.Format(AggressedFormat, aggressor.Name)
|
|
);
|
|
}
|
|
}
|
|
|
|
public static bool CheckAggressions(Mobile m1, Mobile m2)
|
|
{
|
|
var list = m1.Aggressors;
|
|
|
|
for (var i = 0; i < list.Count; ++i)
|
|
{
|
|
var info = list[i];
|
|
|
|
if (info.Attacker == m2 && Core.Now < info.LastCombatTime + Delay)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
list = m2.Aggressors;
|
|
|
|
for (var i = 0; i < list.Count; ++i)
|
|
{
|
|
var info = list[i];
|
|
|
|
if (info.Attacker == m1 && Core.Now < info.LastCombatTime + Delay)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|