Files
abysmal-isle/Scripts/Services/Party/PartyCommands.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

121 lines
3.9 KiB
C#

using System;
namespace Server.Engines.PartySystem
{
public class PartyCommandHandlers : PartyCommands
{
public static void Initialize()
{
PartyCommands.Handler = new PartyCommandHandlers();
}
public override void OnAdd(Mobile from)
{
Party p = Party.Get(from);
if (p != null && p.Leader != from)
from.SendLocalizedMessage(1005453); // You may only add members to the party if you are the leader.
else if (p != null && (p.Members.Count + p.Candidates.Count) >= Party.Capacity)
from.SendLocalizedMessage(1008095); // You may only have 10 in your party (this includes candidates).
else
from.Target = new AddPartyTarget(from);
}
public override void OnRemove(Mobile from, Mobile target)
{
Party p = Party.Get(from);
if (p == null)
{
from.SendLocalizedMessage(3000211); // You are not in a party.
return;
}
if (p.Leader == from && target == null)
{
from.SendLocalizedMessage(1005455); // Who would you like to remove from your party?
from.Target = new RemovePartyTarget();
}
else if ((p.Leader == from || from == target) && p.Contains(target))
{
p.Remove(target);
}
}
public override void OnPrivateMessage(Mobile from, Mobile target, string text)
{
if (text.Length > 128 || (text = text.Trim()).Length == 0)
return;
Party p = Party.Get(from);
if (p != null && p.Contains(target))
p.SendPrivateMessage(from, target, text);
else
from.SendLocalizedMessage(3000211); // You are not in a party.
}
public override void OnPublicMessage(Mobile from, string text)
{
if (text.Length > 128 || (text = text.Trim()).Length == 0)
return;
Party p = Party.Get(from);
if (p != null)
p.SendPublicMessage(from, text);
else
from.SendLocalizedMessage(3000211); // You are not in a party.
}
public override void OnSetCanLoot(Mobile from, bool canLoot)
{
Party p = Party.Get(from);
if (p == null)
{
from.SendLocalizedMessage(3000211); // You are not in a party.
}
else
{
PartyMemberInfo mi = p[from];
if (mi != null)
{
mi.CanLoot = canLoot;
if (canLoot)
from.SendLocalizedMessage(1005447); // You have chosen to allow your party to loot your corpse.
else
from.SendLocalizedMessage(1005448); // You have chosen to prevent your party from looting your corpse.
}
}
}
public override void OnAccept(Mobile from, Mobile sentLeader)
{
Mobile leader = from.Party as Mobile;
from.Party = null;
Party p = Party.Get(leader);
if (leader == null || p == null || !p.Candidates.Contains(from))
from.SendLocalizedMessage(3000222); // No one has invited you to be in a party.
else if ((p.Members.Count + p.Candidates.Count) <= Party.Capacity)
p.OnAccept(from);
}
public override void OnDecline(Mobile from, Mobile sentLeader)
{
Mobile leader = from.Party as Mobile;
from.Party = null;
Party p = Party.Get(leader);
if (leader == null || p == null || !p.Candidates.Contains(from))
from.SendLocalizedMessage(3000222); // No one has invited you to be in a party.
else
p.OnDecline(from, leader);
}
}
}