73 lines
2.1 KiB
C#
73 lines
2.1 KiB
C#
using System;
|
|
using System.Collections;
|
|
using Server;
|
|
using Knives.Utils;
|
|
|
|
namespace Knives.Chat3
|
|
{
|
|
public class Guild : Channel
|
|
{
|
|
public static void Initialize()
|
|
{
|
|
new Guild();
|
|
}
|
|
|
|
public Guild() : base("Guild")
|
|
{
|
|
Commands.Add("guild");
|
|
Commands.Add("g");
|
|
DefaultC = 0x44;
|
|
|
|
Register(this);
|
|
}
|
|
|
|
public override string NameFor(Mobile m)
|
|
{
|
|
if (m.Guild == null)
|
|
return Name;
|
|
|
|
if (m.Guild.Abbreviation == "")
|
|
return Name;
|
|
|
|
return m.Guild.Abbreviation;
|
|
}
|
|
|
|
public override bool CanChat(Mobile m, bool say)
|
|
{
|
|
if (m.Guild == null)
|
|
{
|
|
if (say) m.SendMessage(Data.GetData(m).SystemC, General.Local(36));
|
|
return false;
|
|
}
|
|
|
|
return base.CanChat(m, say);
|
|
}
|
|
|
|
protected override void Broadcast(Mobile m, string msg)
|
|
{
|
|
foreach (Data data in Data.Datas.Values)
|
|
{
|
|
if (data.Mobile.AccessLevel >= m.AccessLevel && ((data.GlobalG && !data.GIgnores.Contains(m)) || data.GListens.Contains(m)))
|
|
data.Mobile.SendMessage(data.GlobalGC, String.Format("(Global) <{0}> {1}: {2}", NameFor(m), m.Name, msg));
|
|
else if (data.Channels.Contains(Name) && !data.Ignores.Contains(m))
|
|
{
|
|
if (data.Mobile.Guild != m.Guild)
|
|
continue;
|
|
|
|
data.Mobile.SendMessage(m.AccessLevel == AccessLevel.Player ? data.ColorFor(this) : Data.GetData(m).StaffC, String.Format("<{0}{1}> {2}: {3}", NameFor(m), (Style == ChatStyle.Regional && m.Region != null ? "-" + m.Region.Name : ""), m.Name, msg));
|
|
}
|
|
}
|
|
}
|
|
|
|
public override ArrayList BuildList(Mobile m)
|
|
{
|
|
ArrayList list = base.BuildList(m);
|
|
|
|
foreach (Mobile mob in new ArrayList(list))
|
|
if (mob.Guild != m.Guild)
|
|
list.Remove(mob);
|
|
|
|
return list;
|
|
}
|
|
}
|
|
} |