Adds style cop (#109)
This commit is contained in:
parent
3e715bcb60
commit
556a17aba8
1725 changed files with 33831 additions and 38046 deletions
|
|
@ -6,12 +6,12 @@ namespace Server.Items
|
|||
{
|
||||
public class AcidSlime : Item
|
||||
{
|
||||
private DateTime m_Created;
|
||||
private readonly DateTime m_Created;
|
||||
private bool m_Drying;
|
||||
private TimeSpan m_Duration;
|
||||
private int m_MaxDamage;
|
||||
private int m_MinDamage;
|
||||
private Timer m_Timer;
|
||||
private readonly TimeSpan m_Duration;
|
||||
private readonly int m_MaxDamage;
|
||||
private readonly int m_MinDamage;
|
||||
private readonly Timer m_Timer;
|
||||
|
||||
[Constructible]
|
||||
public AcidSlime() : this(TimeSpan.FromSeconds(10.0), 5, 10)
|
||||
|
|
|
|||
|
|
@ -62,10 +62,10 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_Worth = reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
{
|
||||
m_Worth = reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ namespace Server.Items
|
|||
{
|
||||
}
|
||||
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ namespace Server.Items
|
|||
|
||||
private class ConfirmGump : BaseConfirmGump
|
||||
{
|
||||
private Item m_Item;
|
||||
private readonly Item m_Item;
|
||||
|
||||
public ConfirmGump(Item item) => m_Item = item;
|
||||
|
||||
|
|
|
|||
|
|
@ -63,18 +63,18 @@ namespace Server.Items
|
|||
else
|
||||
serial &= 0x7FFFFFFF;
|
||||
|
||||
m_Stream.Write(serial);
|
||||
m_Stream.Write((short)(itemID & 0x7FFF));
|
||||
Stream.Write(serial);
|
||||
Stream.Write((short)(itemID & 0x7FFF));
|
||||
|
||||
if (amount != 0)
|
||||
m_Stream.Write((short)amount);
|
||||
Stream.Write((short)amount);
|
||||
|
||||
x &= 0x7FFF;
|
||||
|
||||
if (direction != 0)
|
||||
x |= 0x8000;
|
||||
|
||||
m_Stream.Write((short)x);
|
||||
Stream.Write((short)x);
|
||||
|
||||
y &= 0x3FFF;
|
||||
|
||||
|
|
@ -84,18 +84,18 @@ namespace Server.Items
|
|||
if (flags != 0)
|
||||
y |= 0x4000;
|
||||
|
||||
m_Stream.Write((short)y);
|
||||
Stream.Write((short)y);
|
||||
|
||||
if (direction != 0)
|
||||
m_Stream.Write((byte)direction);
|
||||
Stream.Write((byte)direction);
|
||||
|
||||
m_Stream.Write((sbyte)loc.Z);
|
||||
Stream.Write((sbyte)loc.Z);
|
||||
|
||||
if (hue != 0)
|
||||
m_Stream.Write((ushort)hue);
|
||||
Stream.Write((ushort)hue);
|
||||
|
||||
if (flags != 0)
|
||||
m_Stream.Write((byte)flags);
|
||||
Stream.Write((byte)flags);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ namespace Server.Items
|
|||
|
||||
private class InternalTimer : Timer
|
||||
{
|
||||
private Item m_Blood;
|
||||
private readonly Item m_Blood;
|
||||
|
||||
public InternalTimer(Item blood) : base(TimeSpan.FromSeconds(5.0))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ namespace Server.Items
|
|||
|
||||
public class BolaTarget : Target
|
||||
{
|
||||
private Bola m_Bola;
|
||||
private readonly Bola m_Bola;
|
||||
|
||||
public BolaTarget(Bola bola) : base(8, false, TargetFlags.Harmful) => m_Bola = bola;
|
||||
|
||||
|
|
|
|||
|
|
@ -35,13 +35,13 @@ namespace Server.Items
|
|||
public abstract class BaseBulletinBoard : Item
|
||||
{
|
||||
// Threads will be removed six hours after the last post was made
|
||||
private static TimeSpan ThreadDeletionTime = TimeSpan.FromHours(6.0);
|
||||
private static readonly TimeSpan ThreadDeletionTime = TimeSpan.FromHours(6.0);
|
||||
|
||||
// A player may only create a thread once every two minutes
|
||||
private static TimeSpan ThreadCreateTime = TimeSpan.FromMinutes(2.0);
|
||||
private static readonly TimeSpan ThreadCreateTime = TimeSpan.FromMinutes(2.0);
|
||||
|
||||
// A player may only reply once every thirty seconds
|
||||
private static TimeSpan ThreadReplyTime = TimeSpan.FromSeconds(30.0);
|
||||
private static readonly TimeSpan ThreadReplyTime = TimeSpan.FromSeconds(30.0);
|
||||
|
||||
public BaseBulletinBoard(int itemID) : base(itemID)
|
||||
{
|
||||
|
|
@ -54,7 +54,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public string BoardName{ get; set; }
|
||||
public string BoardName { get; set; }
|
||||
|
||||
public static bool CheckTime(DateTime time, TimeSpan range) => time + range < DateTime.UtcNow;
|
||||
|
||||
|
|
@ -192,10 +192,10 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
BoardName = reader.ReadString();
|
||||
break;
|
||||
}
|
||||
{
|
||||
BoardName = reader.ReadString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -344,25 +344,25 @@ namespace Server.Items
|
|||
{
|
||||
}
|
||||
|
||||
public Mobile Poster{ get; private set; }
|
||||
public Mobile Poster { get; private set; }
|
||||
|
||||
public BulletinMessage Thread{ get; private set; }
|
||||
public BulletinMessage Thread { get; private set; }
|
||||
|
||||
public string Subject{ get; private set; }
|
||||
public string Subject { get; private set; }
|
||||
|
||||
public DateTime Time{ get; private set; }
|
||||
public DateTime Time { get; private set; }
|
||||
|
||||
public DateTime LastPostTime{ get; set; }
|
||||
public DateTime LastPostTime { get; set; }
|
||||
|
||||
public string PostedName{ get; private set; }
|
||||
public string PostedName { get; private set; }
|
||||
|
||||
public int PostedBody{ get; private set; }
|
||||
public int PostedBody { get; private set; }
|
||||
|
||||
public int PostedHue{ get; private set; }
|
||||
public int PostedHue { get; private set; }
|
||||
|
||||
public BulletinEquip[] PostedEquip{ get; private set; }
|
||||
public BulletinEquip[] PostedEquip { get; private set; }
|
||||
|
||||
public string[] Lines{ get; private set; }
|
||||
public string[] Lines { get; private set; }
|
||||
|
||||
public string GetTimeAsString() => Time.ToString("MMM dd, yyyy");
|
||||
|
||||
|
|
@ -410,38 +410,38 @@ namespace Server.Items
|
|||
{
|
||||
case 1:
|
||||
case 0:
|
||||
{
|
||||
Poster = reader.ReadMobile();
|
||||
Subject = reader.ReadString();
|
||||
Time = reader.ReadDateTime();
|
||||
LastPostTime = reader.ReadDateTime();
|
||||
bool hasThread = reader.ReadBool();
|
||||
Thread = reader.ReadItem() as BulletinMessage;
|
||||
PostedName = reader.ReadString();
|
||||
PostedBody = reader.ReadInt();
|
||||
PostedHue = reader.ReadInt();
|
||||
|
||||
PostedEquip = new BulletinEquip[reader.ReadInt()];
|
||||
|
||||
for (int i = 0; i < PostedEquip.Length; ++i)
|
||||
{
|
||||
PostedEquip[i].itemID = reader.ReadInt();
|
||||
PostedEquip[i].hue = reader.ReadInt();
|
||||
Poster = reader.ReadMobile();
|
||||
Subject = reader.ReadString();
|
||||
Time = reader.ReadDateTime();
|
||||
LastPostTime = reader.ReadDateTime();
|
||||
bool hasThread = reader.ReadBool();
|
||||
Thread = reader.ReadItem() as BulletinMessage;
|
||||
PostedName = reader.ReadString();
|
||||
PostedBody = reader.ReadInt();
|
||||
PostedHue = reader.ReadInt();
|
||||
|
||||
PostedEquip = new BulletinEquip[reader.ReadInt()];
|
||||
|
||||
for (int i = 0; i < PostedEquip.Length; ++i)
|
||||
{
|
||||
PostedEquip[i].itemID = reader.ReadInt();
|
||||
PostedEquip[i].hue = reader.ReadInt();
|
||||
}
|
||||
|
||||
Lines = new string[reader.ReadInt()];
|
||||
|
||||
for (int i = 0; i < Lines.Length; ++i)
|
||||
Lines[i] = reader.ReadString();
|
||||
|
||||
if (hasThread && Thread == null)
|
||||
Delete();
|
||||
|
||||
if (version == 0)
|
||||
ValidationQueue<BulletinMessage>.Add(this);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
Lines = new string[reader.ReadInt()];
|
||||
|
||||
for (int i = 0; i < Lines.Length; ++i)
|
||||
Lines[i] = reader.ReadString();
|
||||
|
||||
if (hasThread && Thread == null)
|
||||
Delete();
|
||||
|
||||
if (version == 0)
|
||||
ValidationQueue<BulletinMessage>.Add(this);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -460,19 +460,19 @@ namespace Server.Items
|
|||
|
||||
byte[] buffer = Utility.UTF8.GetBytes(board.BoardName ?? "");
|
||||
|
||||
m_Stream.Write((byte)0x00); // PacketID
|
||||
m_Stream.Write(board.Serial); // Bulletin board serial
|
||||
Stream.Write((byte)0x00); // PacketID
|
||||
Stream.Write(board.Serial); // Bulletin board serial
|
||||
|
||||
// Bulletin board name
|
||||
if (buffer.Length >= 29)
|
||||
{
|
||||
m_Stream.Write(buffer, 0, 29);
|
||||
m_Stream.Write((byte)0);
|
||||
Stream.Write(buffer, 0, 29);
|
||||
Stream.Write((byte)0);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_Stream.Write(buffer, 0, buffer.Length);
|
||||
m_Stream.Fill(30 - buffer.Length);
|
||||
Stream.Write(buffer, 0, buffer.Length);
|
||||
Stream.Fill(30 - buffer.Length);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -487,16 +487,16 @@ namespace Server.Items
|
|||
|
||||
EnsureCapacity(22 + poster.Length + subject.Length + time.Length);
|
||||
|
||||
m_Stream.Write((byte)0x01); // PacketID
|
||||
m_Stream.Write(board.Serial); // Bulletin board serial
|
||||
m_Stream.Write(msg.Serial); // Message serial
|
||||
Stream.Write((byte)0x01); // PacketID
|
||||
Stream.Write(board.Serial); // Bulletin board serial
|
||||
Stream.Write(msg.Serial); // Message serial
|
||||
|
||||
BulletinMessage thread = msg.Thread;
|
||||
|
||||
if (thread == null)
|
||||
m_Stream.Write(0); // Thread serial--root
|
||||
Stream.Write(0); // Thread serial--root
|
||||
else
|
||||
m_Stream.Write(thread.Serial); // Thread serial--parent
|
||||
Stream.Write(thread.Serial); // Thread serial--parent
|
||||
|
||||
WriteString(poster);
|
||||
WriteString(subject);
|
||||
|
|
@ -511,9 +511,9 @@ namespace Server.Items
|
|||
if (len > 255)
|
||||
len = 255;
|
||||
|
||||
m_Stream.Write((byte)len);
|
||||
m_Stream.Write(buffer, 0, len - 1);
|
||||
m_Stream.Write((byte)0);
|
||||
Stream.Write((byte)len);
|
||||
Stream.Write(buffer, 0, len - 1);
|
||||
Stream.Write((byte)0);
|
||||
}
|
||||
|
||||
public string SafeString(string v) => v ?? string.Empty;
|
||||
|
|
@ -529,30 +529,30 @@ namespace Server.Items
|
|||
|
||||
EnsureCapacity(22 + poster.Length + subject.Length + time.Length);
|
||||
|
||||
m_Stream.Write((byte)0x02); // PacketID
|
||||
m_Stream.Write(board.Serial); // Bulletin board serial
|
||||
m_Stream.Write(msg.Serial); // Message serial
|
||||
Stream.Write((byte)0x02); // PacketID
|
||||
Stream.Write(board.Serial); // Bulletin board serial
|
||||
Stream.Write(msg.Serial); // Message serial
|
||||
|
||||
WriteString(poster);
|
||||
WriteString(subject);
|
||||
WriteString(time);
|
||||
|
||||
m_Stream.Write((short)msg.PostedBody);
|
||||
m_Stream.Write((short)msg.PostedHue);
|
||||
Stream.Write((short)msg.PostedBody);
|
||||
Stream.Write((short)msg.PostedHue);
|
||||
|
||||
int len = msg.PostedEquip.Length;
|
||||
|
||||
if (len > 255)
|
||||
len = 255;
|
||||
|
||||
m_Stream.Write((byte)len);
|
||||
Stream.Write((byte)len);
|
||||
|
||||
for (int i = 0; i < len; ++i)
|
||||
{
|
||||
BulletinEquip eq = msg.PostedEquip[i];
|
||||
|
||||
m_Stream.Write((short)eq.itemID);
|
||||
m_Stream.Write((short)eq.hue);
|
||||
Stream.Write((short)eq.itemID);
|
||||
Stream.Write((short)eq.hue);
|
||||
}
|
||||
|
||||
len = msg.Lines.Length;
|
||||
|
|
@ -560,7 +560,7 @@ namespace Server.Items
|
|||
if (len > 255)
|
||||
len = 255;
|
||||
|
||||
m_Stream.Write((byte)len);
|
||||
Stream.Write((byte)len);
|
||||
|
||||
for (int i = 0; i < len; ++i)
|
||||
WriteString(msg.Lines[i], true);
|
||||
|
|
@ -580,13 +580,13 @@ namespace Server.Items
|
|||
if (len > 255)
|
||||
len = 255;
|
||||
|
||||
m_Stream.Write((byte)len);
|
||||
m_Stream.Write(buffer, 0, len - tail);
|
||||
Stream.Write((byte)len);
|
||||
Stream.Write(buffer, 0, len - tail);
|
||||
|
||||
if (padding)
|
||||
m_Stream.Write((short)0); // padding compensates for a client bug
|
||||
Stream.Write((short)0); // padding compensates for a client bug
|
||||
else
|
||||
m_Stream.Write((byte)0);
|
||||
Stream.Write((byte)0);
|
||||
}
|
||||
|
||||
public string SafeString(string v)
|
||||
|
|
|
|||
|
|
@ -76,39 +76,39 @@ namespace Server.Items
|
|||
switch (res)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
from.SendMessage("You must have a power crystal to construct the golem.");
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
from.SendMessage("You must have 50 iron ingots to construct the golem.");
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
from.SendMessage("You must have 50 bronze ingots to construct the golem.");
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
from.SendMessage("You must have 5 gears to construct the golem.");
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
Golem g = new Golem(true, scalar);
|
||||
|
||||
if (g.SetControlMaster(from))
|
||||
{
|
||||
Delete();
|
||||
|
||||
g.MoveToWorld(from.Location, from.Map);
|
||||
from.PlaySound(0x241);
|
||||
from.SendMessage("You must have a power crystal to construct the golem.");
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
from.SendMessage("You must have 50 iron ingots to construct the golem.");
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
from.SendMessage("You must have 50 bronze ingots to construct the golem.");
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
from.SendMessage("You must have 5 gears to construct the golem.");
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
Golem g = new Golem(true, scalar);
|
||||
|
||||
break;
|
||||
}
|
||||
if (g.SetControlMaster(from))
|
||||
{
|
||||
Delete();
|
||||
|
||||
g.MoveToWorld(from.Location, from.Map);
|
||||
from.PlaySound(0x241);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,9 +25,9 @@ namespace Server.Items
|
|||
Amount = amount;
|
||||
}
|
||||
|
||||
public Type Type{ get; }
|
||||
public Type Type { get; }
|
||||
|
||||
public int Amount{ get; }
|
||||
public int Amount { get; }
|
||||
|
||||
public static CrystalRechargeInfo Get(Type type)
|
||||
{
|
||||
|
|
@ -83,7 +83,7 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
public List<ReceiverCrystal> Receivers{ get; private set; }
|
||||
public List<ReceiverCrystal> Receivers { get; private set; }
|
||||
|
||||
public override bool HandlesOnSpeech => true;
|
||||
|
||||
|
|
@ -113,7 +113,7 @@ namespace Server.Items
|
|||
|
||||
public override void OnSpeech(SpeechEventArgs e)
|
||||
{
|
||||
if (!Active || Receivers.Count == 0 || RootParent != null && !(RootParent is Mobile))
|
||||
if (!Active || Receivers.Count == 0 || (RootParent != null && !(RootParent is Mobile)))
|
||||
return;
|
||||
|
||||
if (e.Type == MessageType.Emote)
|
||||
|
|
@ -172,7 +172,7 @@ namespace Server.Items
|
|||
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
private BroadcastCrystal m_Crystal;
|
||||
private readonly BroadcastCrystal m_Crystal;
|
||||
|
||||
public InternalTarget(BroadcastCrystal crystal) : base(2, false, TargetFlags.None) => m_Crystal = crystal;
|
||||
|
||||
|
|
@ -380,7 +380,7 @@ namespace Server.Items
|
|||
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
private ReceiverCrystal m_Crystal;
|
||||
private readonly ReceiverCrystal m_Crystal;
|
||||
|
||||
public InternalTarget(ReceiverCrystal crystal) : base(-1, false, TargetFlags.None) => m_Crystal = crystal;
|
||||
|
||||
|
|
|
|||
|
|
@ -69,8 +69,8 @@ namespace Server.Items
|
|||
|
||||
public static readonly TimeSpan InstancedCorpseTime = TimeSpan.FromMinutes(3.0);
|
||||
|
||||
private static TimeSpan m_DefaultDecayTime = TimeSpan.FromMinutes(7.0);
|
||||
private static TimeSpan m_BoneDecayTime = TimeSpan.FromMinutes(7.0);
|
||||
private static readonly TimeSpan m_DefaultDecayTime = TimeSpan.FromMinutes(7.0);
|
||||
private static readonly TimeSpan m_BoneDecayTime = TimeSpan.FromMinutes(7.0);
|
||||
|
||||
private string
|
||||
m_CorpseName; // Value of the CorpseNameAttribute attached to the owner when he died -or- null if the owner had no CorpseNameAttribute; use "the remains of ~name~"
|
||||
|
|
@ -131,7 +131,7 @@ namespace Server.Items
|
|||
EquipItems = equipItems;
|
||||
|
||||
Aggressors = new List<Mobile>(owner.Aggressors.Count + owner.Aggressed.Count);
|
||||
//bool addToAggressors = !( owner is BaseCreature );
|
||||
// bool addToAggressors = !( owner is BaseCreature );
|
||||
|
||||
bool isBaseCreature = owner is BaseCreature;
|
||||
|
||||
|
|
@ -198,13 +198,13 @@ namespace Server.Items
|
|||
public override bool IsDecoContainer => false;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public DateTime TimeOfDeath{ get; set; }
|
||||
public DateTime TimeOfDeath { get; set; }
|
||||
|
||||
public override bool DisplayWeight => false;
|
||||
|
||||
public HairInfo Hair{ get; }
|
||||
public HairInfo Hair { get; }
|
||||
|
||||
public FacialHairInfo FacialHair{ get; }
|
||||
public FacialHairInfo FacialHair { get; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool IsBones => GetFlag(CorpseFlag.IsBones);
|
||||
|
|
@ -248,23 +248,23 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public AccessLevel AccessLevel{ get; private set; }
|
||||
public AccessLevel AccessLevel { get; private set; }
|
||||
|
||||
public List<Mobile> Aggressors{ get; private set; }
|
||||
public List<Mobile> Aggressors { get; private set; }
|
||||
|
||||
public List<Mobile> Looters{ get; private set; }
|
||||
public List<Mobile> Looters { get; private set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Mobile Killer{ get; private set; }
|
||||
public Mobile Killer { get; private set; }
|
||||
|
||||
public List<Item> EquipItems{ get; private set; }
|
||||
public List<Item> EquipItems { get; private set; }
|
||||
|
||||
public List<Item> RestoreEquip{ get; set; }
|
||||
public List<Item> RestoreEquip { get; set; }
|
||||
|
||||
public Guild Guild{ get; }
|
||||
public Guild Guild { get; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Kills{ get; set; }
|
||||
public int Kills { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool Criminal
|
||||
|
|
@ -274,7 +274,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Mobile Owner{ get; private set; }
|
||||
public Mobile Owner { get; private set; }
|
||||
|
||||
public override bool DisplaysContent => false;
|
||||
|
||||
|
|
@ -330,7 +330,7 @@ namespace Server.Items
|
|||
|
||||
public override bool IsChildVisibleTo(Mobile m, Item child) =>
|
||||
!m.Player || m.AccessLevel > AccessLevel.Player || m_InstancedItems == null ||
|
||||
!m_InstancedItems.TryGetValue(child, out InstancedItemInfo info) || !InstancedCorpse && !info.Perpetual
|
||||
!m_InstancedItems.TryGetValue(child, out InstancedItemInfo info) || (!InstancedCorpse && !info.Perpetual)
|
||||
|| info.IsOwner(m);
|
||||
|
||||
private void AssignInstancedLoot()
|
||||
|
|
@ -347,7 +347,7 @@ namespace Server.Items
|
|||
{
|
||||
Item item = Items[i];
|
||||
|
||||
if (item.LootType != LootType.Cursed) //Don't have cursed items take up someone's item spot.. (?)
|
||||
if (item.LootType != LootType.Cursed) // Don't have cursed items take up someone's item spot.. (?)
|
||||
{
|
||||
if (item.Stackable)
|
||||
m_Stackables.Add(item);
|
||||
|
|
@ -358,7 +358,7 @@ namespace Server.Items
|
|||
|
||||
List<Mobile> attackers = new List<Mobile>(Aggressors);
|
||||
|
||||
for (int i = 1; i < attackers.Count - 1; i++) //randomize
|
||||
for (int i = 1; i < attackers.Count - 1; i++) // randomize
|
||||
{
|
||||
int rand = Utility.Random(i + 1);
|
||||
|
||||
|
|
@ -383,11 +383,11 @@ namespace Server.Items
|
|||
Item splitItem =
|
||||
Mobile.LiftItemDupe(item,
|
||||
item.Amount -
|
||||
amountPerAttacker); //LiftItemDupe automagically adds it as a child item to the corpse
|
||||
amountPerAttacker); // LiftItemDupe automagically adds it as a child item to the corpse
|
||||
|
||||
m_InstancedItems.Add(splitItem, new InstancedItemInfo(splitItem, attackers[j]));
|
||||
|
||||
//What happens to the remaining portion? TEMP FOR NOW UNTIL OSI VERIFICATION: Treat as Single Item.
|
||||
// What happens to the remaining portion? TEMP FOR NOW UNTIL OSI VERIFICATION: Treat as Single Item.
|
||||
}
|
||||
|
||||
if (remainder == 0)
|
||||
|
|
@ -397,7 +397,7 @@ namespace Server.Items
|
|||
}
|
||||
else
|
||||
{
|
||||
//What happens in this case? TEMP FOR NOW UNTIL OSI VERIFICATION: Treat as Single Item.
|
||||
// What happens in this case? TEMP FOR NOW UNTIL OSI VERIFICATION: Treat as Single Item.
|
||||
m_Unstackables.Add(item);
|
||||
}
|
||||
}
|
||||
|
|
@ -579,144 +579,144 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 12:
|
||||
{
|
||||
if (reader.ReadBool())
|
||||
RestoreEquip = reader.ReadStrongItemList();
|
||||
{
|
||||
if (reader.ReadBool())
|
||||
RestoreEquip = reader.ReadStrongItemList();
|
||||
|
||||
goto case 11;
|
||||
}
|
||||
goto case 11;
|
||||
}
|
||||
case 11:
|
||||
{
|
||||
// Version 11, we move all bools to a CorpseFlag
|
||||
m_Flags = (CorpseFlag)reader.ReadInt();
|
||||
|
||||
TimeOfDeath = reader.ReadDeltaTime();
|
||||
|
||||
int count = reader.ReadInt();
|
||||
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
Item item = reader.ReadItem();
|
||||
// Version 11, we move all bools to a CorpseFlag
|
||||
m_Flags = (CorpseFlag)reader.ReadInt();
|
||||
|
||||
TimeOfDeath = reader.ReadDeltaTime();
|
||||
|
||||
int count = reader.ReadInt();
|
||||
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
Item item = reader.ReadItem();
|
||||
|
||||
if (reader.ReadBool())
|
||||
SetRestoreInfo(item, reader.ReadPoint3D());
|
||||
else if (item != null)
|
||||
SetRestoreInfo(item, item.Location);
|
||||
}
|
||||
|
||||
if (reader.ReadBool())
|
||||
SetRestoreInfo(item, reader.ReadPoint3D());
|
||||
else if (item != null)
|
||||
SetRestoreInfo(item, item.Location);
|
||||
BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
|
||||
|
||||
Looters = reader.ReadStrongMobileList();
|
||||
Killer = reader.ReadMobile();
|
||||
|
||||
Aggressors = reader.ReadStrongMobileList();
|
||||
Owner = reader.ReadMobile();
|
||||
|
||||
m_CorpseName = reader.ReadString();
|
||||
|
||||
AccessLevel = (AccessLevel)reader.ReadInt();
|
||||
reader.ReadInt(); // guild reserve
|
||||
Kills = reader.ReadInt();
|
||||
|
||||
EquipItems = reader.ReadStrongItemList();
|
||||
break;
|
||||
}
|
||||
|
||||
if (reader.ReadBool())
|
||||
BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
|
||||
|
||||
Looters = reader.ReadStrongMobileList();
|
||||
Killer = reader.ReadMobile();
|
||||
|
||||
Aggressors = reader.ReadStrongMobileList();
|
||||
Owner = reader.ReadMobile();
|
||||
|
||||
m_CorpseName = reader.ReadString();
|
||||
|
||||
AccessLevel = (AccessLevel)reader.ReadInt();
|
||||
reader.ReadInt(); // guild reserve
|
||||
Kills = reader.ReadInt();
|
||||
|
||||
EquipItems = reader.ReadStrongItemList();
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
TimeOfDeath = reader.ReadDeltaTime();
|
||||
|
||||
goto case 9;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
int count = reader.ReadInt();
|
||||
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
Item item = reader.ReadItem();
|
||||
TimeOfDeath = reader.ReadDeltaTime();
|
||||
|
||||
if (reader.ReadBool())
|
||||
SetRestoreInfo(item, reader.ReadPoint3D());
|
||||
else if (item != null)
|
||||
SetRestoreInfo(item, item.Location);
|
||||
goto case 9;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
int count = reader.ReadInt();
|
||||
|
||||
goto case 8;
|
||||
}
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
Item item = reader.ReadItem();
|
||||
|
||||
if (reader.ReadBool())
|
||||
SetRestoreInfo(item, reader.ReadPoint3D());
|
||||
else if (item != null)
|
||||
SetRestoreInfo(item, item.Location);
|
||||
}
|
||||
|
||||
goto case 8;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
SetFlag(CorpseFlag.VisitedByTaxidermist, reader.ReadBool());
|
||||
{
|
||||
SetFlag(CorpseFlag.VisitedByTaxidermist, reader.ReadBool());
|
||||
|
||||
goto case 7;
|
||||
}
|
||||
goto case 7;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
if (reader.ReadBool())
|
||||
BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
|
||||
{
|
||||
if (reader.ReadBool())
|
||||
BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
|
||||
|
||||
goto case 6;
|
||||
}
|
||||
goto case 6;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
Looters = reader.ReadStrongMobileList();
|
||||
Killer = reader.ReadMobile();
|
||||
{
|
||||
Looters = reader.ReadStrongMobileList();
|
||||
Killer = reader.ReadMobile();
|
||||
|
||||
goto case 5;
|
||||
}
|
||||
goto case 5;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
SetFlag(CorpseFlag.Carved, reader.ReadBool());
|
||||
{
|
||||
SetFlag(CorpseFlag.Carved, reader.ReadBool());
|
||||
|
||||
goto case 4;
|
||||
}
|
||||
goto case 4;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
Aggressors = reader.ReadStrongMobileList();
|
||||
{
|
||||
Aggressors = reader.ReadStrongMobileList();
|
||||
|
||||
goto case 3;
|
||||
}
|
||||
goto case 3;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
Owner = reader.ReadMobile();
|
||||
{
|
||||
Owner = reader.ReadMobile();
|
||||
|
||||
goto case 2;
|
||||
}
|
||||
goto case 2;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
SetFlag(CorpseFlag.NoBones, reader.ReadBool());
|
||||
{
|
||||
SetFlag(CorpseFlag.NoBones, reader.ReadBool());
|
||||
|
||||
goto case 1;
|
||||
}
|
||||
goto case 1;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
m_CorpseName = reader.ReadString();
|
||||
{
|
||||
m_CorpseName = reader.ReadString();
|
||||
|
||||
goto case 0;
|
||||
}
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
if (version < 10)
|
||||
TimeOfDeath = DateTime.UtcNow;
|
||||
{
|
||||
if (version < 10)
|
||||
TimeOfDeath = DateTime.UtcNow;
|
||||
|
||||
if (version < 7)
|
||||
BeginDecay(m_DefaultDecayTime);
|
||||
if (version < 7)
|
||||
BeginDecay(m_DefaultDecayTime);
|
||||
|
||||
if (version < 6)
|
||||
Looters = new List<Mobile>();
|
||||
if (version < 6)
|
||||
Looters = new List<Mobile>();
|
||||
|
||||
if (version < 4)
|
||||
Aggressors = new List<Mobile>();
|
||||
if (version < 4)
|
||||
Aggressors = new List<Mobile>();
|
||||
|
||||
AccessLevel = (AccessLevel)reader.ReadInt();
|
||||
reader.ReadInt(); // guild reserve
|
||||
Kills = reader.ReadInt();
|
||||
SetFlag(CorpseFlag.Criminal, reader.ReadBool());
|
||||
AccessLevel = (AccessLevel)reader.ReadInt();
|
||||
reader.ReadInt(); // guild reserve
|
||||
Kills = reader.ReadInt();
|
||||
SetFlag(CorpseFlag.Criminal, reader.ReadBool());
|
||||
|
||||
EquipItems = reader.ReadStrongItemList();
|
||||
EquipItems = reader.ReadStrongItemList();
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -865,8 +865,6 @@ namespace Server.Items
|
|||
return;
|
||||
}
|
||||
|
||||
#region Self Looting
|
||||
|
||||
if (checkSelfLoot && from == Owner && !GetFlag(CorpseFlag.SelfLooted) && Items.Count != 0)
|
||||
{
|
||||
if (from.FindItemOnLayer(Layer.OuterTorso) is DeathRobe robe)
|
||||
|
|
@ -947,13 +945,9 @@ namespace Server.Items
|
|||
SetFlag(CorpseFlag.SelfLooted, true);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
if (!CheckLoot(from, null))
|
||||
return;
|
||||
|
||||
#region Quests
|
||||
|
||||
if (!(from is PlayerMobile player)) return;
|
||||
|
||||
QuestSystem qs = player.Quest;
|
||||
|
|
@ -1007,8 +1001,6 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
base.OnDoubleClick(from);
|
||||
}
|
||||
|
||||
|
|
@ -1062,8 +1054,8 @@ namespace Server.Items
|
|||
|
||||
private class InstancedItemInfo
|
||||
{
|
||||
private Item m_Item;
|
||||
private Mobile m_Mobile;
|
||||
private readonly Item m_Item;
|
||||
private readonly Mobile m_Mobile;
|
||||
|
||||
public InstancedItemInfo(Item i, Mobile m)
|
||||
{
|
||||
|
|
@ -1071,15 +1063,15 @@ namespace Server.Items
|
|||
m_Mobile = m;
|
||||
}
|
||||
|
||||
public bool Perpetual{ get; set; }
|
||||
public bool Perpetual { get; set; }
|
||||
|
||||
public bool IsOwner(Mobile m)
|
||||
{
|
||||
if (m_Item.LootType == LootType.Cursed) //Cursed Items are part of everyone's instanced corpse... (?)
|
||||
if (m_Item.LootType == LootType.Cursed) // Cursed Items are part of everyone's instanced corpse... (?)
|
||||
return true;
|
||||
|
||||
if (m == null)
|
||||
return false; //sanity
|
||||
return false; // sanity
|
||||
|
||||
if (m_Mobile == m)
|
||||
return true;
|
||||
|
|
@ -1092,7 +1084,7 @@ namespace Server.Items
|
|||
|
||||
private class InternalTimer : Timer
|
||||
{
|
||||
private Corpse m_Corpse;
|
||||
private readonly Corpse m_Corpse;
|
||||
|
||||
public InternalTimer(Corpse c, TimeSpan delay) : base(delay)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ namespace Server
|
|||
{
|
||||
public CorpseNameAttribute(string name) => Name = name;
|
||||
|
||||
public string Name{ get; }
|
||||
public string Name { get; }
|
||||
}
|
||||
}
|
||||
|
|
@ -4,7 +4,7 @@ namespace Server.Items
|
|||
{
|
||||
public class DecayedCorpse : Container
|
||||
{
|
||||
private static TimeSpan m_DefaultDecayTime = TimeSpan.FromMinutes(7.0);
|
||||
private static readonly TimeSpan m_DefaultDecayTime = TimeSpan.FromMinutes(7.0);
|
||||
private DateTime m_DecayTime;
|
||||
private Timer m_DecayTimer;
|
||||
|
||||
|
|
@ -74,24 +74,24 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
BeginDecay(m_DefaultDecayTime);
|
||||
{
|
||||
BeginDecay(m_DefaultDecayTime);
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
if (reader.ReadBool())
|
||||
BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
|
||||
{
|
||||
if (reader.ReadBool())
|
||||
BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class InternalTimer : Timer
|
||||
{
|
||||
private DecayedCorpse m_Corpse;
|
||||
private readonly DecayedCorpse m_Corpse;
|
||||
|
||||
public InternalTimer(DecayedCorpse c, TimeSpan delay) : base(delay)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ namespace Server.Network
|
|||
|
||||
EnsureCapacity(8 + count * 5);
|
||||
|
||||
m_Stream.Write(beheld.Serial);
|
||||
Stream.Write(beheld.Serial);
|
||||
|
||||
for (int i = 0; i < list.Count; ++i)
|
||||
{
|
||||
|
|
@ -26,24 +26,24 @@ namespace Server.Network
|
|||
|
||||
if (!item.Deleted && beholder.CanSee(item) && item.Parent == beheld)
|
||||
{
|
||||
m_Stream.Write((byte)(item.Layer + 1));
|
||||
m_Stream.Write(item.Serial);
|
||||
Stream.Write((byte)(item.Layer + 1));
|
||||
Stream.Write(item.Serial);
|
||||
}
|
||||
}
|
||||
|
||||
if (beheld.Hair?.ItemID > 0)
|
||||
{
|
||||
m_Stream.Write((byte)(Layer.Hair + 1));
|
||||
m_Stream.Write(HairInfo.FakeSerial(beheld.Owner) - 2);
|
||||
Stream.Write((byte)(Layer.Hair + 1));
|
||||
Stream.Write(HairInfo.FakeSerial(beheld.Owner) - 2);
|
||||
}
|
||||
|
||||
if (beheld.FacialHair?.ItemID > 0)
|
||||
{
|
||||
m_Stream.Write((byte)(Layer.FacialHair + 1));
|
||||
m_Stream.Write(FacialHairInfo.FakeSerial(beheld.Owner) - 2);
|
||||
Stream.Write((byte)(Layer.FacialHair + 1));
|
||||
Stream.Write(FacialHairInfo.FakeSerial(beheld.Owner) - 2);
|
||||
}
|
||||
|
||||
m_Stream.Write((byte)Layer.Invalid);
|
||||
Stream.Write((byte)Layer.Invalid);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -62,11 +62,11 @@ namespace Server.Network
|
|||
|
||||
EnsureCapacity(5 + count * 19);
|
||||
|
||||
long pos = m_Stream.Position;
|
||||
long pos = Stream.Position;
|
||||
|
||||
int written = 0;
|
||||
|
||||
m_Stream.Write((ushort)0);
|
||||
Stream.Write((ushort)0);
|
||||
|
||||
for (int i = 0; i < items.Count; ++i)
|
||||
{
|
||||
|
|
@ -74,14 +74,14 @@ namespace Server.Network
|
|||
|
||||
if (!child.Deleted && child.Parent == beheld && beholder.CanSee(child))
|
||||
{
|
||||
m_Stream.Write(child.Serial);
|
||||
m_Stream.Write((ushort)child.ItemID);
|
||||
m_Stream.Write((byte)0); // signed, itemID offset
|
||||
m_Stream.Write((ushort)child.Amount);
|
||||
m_Stream.Write((short)child.X);
|
||||
m_Stream.Write((short)child.Y);
|
||||
m_Stream.Write(beheld.Serial);
|
||||
m_Stream.Write((ushort)child.Hue);
|
||||
Stream.Write(child.Serial);
|
||||
Stream.Write((ushort)child.ItemID);
|
||||
Stream.Write((byte)0); // signed, itemID offset
|
||||
Stream.Write((ushort)child.Amount);
|
||||
Stream.Write((short)child.X);
|
||||
Stream.Write((short)child.Y);
|
||||
Stream.Write(beheld.Serial);
|
||||
Stream.Write((ushort)child.Hue);
|
||||
|
||||
++written;
|
||||
}
|
||||
|
|
@ -89,34 +89,34 @@ namespace Server.Network
|
|||
|
||||
if (beheld.Hair?.ItemID > 0)
|
||||
{
|
||||
m_Stream.Write(HairInfo.FakeSerial(beheld.Owner) - 2);
|
||||
m_Stream.Write((ushort)beheld.Hair.ItemID);
|
||||
m_Stream.Write((byte)0); // signed, itemID offset
|
||||
m_Stream.Write((ushort)1);
|
||||
m_Stream.Write((short)0);
|
||||
m_Stream.Write((short)0);
|
||||
m_Stream.Write(beheld.Serial);
|
||||
m_Stream.Write((ushort)beheld.Hair.Hue);
|
||||
Stream.Write(HairInfo.FakeSerial(beheld.Owner) - 2);
|
||||
Stream.Write((ushort)beheld.Hair.ItemID);
|
||||
Stream.Write((byte)0); // signed, itemID offset
|
||||
Stream.Write((ushort)1);
|
||||
Stream.Write((short)0);
|
||||
Stream.Write((short)0);
|
||||
Stream.Write(beheld.Serial);
|
||||
Stream.Write((ushort)beheld.Hair.Hue);
|
||||
|
||||
++written;
|
||||
}
|
||||
|
||||
if (beheld.FacialHair != null && beheld.FacialHair.ItemID > 0)
|
||||
{
|
||||
m_Stream.Write(FacialHairInfo.FakeSerial(beheld.Owner) - 2);
|
||||
m_Stream.Write((ushort)beheld.FacialHair.ItemID);
|
||||
m_Stream.Write((byte)0); // signed, itemID offset
|
||||
m_Stream.Write((ushort)1);
|
||||
m_Stream.Write((short)0);
|
||||
m_Stream.Write((short)0);
|
||||
m_Stream.Write(beheld.Serial);
|
||||
m_Stream.Write((ushort)beheld.FacialHair.Hue);
|
||||
Stream.Write(FacialHairInfo.FakeSerial(beheld.Owner) - 2);
|
||||
Stream.Write((ushort)beheld.FacialHair.ItemID);
|
||||
Stream.Write((byte)0); // signed, itemID offset
|
||||
Stream.Write((ushort)1);
|
||||
Stream.Write((short)0);
|
||||
Stream.Write((short)0);
|
||||
Stream.Write(beheld.Serial);
|
||||
Stream.Write((ushort)beheld.FacialHair.Hue);
|
||||
|
||||
++written;
|
||||
}
|
||||
|
||||
m_Stream.Seek(pos, SeekOrigin.Begin);
|
||||
m_Stream.Write((ushort)written);
|
||||
Stream.Seek(pos, SeekOrigin.Begin);
|
||||
Stream.Write((ushort)written);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -135,11 +135,11 @@ namespace Server.Network
|
|||
|
||||
EnsureCapacity(5 + count * 20);
|
||||
|
||||
long pos = m_Stream.Position;
|
||||
long pos = Stream.Position;
|
||||
|
||||
int written = 0;
|
||||
|
||||
m_Stream.Write((ushort)0);
|
||||
Stream.Write((ushort)0);
|
||||
|
||||
for (int i = 0; i < items.Count; ++i)
|
||||
{
|
||||
|
|
@ -147,15 +147,15 @@ namespace Server.Network
|
|||
|
||||
if (!child.Deleted && child.Parent == beheld && beholder.CanSee(child))
|
||||
{
|
||||
m_Stream.Write(child.Serial);
|
||||
m_Stream.Write((ushort)child.ItemID);
|
||||
m_Stream.Write((byte)0); // signed, itemID offset
|
||||
m_Stream.Write((ushort)child.Amount);
|
||||
m_Stream.Write((short)child.X);
|
||||
m_Stream.Write((short)child.Y);
|
||||
m_Stream.Write((byte)0); // Grid Location?
|
||||
m_Stream.Write(beheld.Serial);
|
||||
m_Stream.Write((ushort)child.Hue);
|
||||
Stream.Write(child.Serial);
|
||||
Stream.Write((ushort)child.ItemID);
|
||||
Stream.Write((byte)0); // signed, itemID offset
|
||||
Stream.Write((ushort)child.Amount);
|
||||
Stream.Write((short)child.X);
|
||||
Stream.Write((short)child.Y);
|
||||
Stream.Write((byte)0); // Grid Location?
|
||||
Stream.Write(beheld.Serial);
|
||||
Stream.Write((ushort)child.Hue);
|
||||
|
||||
++written;
|
||||
}
|
||||
|
|
@ -163,36 +163,36 @@ namespace Server.Network
|
|||
|
||||
if (beheld.Hair?.ItemID > 0)
|
||||
{
|
||||
m_Stream.Write(HairInfo.FakeSerial(beheld.Owner) - 2);
|
||||
m_Stream.Write((ushort)beheld.Hair.ItemID);
|
||||
m_Stream.Write((byte)0); // signed, itemID offset
|
||||
m_Stream.Write((ushort)1);
|
||||
m_Stream.Write((short)0);
|
||||
m_Stream.Write((short)0);
|
||||
m_Stream.Write((byte)0); // Grid Location?
|
||||
m_Stream.Write(beheld.Serial);
|
||||
m_Stream.Write((ushort)beheld.Hair.Hue);
|
||||
Stream.Write(HairInfo.FakeSerial(beheld.Owner) - 2);
|
||||
Stream.Write((ushort)beheld.Hair.ItemID);
|
||||
Stream.Write((byte)0); // signed, itemID offset
|
||||
Stream.Write((ushort)1);
|
||||
Stream.Write((short)0);
|
||||
Stream.Write((short)0);
|
||||
Stream.Write((byte)0); // Grid Location?
|
||||
Stream.Write(beheld.Serial);
|
||||
Stream.Write((ushort)beheld.Hair.Hue);
|
||||
|
||||
++written;
|
||||
}
|
||||
|
||||
if (beheld.FacialHair?.ItemID > 0)
|
||||
{
|
||||
m_Stream.Write(FacialHairInfo.FakeSerial(beheld.Owner) - 2);
|
||||
m_Stream.Write((ushort)beheld.FacialHair.ItemID);
|
||||
m_Stream.Write((byte)0); // signed, itemID offset
|
||||
m_Stream.Write((ushort)1);
|
||||
m_Stream.Write((short)0);
|
||||
m_Stream.Write((short)0);
|
||||
m_Stream.Write((byte)0); // Grid Location?
|
||||
m_Stream.Write(beheld.Serial);
|
||||
m_Stream.Write((ushort)beheld.FacialHair.Hue);
|
||||
Stream.Write(FacialHairInfo.FakeSerial(beheld.Owner) - 2);
|
||||
Stream.Write((ushort)beheld.FacialHair.ItemID);
|
||||
Stream.Write((byte)0); // signed, itemID offset
|
||||
Stream.Write((ushort)1);
|
||||
Stream.Write((short)0);
|
||||
Stream.Write((short)0);
|
||||
Stream.Write((byte)0); // Grid Location?
|
||||
Stream.Write(beheld.Serial);
|
||||
Stream.Write((ushort)beheld.FacialHair.Hue);
|
||||
|
||||
++written;
|
||||
}
|
||||
|
||||
m_Stream.Seek(pos, SeekOrigin.Begin);
|
||||
m_Stream.Write((ushort)written);
|
||||
Stream.Seek(pos, SeekOrigin.Begin);
|
||||
Stream.Write((ushort)written);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,94 +23,38 @@ namespace Server.Items
|
|||
{
|
||||
}
|
||||
|
||||
public static Type[] Creatures{ get; } =
|
||||
public static Type[] Creatures { get; } =
|
||||
{
|
||||
#region Animals
|
||||
|
||||
typeof(FireSteed), //Set the tents up people!
|
||||
|
||||
#endregion
|
||||
|
||||
#region Undead
|
||||
typeof(FireSteed), // Set the tents up people!
|
||||
|
||||
typeof(Skeleton), typeof(SkeletalKnight), typeof(SkeletalMage), typeof(Mummy),
|
||||
typeof(BoneKnight), typeof(Lich), typeof(LichLord), typeof(BoneMagi),
|
||||
typeof(Wraith), typeof(Shade), typeof(Spectre), typeof(Zombie),
|
||||
typeof(RottingCorpse), typeof(Ghoul),
|
||||
|
||||
#endregion
|
||||
|
||||
#region Demons
|
||||
|
||||
typeof(Balron), typeof(Daemon), typeof(Imp), typeof(GreaterMongbat),
|
||||
typeof(RottingCorpse), typeof(Ghoul), typeof(Balron), typeof(Daemon), typeof(Imp), typeof(GreaterMongbat),
|
||||
typeof(Mongbat), typeof(IceFiend), typeof(Gargoyle), typeof(StoneGargoyle),
|
||||
typeof(FireGargoyle), typeof(HordeMinion),
|
||||
|
||||
#endregion
|
||||
|
||||
#region Gazers
|
||||
|
||||
typeof(Gazer), typeof(ElderGazer), typeof(GazerLarva),
|
||||
|
||||
#endregion
|
||||
|
||||
#region Uncategorized
|
||||
|
||||
typeof(Harpy), typeof(StoneHarpy), typeof(HeadlessOne), typeof(HellHound),
|
||||
typeof(FireGargoyle), typeof(HordeMinion), typeof(Gazer), typeof(ElderGazer), typeof(GazerLarva), typeof(Harpy), typeof(StoneHarpy), typeof(HeadlessOne), typeof(HellHound),
|
||||
typeof(HellCat), typeof(Phoenix), typeof(LavaLizard), typeof(SandVortex),
|
||||
typeof(ShadowWisp), typeof(SwampTentacle), typeof(PredatorHellCat), typeof(Wisp),
|
||||
|
||||
#endregion
|
||||
|
||||
#region Arachnid
|
||||
|
||||
typeof(GiantSpider), typeof(DreadSpider), typeof(FrostSpider), typeof(Scorpion),
|
||||
|
||||
#endregion
|
||||
|
||||
#region Repond
|
||||
|
||||
typeof(ArcticOgreLord), typeof(Cyclops), typeof(Ettin), typeof(EvilMage),
|
||||
typeof(ShadowWisp), typeof(SwampTentacle), typeof(PredatorHellCat), typeof(Wisp), typeof(GiantSpider), typeof(DreadSpider), typeof(FrostSpider), typeof(Scorpion), typeof(ArcticOgreLord), typeof(Cyclops), typeof(Ettin), typeof(EvilMage),
|
||||
typeof(FrostTroll), typeof(Ogre), typeof(OgreLord), typeof(Orc),
|
||||
typeof(OrcishLord), typeof(OrcishMage), typeof(OrcBrute), typeof(Ratman),
|
||||
typeof(RatmanMage), typeof(OrcCaptain), typeof(Troll), typeof(Titan),
|
||||
typeof(EvilMageLord), typeof(OrcBomber), typeof(RatmanArcher),
|
||||
|
||||
#endregion
|
||||
|
||||
#region Reptilian
|
||||
|
||||
typeof(Dragon), typeof(Drake), typeof(Snake), typeof(GreaterDragon),
|
||||
typeof(EvilMageLord), typeof(OrcBomber), typeof(RatmanArcher), typeof(Dragon), typeof(Drake), typeof(Snake), typeof(GreaterDragon),
|
||||
typeof(IceSerpent), typeof(GiantSerpent), typeof(IceSnake), typeof(LavaSerpent),
|
||||
typeof(Lizardman), typeof(Wyvern), typeof(WhiteWyrm),
|
||||
typeof(ShadowWyrm), typeof(SilverSerpent), typeof(LavaSnake),
|
||||
|
||||
#endregion
|
||||
|
||||
#region Elementals
|
||||
|
||||
typeof(EarthElemental), typeof(PoisonElemental), typeof(FireElemental), typeof(SnowElemental),
|
||||
typeof(ShadowWyrm), typeof(SilverSerpent), typeof(LavaSnake), typeof(EarthElemental), typeof(PoisonElemental), typeof(FireElemental), typeof(SnowElemental),
|
||||
typeof(IceElemental), typeof(AcidElemental), typeof(WaterElemental), typeof(Efreet),
|
||||
typeof(AirElemental), typeof(Golem),
|
||||
|
||||
#endregion
|
||||
|
||||
#region Random Critters
|
||||
|
||||
typeof(SewerRat), typeof(GiantRat), typeof(DireWolf), typeof(TimberWolf),
|
||||
typeof(AirElemental), typeof(Golem), typeof(SewerRat), typeof(GiantRat), typeof(DireWolf), typeof(TimberWolf),
|
||||
typeof(Cougar), typeof(Alligator)
|
||||
|
||||
#endregion
|
||||
};
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public DateTime NextSpawn{ get; private set; }
|
||||
public DateTime NextSpawn { get; private set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int SpawnRange{ get; set; }
|
||||
public int SpawnRange { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public TimeSpan NextSpawnDelay{ get; set; }
|
||||
public TimeSpan NextSpawnDelay { get; set; }
|
||||
|
||||
public override int LabelNumber => 1023633; // Brazier
|
||||
|
||||
|
|
@ -202,7 +146,7 @@ namespace Server.Items
|
|||
|
||||
DoEffect(spawnLoc, map);
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(1), delegate
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(1), () =>
|
||||
{
|
||||
bc.Home = Location;
|
||||
bc.RangeHome = SpawnRange;
|
||||
|
|
|
|||
|
|
@ -38,23 +38,22 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public ECEffectType EffectType{ get; set; }
|
||||
public ECEffectType EffectType { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public EffectTriggerType TriggerType{ get; set; }
|
||||
public EffectTriggerType TriggerType { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public EffectLayer EffectLayer{ get; set; }
|
||||
public EffectLayer EffectLayer { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public TimeSpan EffectDelay{ get; set; }
|
||||
public TimeSpan EffectDelay { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public TimeSpan TriggerDelay{ get; set; }
|
||||
public TimeSpan TriggerDelay { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public TimeSpan SoundDelay{ get; set; }
|
||||
|
||||
public TimeSpan SoundDelay { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Item SourceItem
|
||||
|
|
@ -80,7 +79,6 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Item TargetItem
|
||||
{
|
||||
|
|
@ -105,53 +103,50 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public EffectController Sequence { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public EffectController Sequence{ get; set; }
|
||||
|
||||
private bool FixedDirection { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
private bool FixedDirection{ get; set; }
|
||||
private bool Explodes { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
private bool Explodes{ get; set; }
|
||||
private bool PlaySoundAtTrigger { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
private bool PlaySoundAtTrigger{ get; set; }
|
||||
|
||||
public int EffectItemID { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int EffectItemID{ get; set; }
|
||||
public int EffectHue { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int EffectHue{ get; set; }
|
||||
public int RenderMode { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int RenderMode{ get; set; }
|
||||
public int Speed { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Speed{ get; set; }
|
||||
public int Duration { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Duration{ get; set; }
|
||||
public int ParticleEffect { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int ParticleEffect{ get; set; }
|
||||
public int ExplodeParticleEffect { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int ExplodeParticleEffect{ get; set; }
|
||||
public int ExplodeSound { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int ExplodeSound{ get; set; }
|
||||
public int Unknown { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Unknown{ get; set; }
|
||||
public int SoundID { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int SoundID{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int TriggerRange{ get; set; }
|
||||
public int TriggerRange { get; set; }
|
||||
|
||||
public override string DefaultName => "Effect Controller";
|
||||
|
||||
|
|
@ -225,37 +220,37 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
EffectDelay = reader.ReadTimeSpan();
|
||||
TriggerDelay = reader.ReadTimeSpan();
|
||||
SoundDelay = reader.ReadTimeSpan();
|
||||
{
|
||||
EffectDelay = reader.ReadTimeSpan();
|
||||
TriggerDelay = reader.ReadTimeSpan();
|
||||
SoundDelay = reader.ReadTimeSpan();
|
||||
|
||||
m_Source = ReadEntity(reader);
|
||||
m_Target = ReadEntity(reader);
|
||||
Sequence = reader.ReadItem() as EffectController;
|
||||
m_Source = ReadEntity(reader);
|
||||
m_Target = ReadEntity(reader);
|
||||
Sequence = reader.ReadItem() as EffectController;
|
||||
|
||||
FixedDirection = reader.ReadBool();
|
||||
Explodes = reader.ReadBool();
|
||||
PlaySoundAtTrigger = reader.ReadBool();
|
||||
FixedDirection = reader.ReadBool();
|
||||
Explodes = reader.ReadBool();
|
||||
PlaySoundAtTrigger = reader.ReadBool();
|
||||
|
||||
EffectType = (ECEffectType)reader.ReadEncodedInt();
|
||||
EffectLayer = (EffectLayer)reader.ReadEncodedInt();
|
||||
TriggerType = (EffectTriggerType)reader.ReadEncodedInt();
|
||||
EffectType = (ECEffectType)reader.ReadEncodedInt();
|
||||
EffectLayer = (EffectLayer)reader.ReadEncodedInt();
|
||||
TriggerType = (EffectTriggerType)reader.ReadEncodedInt();
|
||||
|
||||
EffectItemID = reader.ReadEncodedInt();
|
||||
EffectHue = reader.ReadEncodedInt();
|
||||
RenderMode = reader.ReadEncodedInt();
|
||||
Speed = reader.ReadEncodedInt();
|
||||
Duration = reader.ReadEncodedInt();
|
||||
ParticleEffect = reader.ReadEncodedInt();
|
||||
ExplodeParticleEffect = reader.ReadEncodedInt();
|
||||
ExplodeSound = reader.ReadEncodedInt();
|
||||
Unknown = reader.ReadEncodedInt();
|
||||
SoundID = reader.ReadEncodedInt();
|
||||
TriggerRange = reader.ReadEncodedInt();
|
||||
EffectItemID = reader.ReadEncodedInt();
|
||||
EffectHue = reader.ReadEncodedInt();
|
||||
RenderMode = reader.ReadEncodedInt();
|
||||
Speed = reader.ReadEncodedInt();
|
||||
Duration = reader.ReadEncodedInt();
|
||||
ParticleEffect = reader.ReadEncodedInt();
|
||||
ExplodeParticleEffect = reader.ReadEncodedInt();
|
||||
ExplodeSound = reader.ReadEncodedInt();
|
||||
Unknown = reader.ReadEncodedInt();
|
||||
SoundID = reader.ReadEncodedInt();
|
||||
TriggerRange = reader.ReadEncodedInt();
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -292,34 +287,34 @@ namespace Server.Items
|
|||
switch (EffectType)
|
||||
{
|
||||
case ECEffectType.Lightning:
|
||||
{
|
||||
Effects.SendBoltEffect(from, false, EffectHue);
|
||||
break;
|
||||
}
|
||||
{
|
||||
Effects.SendBoltEffect(from, false, EffectHue);
|
||||
break;
|
||||
}
|
||||
case ECEffectType.Location:
|
||||
{
|
||||
Effects.SendLocationParticles(EffectItem.Create(from.Location, from.Map, EffectItem.DefaultDuration),
|
||||
EffectItemID, Speed, Duration, EffectHue, RenderMode, ParticleEffect, Unknown);
|
||||
break;
|
||||
}
|
||||
{
|
||||
Effects.SendLocationParticles(EffectItem.Create(from.Location, from.Map, EffectItem.DefaultDuration),
|
||||
EffectItemID, Speed, Duration, EffectHue, RenderMode, ParticleEffect, Unknown);
|
||||
break;
|
||||
}
|
||||
case ECEffectType.Moving:
|
||||
{
|
||||
if (from == this)
|
||||
from = EffectItem.Create(from.Location, from.Map, EffectItem.DefaultDuration);
|
||||
{
|
||||
if (from == this)
|
||||
from = EffectItem.Create(from.Location, from.Map, EffectItem.DefaultDuration);
|
||||
|
||||
if (to == this)
|
||||
to = EffectItem.Create(to.Location, to.Map, EffectItem.DefaultDuration);
|
||||
if (to == this)
|
||||
to = EffectItem.Create(to.Location, to.Map, EffectItem.DefaultDuration);
|
||||
|
||||
Effects.SendMovingParticles(from, to, EffectItemID, Speed, Duration, FixedDirection, Explodes, EffectHue,
|
||||
RenderMode, ParticleEffect, ExplodeParticleEffect, ExplodeSound, EffectLayer, Unknown);
|
||||
break;
|
||||
}
|
||||
Effects.SendMovingParticles(from, to, EffectItemID, Speed, Duration, FixedDirection, Explodes, EffectHue,
|
||||
RenderMode, ParticleEffect, ExplodeParticleEffect, ExplodeSound, EffectLayer, Unknown);
|
||||
break;
|
||||
}
|
||||
case ECEffectType.Target:
|
||||
{
|
||||
Effects.SendTargetParticles(from, EffectItemID, Speed, Duration, EffectHue, RenderMode, ParticleEffect,
|
||||
EffectLayer, Unknown);
|
||||
break;
|
||||
}
|
||||
{
|
||||
Effects.SendTargetParticles(from, EffectItemID, Speed, Duration, EffectHue, RenderMode, ParticleEffect,
|
||||
EffectLayer, Unknown);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ namespace Server.Items
|
|||
{
|
||||
public class EffectItem : Item
|
||||
{
|
||||
private static List<EffectItem> m_Free = new List<EffectItem>(); // List of available EffectItems
|
||||
private static readonly List<EffectItem> m_Free = new List<EffectItem>(); // List of available EffectItems
|
||||
|
||||
public static readonly TimeSpan DefaultDuration = TimeSpan.FromSeconds(5.0);
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ namespace Server.Items
|
|||
|
||||
private class FreeTimer : Timer
|
||||
{
|
||||
private EffectItem m_Item;
|
||||
private readonly EffectItem m_Item;
|
||||
|
||||
public FreeTimer(EffectItem item, TimeSpan delay) : base(delay)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ namespace Server.Items
|
|||
[Constructible]
|
||||
public Firebomb(int itemID = 0x99B) : base(itemID)
|
||||
{
|
||||
//Name = "a firebomb";
|
||||
// Name = "a firebomb";
|
||||
Weight = 2.0;
|
||||
Hue = 1260;
|
||||
}
|
||||
|
|
@ -90,64 +90,64 @@ namespace Server.Items
|
|||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
{
|
||||
++m_Ticks;
|
||||
{
|
||||
++m_Ticks;
|
||||
|
||||
if (HeldBy != null)
|
||||
HeldBy.PublicOverheadMessage(MessageType.Regular, 957, false, m_Ticks.ToString());
|
||||
else if (RootParent == null)
|
||||
PublicOverheadMessage(MessageType.Regular, 957, false, m_Ticks.ToString());
|
||||
else if (RootParent is Mobile mobile)
|
||||
mobile.PublicOverheadMessage(MessageType.Regular, 957, false, m_Ticks.ToString());
|
||||
if (HeldBy != null)
|
||||
HeldBy.PublicOverheadMessage(MessageType.Regular, 957, false, m_Ticks.ToString());
|
||||
else if (RootParent == null)
|
||||
PublicOverheadMessage(MessageType.Regular, 957, false, m_Ticks.ToString());
|
||||
else if (RootParent is Mobile mobile)
|
||||
mobile.PublicOverheadMessage(MessageType.Regular, 957, false, m_Ticks.ToString());
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
HeldBy?.DropHolding();
|
||||
|
||||
if (m_Users != null)
|
||||
{
|
||||
foreach (Mobile m in m_Users)
|
||||
if (m.Target is ThrowTarget targ && targ.Bomb == this)
|
||||
Target.Cancel(m);
|
||||
HeldBy?.DropHolding();
|
||||
|
||||
m_Users.Clear();
|
||||
m_Users = null;
|
||||
}
|
||||
|
||||
if (RootParent is Mobile parent)
|
||||
{
|
||||
parent.SendLocalizedMessage(1060583); // The firebomb explodes in your hand!
|
||||
AOS.Damage(parent, Utility.Random(3) + 4, 0, 100, 0, 0, 0);
|
||||
}
|
||||
else if (RootParent == null)
|
||||
{
|
||||
IPooledEnumerable<Mobile> eable = Map.GetMobilesInRange(Location, 1);
|
||||
List<Mobile> toDamage = eable.ToList();
|
||||
|
||||
eable.Free();
|
||||
|
||||
for (int i = 0; i < toDamage.Count; ++i)
|
||||
if (m_Users != null)
|
||||
{
|
||||
Mobile victim = toDamage[i];
|
||||
foreach (Mobile m in m_Users)
|
||||
if (m.Target is ThrowTarget targ && targ.Bomb == this)
|
||||
Target.Cancel(m);
|
||||
|
||||
if (m_LitBy == null || SpellHelper.ValidIndirectTarget(m_LitBy, victim) &&
|
||||
m_LitBy.CanBeHarmful(victim, false))
|
||||
{
|
||||
m_LitBy?.DoHarmful(victim);
|
||||
|
||||
AOS.Damage(victim, m_LitBy, Utility.Random(3) + 4, 0, 100, 0, 0, 0);
|
||||
}
|
||||
m_Users.Clear();
|
||||
m_Users = null;
|
||||
}
|
||||
|
||||
new FirebombField(m_LitBy, toDamage).MoveToWorld(Location, Map);
|
||||
}
|
||||
if (RootParent is Mobile parent)
|
||||
{
|
||||
parent.SendLocalizedMessage(1060583); // The firebomb explodes in your hand!
|
||||
AOS.Damage(parent, Utility.Random(3) + 4, 0, 100, 0, 0, 0);
|
||||
}
|
||||
else if (RootParent == null)
|
||||
{
|
||||
IPooledEnumerable<Mobile> eable = Map.GetMobilesInRange(Location, 1);
|
||||
List<Mobile> toDamage = eable.ToList();
|
||||
|
||||
m_Timer.Stop();
|
||||
Delete();
|
||||
break;
|
||||
}
|
||||
eable.Free();
|
||||
|
||||
for (int i = 0; i < toDamage.Count; ++i)
|
||||
{
|
||||
Mobile victim = toDamage[i];
|
||||
|
||||
if (m_LitBy == null || (SpellHelper.ValidIndirectTarget(m_LitBy, victim) &&
|
||||
m_LitBy.CanBeHarmful(victim, false)))
|
||||
{
|
||||
m_LitBy?.DoHarmful(victim);
|
||||
|
||||
AOS.Damage(victim, m_LitBy, Utility.Random(3) + 4, 0, 100, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
new FirebombField(m_LitBy, toDamage).MoveToWorld(Location, Map);
|
||||
}
|
||||
|
||||
m_Timer.Stop();
|
||||
Delete();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -185,7 +185,7 @@ namespace Server.Items
|
|||
: base(12, true, TargetFlags.None) =>
|
||||
Bomb = bomb;
|
||||
|
||||
public Firebomb Bomb{ get; }
|
||||
public Firebomb Bomb { get; }
|
||||
|
||||
protected override void OnTarget(Mobile from, object targeted)
|
||||
{
|
||||
|
|
@ -196,10 +196,10 @@ namespace Server.Items
|
|||
|
||||
public class FirebombField : Item
|
||||
{
|
||||
private List<Mobile> m_Burning;
|
||||
private DateTime m_Expire;
|
||||
private Mobile m_LitBy;
|
||||
private Timer m_Timer;
|
||||
private readonly List<Mobile> m_Burning;
|
||||
private readonly DateTime m_Expire;
|
||||
private readonly Mobile m_LitBy;
|
||||
private readonly Timer m_Timer;
|
||||
|
||||
public FirebombField(Mobile litBy, List<Mobile> toDamage) : base(0x376A)
|
||||
{
|
||||
|
|
@ -225,8 +225,8 @@ namespace Server.Items
|
|||
|
||||
public override bool OnMoveOver(Mobile m)
|
||||
{
|
||||
if (ItemID == 0x398C && m_LitBy == null ||
|
||||
SpellHelper.ValidIndirectTarget(m_LitBy, m) && m_LitBy.CanBeHarmful(m, false))
|
||||
if ((ItemID == 0x398C && m_LitBy == null) ||
|
||||
(SpellHelper.ValidIndirectTarget(m_LitBy, m) && m_LitBy.CanBeHarmful(m, false)))
|
||||
{
|
||||
m_LitBy?.DoHarmful(m);
|
||||
|
||||
|
|
@ -259,8 +259,8 @@ namespace Server.Items
|
|||
Mobile victim = m_Burning[i];
|
||||
|
||||
if (victim.Location == Location && victim.Map == Map &&
|
||||
(m_LitBy == null || SpellHelper.ValidIndirectTarget(m_LitBy, victim) &&
|
||||
m_LitBy.CanBeHarmful(victim, false)))
|
||||
(m_LitBy == null || (SpellHelper.ValidIndirectTarget(m_LitBy, victim) &&
|
||||
m_LitBy.CanBeHarmful(victim, false))))
|
||||
{
|
||||
m_LitBy?.DoHarmful(victim);
|
||||
|
||||
|
|
|
|||
|
|
@ -7,16 +7,16 @@ namespace Server.Items
|
|||
[AttributeUsage(AttributeTargets.Class)]
|
||||
public class FlippableAddonAttribute : Attribute
|
||||
{
|
||||
private static string m_MethodName = "Flip";
|
||||
private static readonly string m_MethodName = "Flip";
|
||||
|
||||
private static Type[] m_Params =
|
||||
private static readonly Type[] m_Params =
|
||||
{
|
||||
typeof(Mobile), typeof(Direction)
|
||||
};
|
||||
|
||||
public FlippableAddonAttribute(params Direction[] directions) => Directions = directions;
|
||||
|
||||
public Direction[] Directions{ get; }
|
||||
public Direction[] Directions { get; }
|
||||
|
||||
public virtual void Flip(Mobile from, Item addon)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ namespace Server.Items
|
|||
{
|
||||
public FlippableAttribute(params int[] itemIDs) => ItemIDs = itemIDs;
|
||||
|
||||
public int[] ItemIDs{ get; }
|
||||
public int[] ItemIDs { get; }
|
||||
|
||||
public virtual void Flip(Item item)
|
||||
{
|
||||
|
|
@ -64,7 +64,7 @@ namespace Server.Items
|
|||
{
|
||||
try
|
||||
{
|
||||
item.GetType().GetMethod("Flip", Type.EmptyTypes)?.Invoke(item, new object[0]);
|
||||
item.GetType().GetMethod("Flip", Type.EmptyTypes)?.Invoke(item, Array.Empty<object>());
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -219,7 +219,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -247,7 +247,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -275,7 +275,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -303,7 +303,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -331,7 +331,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -342,7 +342,7 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
//remove
|
||||
// remove
|
||||
public class SmallBlueFlask : Item
|
||||
{
|
||||
[Constructible]
|
||||
|
|
@ -360,7 +360,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -388,7 +388,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -416,7 +416,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -444,7 +444,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -472,7 +472,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -500,7 +500,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -528,7 +528,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -556,7 +556,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -584,7 +584,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -612,7 +612,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -640,7 +640,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -668,7 +668,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -696,7 +696,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -724,7 +724,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -752,7 +752,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -780,7 +780,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -808,7 +808,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -836,7 +836,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -864,7 +864,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -892,7 +892,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -920,7 +920,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -948,7 +948,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -976,7 +976,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -1004,7 +1004,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -1032,7 +1032,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -1061,7 +1061,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -1090,7 +1090,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -1101,7 +1101,6 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public class EmptyVial : Item
|
||||
{
|
||||
[Constructible]
|
||||
|
|
@ -1119,7 +1118,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -1147,7 +1146,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -1175,7 +1174,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
@ -1203,7 +1202,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ namespace Server.Items
|
|||
{
|
||||
Point3D p = GetWorldLocation();
|
||||
|
||||
if (1 > Utility.Random(Math.Max(Math.Abs(from.X - p.X), Math.Abs(from.Y - p.Y))))
|
||||
if (Utility.Random(Math.Max(Math.Abs(from.X - p.X), Math.Abs(from.Y - p.Y))) < 1)
|
||||
{
|
||||
Effects.PlaySound(from.Location, from.Map, from.GetHurtSound());
|
||||
from.PublicOverheadMessage(MessageType.Regular, from.SpeechHue, true, "Ouch!");
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ namespace Server.Items
|
|||
|
||||
public class HairDyeGump : Gump
|
||||
{
|
||||
private static HairDyeEntry[] m_Entries =
|
||||
private static readonly HairDyeEntry[] m_Entries =
|
||||
{
|
||||
new HairDyeEntry("*****", 1602, 26),
|
||||
new HairDyeEntry("*****", 1628, 27),
|
||||
|
|
@ -60,7 +60,7 @@ namespace Server.Items
|
|||
new HairDyeEntry("*****", 1134, 16)
|
||||
};
|
||||
|
||||
private HairDye m_HairDye;
|
||||
private readonly HairDye m_HairDye;
|
||||
|
||||
public HairDyeGump(HairDye dye) : base(50, 50)
|
||||
{
|
||||
|
|
@ -106,7 +106,7 @@ namespace Server.Items
|
|||
|
||||
if (!m_HairDye.IsChildOf(m.Backpack))
|
||||
{
|
||||
m.SendLocalizedMessage(1042010); //You must have the objectin your backpack to use it.
|
||||
m.SendLocalizedMessage(1042010); // You must have the objectin your backpack to use it.
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -156,11 +156,11 @@ namespace Server.Items
|
|||
HueCount = hueCount;
|
||||
}
|
||||
|
||||
public string Name{ get; }
|
||||
public string Name { get; }
|
||||
|
||||
public int HueStart{ get; }
|
||||
public int HueStart { get; }
|
||||
|
||||
public int HueCount{ get; }
|
||||
public int HueCount { get; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@ namespace Server.Items
|
|||
{
|
||||
internal interface IDurability
|
||||
{
|
||||
bool CanFortify{ get; }
|
||||
bool CanFortify { get; }
|
||||
|
||||
int InitMinHits{ get; }
|
||||
int InitMaxHits{ get; }
|
||||
int InitMinHits { get; }
|
||||
int InitMaxHits { get; }
|
||||
|
||||
int HitPoints{ get; set; }
|
||||
int MaxHitPoints{ get; set; }
|
||||
int HitPoints { get; set; }
|
||||
int MaxHitPoints { get; set; }
|
||||
|
||||
void ScaleDurability();
|
||||
void UnscaleDurability();
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ namespace Server.Items
|
|||
|
||||
public static bool CheckUse(InteriorDecorator tool, Mobile from)
|
||||
{
|
||||
/*if ( tool.Deleted || !tool.IsChildOf( from.Backpack ) )
|
||||
/*if (tool.Deleted || !tool.IsChildOf( from.Backpack ))
|
||||
from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
|
||||
else*/
|
||||
if (!InHouse(from))
|
||||
|
|
@ -97,7 +97,7 @@ namespace Server.Items
|
|||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private InteriorDecorator m_Decorator;
|
||||
private readonly InteriorDecorator m_Decorator;
|
||||
|
||||
public InternalGump(InteriorDecorator decorator) : base(150, 50)
|
||||
{
|
||||
|
|
@ -140,7 +140,7 @@ namespace Server.Items
|
|||
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
private InteriorDecorator m_Decorator;
|
||||
private readonly InteriorDecorator m_Decorator;
|
||||
|
||||
public InternalTarget(InteriorDecorator decorator) : base(-1, false, TargetFlags.None)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ namespace Server.Items
|
|||
|
||||
public interface ILockable
|
||||
{
|
||||
bool Locked{ get; set; }
|
||||
uint KeyValue{ get; set; }
|
||||
bool Locked { get; set; }
|
||||
uint KeyValue { get; set; }
|
||||
}
|
||||
|
||||
public class Key : Item
|
||||
|
|
@ -53,7 +53,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int MaxRange{ get; set; }
|
||||
public int MaxRange { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public uint KeyValue
|
||||
|
|
@ -68,7 +68,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Item Link{ get; set; }
|
||||
public Item Link { get; set; }
|
||||
|
||||
public static uint RandomValue() => (uint)(0xFFFFFFFE * Utility.RandomDouble()) + 1;
|
||||
|
||||
|
|
@ -149,28 +149,28 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
MaxRange = reader.ReadInt();
|
||||
{
|
||||
MaxRange = reader.ReadInt();
|
||||
|
||||
goto case 1;
|
||||
}
|
||||
goto case 1;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
Link = reader.ReadItem();
|
||||
{
|
||||
Link = reader.ReadItem();
|
||||
|
||||
goto case 0;
|
||||
}
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
if (version < 2 || MaxRange == 0)
|
||||
MaxRange = 3;
|
||||
{
|
||||
if (version < 2 || MaxRange == 0)
|
||||
MaxRange = 3;
|
||||
|
||||
m_Description = reader.ReadString();
|
||||
m_Description = reader.ReadString();
|
||||
|
||||
m_KeyVal = reader.ReadUInt();
|
||||
m_KeyVal = reader.ReadUInt();
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -268,7 +268,7 @@ namespace Server.Items
|
|||
|
||||
private class RenamePrompt : Prompt
|
||||
{
|
||||
private Key m_Key;
|
||||
private readonly Key m_Key;
|
||||
|
||||
public RenamePrompt(Key key) => m_Key = key;
|
||||
|
||||
|
|
@ -286,7 +286,7 @@ namespace Server.Items
|
|||
|
||||
private class UnlockTarget : Target
|
||||
{
|
||||
private Key m_Key;
|
||||
private readonly Key m_Key;
|
||||
|
||||
public UnlockTarget(Key key) : base(key.MaxRange, false, TargetFlags.None)
|
||||
{
|
||||
|
|
@ -328,7 +328,7 @@ namespace Server.Items
|
|||
|
||||
private class CopyTarget : Target
|
||||
{
|
||||
private Key m_Key;
|
||||
private readonly Key m_Key;
|
||||
|
||||
public CopyTarget(Key key) : base(3, false, TargetFlags.None) => m_Key = key;
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ namespace Server.Items
|
|||
{
|
||||
}
|
||||
|
||||
public List<Key> Keys{ get; private set; }
|
||||
public List<Key> Keys { get; private set; }
|
||||
|
||||
public override bool OnDragDrop(Mobile from, Item dropped)
|
||||
{
|
||||
|
|
@ -150,7 +150,7 @@ namespace Server.Items
|
|||
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
private KeyRing m_KeyRing;
|
||||
private readonly KeyRing m_KeyRing;
|
||||
|
||||
public InternalTarget(KeyRing keyRing) : base(-1, false, TargetFlags.None) => m_KeyRing = keyRing;
|
||||
|
||||
|
|
|
|||
|
|
@ -71,18 +71,18 @@ namespace Server.Items
|
|||
else
|
||||
serial &= 0x7FFFFFFF;
|
||||
|
||||
m_Stream.Write(serial);
|
||||
m_Stream.Write((short)(itemID & 0x7FFF));
|
||||
Stream.Write(serial);
|
||||
Stream.Write((short)(itemID & 0x7FFF));
|
||||
|
||||
if (amount != 0)
|
||||
m_Stream.Write((short)amount);
|
||||
Stream.Write((short)amount);
|
||||
|
||||
x &= 0x7FFF;
|
||||
|
||||
if (direction != 0)
|
||||
x |= 0x8000;
|
||||
|
||||
m_Stream.Write((short)x);
|
||||
Stream.Write((short)x);
|
||||
|
||||
y &= 0x3FFF;
|
||||
|
||||
|
|
@ -92,18 +92,18 @@ namespace Server.Items
|
|||
if (flags != 0)
|
||||
y |= 0x4000;
|
||||
|
||||
m_Stream.Write((short)y);
|
||||
Stream.Write((short)y);
|
||||
|
||||
if (direction != 0)
|
||||
m_Stream.Write((byte)direction);
|
||||
Stream.Write((byte)direction);
|
||||
|
||||
m_Stream.Write((sbyte)loc.Z);
|
||||
Stream.Write((sbyte)loc.Z);
|
||||
|
||||
if (hue != 0)
|
||||
m_Stream.Write((ushort)hue);
|
||||
Stream.Write((ushort)hue);
|
||||
|
||||
if (flags != 0)
|
||||
m_Stream.Write((byte)flags);
|
||||
Stream.Write((byte)flags);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ namespace Server.Items
|
|||
{
|
||||
from.SendLocalizedMessage(1061632); // You can't do that while carrying the sigil.
|
||||
}
|
||||
else if (from.Map == GetTargetMap() || from.Map != Map.Trammel && from.Map != Map.Felucca)
|
||||
else if (from.Map == GetTargetMap() || (from.Map != Map.Trammel && from.Map != Map.Felucca))
|
||||
{
|
||||
from.SendLocalizedMessage(1005401); // You cannot bury the stone here.
|
||||
}
|
||||
|
|
@ -126,21 +126,22 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_Type = (MoonstoneType)reader.ReadInt();
|
||||
{
|
||||
m_Type = (MoonstoneType)reader.ReadInt();
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class SettleTimer : Timer
|
||||
{
|
||||
private Mobile m_Caster;
|
||||
private readonly Mobile m_Caster;
|
||||
private int m_Count;
|
||||
private Point3D m_Location;
|
||||
private Map m_Map, m_TargetMap;
|
||||
private Item m_Stone;
|
||||
private readonly Point3D m_Location;
|
||||
private readonly Map m_Map;
|
||||
private readonly Map m_TargetMap;
|
||||
private readonly Item m_Stone;
|
||||
|
||||
public SettleTimer(Item stone, Point3D loc, Map map, Map targetMap, Mobile caster) : base(
|
||||
TimeSpan.FromSeconds(2.5), TimeSpan.FromSeconds(1.0))
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ namespace Server.Items
|
|||
{
|
||||
public class MoonstoneGate : Moongate
|
||||
{
|
||||
private Mobile m_Caster;
|
||||
private readonly Mobile m_Caster;
|
||||
|
||||
public MoonstoneGate(Point3D loc, Map map, Map targetMap, Mobile caster, int hue) : base(loc, targetMap)
|
||||
{
|
||||
|
|
@ -32,7 +32,7 @@ namespace Server.Items
|
|||
Party casterParty = Party.Get(m_Caster);
|
||||
Party userParty = Party.Get(m);
|
||||
|
||||
if (m == m_Caster || casterParty != null && userParty == casterParty)
|
||||
if (m == m_Caster || (casterParty != null && userParty == casterParty))
|
||||
base.CheckGate(m, range);
|
||||
}
|
||||
|
||||
|
|
@ -44,7 +44,7 @@ namespace Server.Items
|
|||
Party casterParty = Party.Get(m_Caster);
|
||||
Party userParty = Party.Get(m);
|
||||
|
||||
if (m == m_Caster || casterParty != null && userParty == casterParty)
|
||||
if (m == m_Caster || (casterParty != null && userParty == casterParty))
|
||||
base.UseGate(m);
|
||||
}
|
||||
|
||||
|
|
@ -66,7 +66,7 @@ namespace Server.Items
|
|||
|
||||
private class InternalTimer : Timer
|
||||
{
|
||||
private Item m_Item;
|
||||
private readonly Item m_Item;
|
||||
|
||||
public InternalTimer(Item item) : base(TimeSpan.FromSeconds(30.0))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -29,10 +29,10 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int InactiveItemID{ get; set; }
|
||||
public int InactiveItemID { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int ActiveItemID{ get; set; }
|
||||
public int ActiveItemID { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int InsideRange
|
||||
|
|
@ -101,21 +101,21 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
m_OutsideRange = reader.ReadInt();
|
||||
goto case 0;
|
||||
}
|
||||
{
|
||||
m_OutsideRange = reader.ReadInt();
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
InactiveItemID = reader.ReadInt();
|
||||
ActiveItemID = reader.ReadInt();
|
||||
m_InsideRange = reader.ReadInt();
|
||||
{
|
||||
InactiveItemID = reader.ReadInt();
|
||||
ActiveItemID = reader.ReadInt();
|
||||
m_InsideRange = reader.ReadInt();
|
||||
|
||||
if (version < 1)
|
||||
m_OutsideRange = m_InsideRange;
|
||||
if (version < 1)
|
||||
m_OutsideRange = m_InsideRange;
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Timer.DelayCall(TimeSpan.Zero, Refresh);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ namespace Server.Items
|
|||
if (Deleted || !from.CanSee(this))
|
||||
return false;
|
||||
|
||||
base.ScissorHelper(from, new Bandage(), 1);
|
||||
this.ScissorHelper(from, new Bandage(), 1);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -102,9 +102,6 @@ namespace Server.Items
|
|||
1005422); // Hmmmm... this does not need to be cleaned.
|
||||
}
|
||||
}
|
||||
|
||||
#region Firebomb
|
||||
|
||||
else if (obj is BaseBeverage beverage)
|
||||
{
|
||||
if (beverage.Content == BeverageType.Liquor)
|
||||
|
|
@ -122,9 +119,6 @@ namespace Server.Items
|
|||
{
|
||||
from.SendLocalizedMessage(1060579); // That is already a firebomb!
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1005426); // The cloth will not work on that.
|
||||
|
|
@ -145,4 +139,4 @@ namespace Server.Items
|
|||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,22 +14,22 @@ namespace Server.Items
|
|||
public override int LabelNumber => 1062421; // bulletin board (south)
|
||||
|
||||
[Constructible]
|
||||
public PlayerBBSouth() : base( 0x2311 ) => Weight = 15.0;
|
||||
public PlayerBBSouth() : base(0x2311) => Weight = 15.0;
|
||||
|
||||
public PlayerBBSouth( Serial serial ) : base( serial )
|
||||
public PlayerBBSouth(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(IGenericWriter writer )
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize( writer );
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( 0 ); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( IGenericReader reader )
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
|
|
@ -40,22 +40,22 @@ namespace Server.Items
|
|||
public override int LabelNumber => 1062420; // bulletin board (east)
|
||||
|
||||
[Constructible]
|
||||
public PlayerBBEast() : base( 0x2312 ) => Weight = 15.0;
|
||||
public PlayerBBEast() : base(0x2312) => Weight = 15.0;
|
||||
|
||||
public PlayerBBEast( Serial serial ) : base( serial )
|
||||
public PlayerBBEast(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(IGenericWriter writer )
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize( writer );
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( 0 ); // version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( IGenericReader reader )
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
|
|
@ -67,117 +67,117 @@ namespace Server.Items
|
|||
|
||||
public PlayerBBMessage Greeting { get; set; }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public string Title { get; set; }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SecureLevel Level { get; set; }
|
||||
|
||||
public BasePlayerBB( int itemID ) : base( itemID )
|
||||
public BasePlayerBB(int itemID) : base(itemID)
|
||||
{
|
||||
Messages = new List<PlayerBBMessage>();
|
||||
Level = SecureLevel.Anyone;
|
||||
}
|
||||
|
||||
public BasePlayerBB( Serial serial ) : base( serial )
|
||||
public BasePlayerBB(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries( Mobile from, List<ContextMenuEntry> list )
|
||||
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
|
||||
{
|
||||
base.GetContextMenuEntries( from, list );
|
||||
SetSecureLevelEntry.AddTo( from, this, list );
|
||||
base.GetContextMenuEntries(from, list);
|
||||
SetSecureLevelEntry.AddTo(from, this, list);
|
||||
}
|
||||
|
||||
public override void Serialize(IGenericWriter writer )
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize( writer );
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( 1 );
|
||||
writer.Write(1);
|
||||
|
||||
writer.Write( (int) Level );
|
||||
writer.Write((int)Level);
|
||||
|
||||
writer.Write( Title );
|
||||
writer.Write(Title);
|
||||
|
||||
if ( Greeting != null )
|
||||
if (Greeting != null)
|
||||
{
|
||||
writer.Write( true );
|
||||
Greeting.Serialize( writer );
|
||||
writer.Write(true);
|
||||
Greeting.Serialize(writer);
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.Write( false );
|
||||
writer.Write(false);
|
||||
}
|
||||
|
||||
writer.WriteEncodedInt( Messages.Count );
|
||||
writer.WriteEncodedInt(Messages.Count);
|
||||
|
||||
for ( int i = 0; i < Messages.Count; ++i )
|
||||
Messages[i].Serialize( writer );
|
||||
for (int i = 0; i < Messages.Count; ++i)
|
||||
Messages[i].Serialize(writer);
|
||||
}
|
||||
|
||||
public override void Deserialize( IGenericReader reader )
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
Level = (SecureLevel)reader.ReadInt();
|
||||
goto case 0;
|
||||
}
|
||||
{
|
||||
Level = (SecureLevel)reader.ReadInt();
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
if ( version < 1 )
|
||||
Level = SecureLevel.Anyone;
|
||||
{
|
||||
if (version < 1)
|
||||
Level = SecureLevel.Anyone;
|
||||
|
||||
Title = reader.ReadString();
|
||||
Title = reader.ReadString();
|
||||
|
||||
if ( reader.ReadBool() )
|
||||
Greeting = new PlayerBBMessage( reader );
|
||||
if (reader.ReadBool())
|
||||
Greeting = new PlayerBBMessage(reader);
|
||||
|
||||
int count = reader.ReadEncodedInt();
|
||||
int count = reader.ReadEncodedInt();
|
||||
|
||||
Messages = new List<PlayerBBMessage>( count );
|
||||
Messages = new List<PlayerBBMessage>(count);
|
||||
|
||||
for ( int i = 0; i < count; ++i )
|
||||
Messages.Add( new PlayerBBMessage( reader ) );
|
||||
for (int i = 0; i < count; ++i)
|
||||
Messages.Add(new PlayerBBMessage(reader));
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static bool CheckAccess( BaseHouse house, Mobile from )
|
||||
public static bool CheckAccess(BaseHouse house, Mobile from)
|
||||
{
|
||||
if ( house.Public || !house.IsAosRules )
|
||||
return !house.IsBanned( from );
|
||||
if (house.Public || !house.IsAosRules)
|
||||
return !house.IsBanned(from);
|
||||
|
||||
return house.HasAccess( from );
|
||||
return house.HasAccess(from);
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
BaseHouse house = BaseHouse.FindHouseAt( this );
|
||||
BaseHouse house = BaseHouse.FindHouseAt(this);
|
||||
|
||||
if ( house?.HasLockedDownItem( this ) != true )
|
||||
from.SendLocalizedMessage( 1062396 ); // This bulletin board must be locked down in a house to be usable.
|
||||
else if ( !from.InRange( GetWorldLocation(), 2 ) || !from.InLOS( this ) )
|
||||
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
|
||||
else if ( CheckAccess( house, from ) )
|
||||
from.SendGump( new PlayerBBGump( from, house, this, 0 ) );
|
||||
if (house?.HasLockedDownItem(this) != true)
|
||||
from.SendLocalizedMessage(1062396); // This bulletin board must be locked down in a house to be usable.
|
||||
else if (!from.InRange(GetWorldLocation(), 2) || !from.InLOS(this))
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
else if (CheckAccess(house, from))
|
||||
from.SendGump(new PlayerBBGump(from, house, this, 0));
|
||||
}
|
||||
|
||||
public class PostPrompt : Prompt
|
||||
{
|
||||
private int m_Page;
|
||||
private BaseHouse m_House;
|
||||
private BasePlayerBB m_Board;
|
||||
private bool m_Greeting;
|
||||
private readonly int m_Page;
|
||||
private readonly BaseHouse m_House;
|
||||
private readonly BasePlayerBB m_Board;
|
||||
private readonly bool m_Greeting;
|
||||
|
||||
public PostPrompt( int page, BaseHouse house, BasePlayerBB board, bool greeting )
|
||||
public PostPrompt(int page, BaseHouse house, BasePlayerBB board, bool greeting)
|
||||
{
|
||||
m_Page = page;
|
||||
m_House = house;
|
||||
|
|
@ -185,334 +185,334 @@ namespace Server.Items
|
|||
m_Greeting = greeting;
|
||||
}
|
||||
|
||||
public override void OnCancel( Mobile from )
|
||||
public override void OnCancel(Mobile from)
|
||||
{
|
||||
OnResponse( from, "" );
|
||||
OnResponse(from, "");
|
||||
}
|
||||
|
||||
public override void OnResponse( Mobile from, string text )
|
||||
public override void OnResponse(Mobile from, string text)
|
||||
{
|
||||
int page = m_Page;
|
||||
BaseHouse house = m_House;
|
||||
BasePlayerBB board = m_Board;
|
||||
|
||||
if ( house?.HasLockedDownItem( board ) != true )
|
||||
if (house?.HasLockedDownItem(board) != true)
|
||||
{
|
||||
from.SendLocalizedMessage( 1062396 ); // This bulletin board must be locked down in a house to be usable.
|
||||
from.SendLocalizedMessage(1062396); // This bulletin board must be locked down in a house to be usable.
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !from.InRange( board.GetWorldLocation(), 2 ) || !from.InLOS( board ) )
|
||||
if (!from.InRange(board.GetWorldLocation(), 2) || !from.InLOS(board))
|
||||
{
|
||||
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
return;
|
||||
}
|
||||
if ( !CheckAccess( house, from ) )
|
||||
if (!CheckAccess(house, from))
|
||||
{
|
||||
from.SendLocalizedMessage( 1062398 ); // You are not allowed to post to this bulletin board.
|
||||
from.SendLocalizedMessage(1062398); // You are not allowed to post to this bulletin board.
|
||||
return;
|
||||
}
|
||||
if ( m_Greeting && !house.IsOwner( from ) ) return;
|
||||
if (m_Greeting && !house.IsOwner(from)) return;
|
||||
|
||||
text = text.Trim();
|
||||
|
||||
if ( text.Length > 255 )
|
||||
text = text.Substring( 0, 255 );
|
||||
if (text.Length > 255)
|
||||
text = text.Substring(0, 255);
|
||||
|
||||
if ( text.Length > 0 )
|
||||
if (text.Length > 0)
|
||||
{
|
||||
PlayerBBMessage message = new PlayerBBMessage( DateTime.UtcNow, from, text );
|
||||
PlayerBBMessage message = new PlayerBBMessage(DateTime.UtcNow, from, text);
|
||||
|
||||
if ( m_Greeting )
|
||||
if (m_Greeting)
|
||||
{
|
||||
board.Greeting = message;
|
||||
}
|
||||
else
|
||||
{
|
||||
board.Messages.Add( message );
|
||||
board.Messages.Add(message);
|
||||
|
||||
if ( board.Messages.Count > 50 )
|
||||
if (board.Messages.Count > 50)
|
||||
{
|
||||
board.Messages.RemoveAt( 0 );
|
||||
board.Messages.RemoveAt(0);
|
||||
|
||||
if ( page > 0 )
|
||||
if (page > 0)
|
||||
--page;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
from.SendGump( new PlayerBBGump( from, house, board, page ) );
|
||||
from.SendGump(new PlayerBBGump(from, house, board, page));
|
||||
}
|
||||
}
|
||||
|
||||
public class SetTitlePrompt : Prompt
|
||||
{
|
||||
private int m_Page;
|
||||
private BaseHouse m_House;
|
||||
private BasePlayerBB m_Board;
|
||||
private readonly int m_Page;
|
||||
private readonly BaseHouse m_House;
|
||||
private readonly BasePlayerBB m_Board;
|
||||
|
||||
public SetTitlePrompt( int page, BaseHouse house, BasePlayerBB board )
|
||||
public SetTitlePrompt(int page, BaseHouse house, BasePlayerBB board)
|
||||
{
|
||||
m_Page = page;
|
||||
m_House = house;
|
||||
m_Board = board;
|
||||
}
|
||||
|
||||
public override void OnCancel( Mobile from )
|
||||
public override void OnCancel(Mobile from)
|
||||
{
|
||||
OnResponse( from, "" );
|
||||
OnResponse(from, "");
|
||||
}
|
||||
|
||||
public override void OnResponse( Mobile from, string text )
|
||||
public override void OnResponse(Mobile from, string text)
|
||||
{
|
||||
int page = m_Page;
|
||||
BaseHouse house = m_House;
|
||||
BasePlayerBB board = m_Board;
|
||||
|
||||
if ( house?.HasLockedDownItem( board ) != true )
|
||||
if (house?.HasLockedDownItem(board) != true)
|
||||
{
|
||||
from.SendLocalizedMessage( 1062396 ); // This bulletin board must be locked down in a house to be usable.
|
||||
from.SendLocalizedMessage(1062396); // This bulletin board must be locked down in a house to be usable.
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !from.InRange( board.GetWorldLocation(), 2 ) || !from.InLOS( board ) )
|
||||
if (!from.InRange(board.GetWorldLocation(), 2) || !from.InLOS(board))
|
||||
{
|
||||
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
return;
|
||||
}
|
||||
if ( !CheckAccess( house, from ) )
|
||||
if (!CheckAccess(house, from))
|
||||
{
|
||||
from.SendLocalizedMessage( 1062398 ); // You are not allowed to post to this bulletin board.
|
||||
from.SendLocalizedMessage(1062398); // You are not allowed to post to this bulletin board.
|
||||
return;
|
||||
}
|
||||
|
||||
text = text.Trim();
|
||||
|
||||
if ( text.Length > 255 )
|
||||
text = text.Substring( 0, 255 );
|
||||
if (text.Length > 255)
|
||||
text = text.Substring(0, 255);
|
||||
|
||||
if ( text.Length > 0 )
|
||||
if (text.Length > 0)
|
||||
board.Title = text;
|
||||
|
||||
from.SendGump( new PlayerBBGump( from, house, board, page ) );
|
||||
from.SendGump(new PlayerBBGump(from, house, board, page));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerBBMessage
|
||||
{
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public DateTime Time { get; set; }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Mobile Poster { get; set; }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public string Message { get; set; }
|
||||
|
||||
public PlayerBBMessage( DateTime time, Mobile poster, string message )
|
||||
public PlayerBBMessage(DateTime time, Mobile poster, string message)
|
||||
{
|
||||
Time = time;
|
||||
Poster = poster;
|
||||
Message = message;
|
||||
}
|
||||
|
||||
public PlayerBBMessage( IGenericReader reader )
|
||||
public PlayerBBMessage(IGenericReader reader)
|
||||
{
|
||||
int version = reader.ReadEncodedInt();
|
||||
|
||||
switch ( version )
|
||||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
Time = reader.ReadDateTime();
|
||||
Poster = reader.ReadMobile();
|
||||
Message = reader.ReadString();
|
||||
break;
|
||||
}
|
||||
{
|
||||
Time = reader.ReadDateTime();
|
||||
Poster = reader.ReadMobile();
|
||||
Message = reader.ReadString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Serialize(IGenericWriter writer )
|
||||
public void Serialize(IGenericWriter writer)
|
||||
{
|
||||
writer.WriteEncodedInt( 0 ); // version
|
||||
writer.WriteEncodedInt(0); // version
|
||||
|
||||
writer.Write( Time );
|
||||
writer.Write( Poster );
|
||||
writer.Write( Message );
|
||||
writer.Write(Time);
|
||||
writer.Write(Poster);
|
||||
writer.Write(Message);
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerBBGump : Gump
|
||||
{
|
||||
private int m_Page;
|
||||
private Mobile m_From;
|
||||
private BaseHouse m_House;
|
||||
private BasePlayerBB m_Board;
|
||||
private readonly int m_Page;
|
||||
private readonly Mobile m_From;
|
||||
private readonly BaseHouse m_House;
|
||||
private readonly BasePlayerBB m_Board;
|
||||
|
||||
private const int LabelColor = 0x7FFF;
|
||||
private const int LabelHue = 1153;
|
||||
|
||||
public override void OnResponse( NetState sender, RelayInfo info )
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
int page = m_Page;
|
||||
Mobile from = m_From;
|
||||
BaseHouse house = m_House;
|
||||
BasePlayerBB board = m_Board;
|
||||
|
||||
if ( house?.HasLockedDownItem( board ) != true )
|
||||
if (house?.HasLockedDownItem(board) != true)
|
||||
{
|
||||
from.SendLocalizedMessage( 1062396 ); // This bulletin board must be locked down in a house to be usable.
|
||||
from.SendLocalizedMessage(1062396); // This bulletin board must be locked down in a house to be usable.
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !from.InRange( board.GetWorldLocation(), 2 ) || !from.InLOS( board ) )
|
||||
if (!from.InRange(board.GetWorldLocation(), 2) || !from.InLOS(board))
|
||||
{
|
||||
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
return;
|
||||
}
|
||||
if ( !BasePlayerBB.CheckAccess( house, from ) )
|
||||
if (!BasePlayerBB.CheckAccess(house, from))
|
||||
{
|
||||
from.SendLocalizedMessage( 1062398 ); // You are not allowed to post to this bulletin board.
|
||||
from.SendLocalizedMessage(1062398); // You are not allowed to post to this bulletin board.
|
||||
return;
|
||||
}
|
||||
|
||||
switch ( info.ButtonID )
|
||||
switch (info.ButtonID)
|
||||
{
|
||||
case 1: // Post message
|
||||
{
|
||||
from.Prompt = new BasePlayerBB.PostPrompt( page, house, board, false );
|
||||
from.SendLocalizedMessage( 1062397 ); // Please enter your message:
|
||||
{
|
||||
from.Prompt = new BasePlayerBB.PostPrompt(page, house, board, false);
|
||||
from.SendLocalizedMessage(1062397); // Please enter your message:
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2: // Set title
|
||||
{
|
||||
if ( house.IsOwner( from ) )
|
||||
{
|
||||
from.Prompt = new BasePlayerBB.SetTitlePrompt( page, house, board );
|
||||
from.SendLocalizedMessage( 1062402 ); // Enter new title:
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case 3: // Post greeting
|
||||
{
|
||||
if ( house.IsOwner( from ) )
|
||||
{
|
||||
from.Prompt = new BasePlayerBB.PostPrompt( page, house, board, true );
|
||||
from.SendLocalizedMessage( 1062404 ); // Enter new greeting (this will always be the first post):
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case 4: // Scroll up
|
||||
{
|
||||
if ( page == 0 )
|
||||
page = board.Messages.Count;
|
||||
else
|
||||
page -= 1;
|
||||
|
||||
from.SendGump( new PlayerBBGump( from, house, board, page ) );
|
||||
|
||||
break;
|
||||
}
|
||||
case 5: // Scroll down
|
||||
{
|
||||
page += 1;
|
||||
page %= board.Messages.Count + 1;
|
||||
|
||||
from.SendGump( new PlayerBBGump( from, house, board, page ) );
|
||||
|
||||
break;
|
||||
}
|
||||
case 6: // Banish poster
|
||||
{
|
||||
if ( house.IsOwner( from ) )
|
||||
{
|
||||
if ( page >= 1 && page <= board.Messages.Count )
|
||||
if (house.IsOwner(from))
|
||||
{
|
||||
PlayerBBMessage message = board.Messages[page - 1];
|
||||
Mobile poster = message.Poster;
|
||||
|
||||
if ( poster == null )
|
||||
{
|
||||
from.SendGump( new PlayerBBGump( from, house, board, page ) );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( poster.AccessLevel > AccessLevel.Player && from.AccessLevel <= poster.AccessLevel )
|
||||
{
|
||||
from.SendLocalizedMessage( 501354 ); // Uh oh...a bigger boot may be required.
|
||||
}
|
||||
else if ( house.IsFriend( poster ) )
|
||||
{
|
||||
from.SendLocalizedMessage( 1060750 ); // That person is a friend, co-owner, or owner of this house, and therefore cannot be banished!
|
||||
}
|
||||
else if ( poster is PlayerVendor )
|
||||
{
|
||||
from.SendLocalizedMessage( 501351 ); // You cannot eject a vendor.
|
||||
}
|
||||
else if ( house.Bans.Count >= BaseHouse.MaxBans )
|
||||
{
|
||||
from.SendLocalizedMessage( 501355 ); // The ban limit for this house has been reached!
|
||||
}
|
||||
else if ( house.IsBanned( poster ) )
|
||||
{
|
||||
from.SendLocalizedMessage( 501356 ); // This person is already banned!
|
||||
}
|
||||
else if ( poster is BaseCreature creature && creature.NoHouseRestrictions )
|
||||
{
|
||||
from.SendLocalizedMessage( 1062040 ); // You cannot ban that.
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( !house.Bans.Contains( poster ) )
|
||||
house.Bans.Add( poster );
|
||||
|
||||
from.SendLocalizedMessage( 1062417 ); // That person has been banned from this house.
|
||||
|
||||
if ( house.IsInside( poster ) && !BasePlayerBB.CheckAccess( house, poster ) )
|
||||
poster.MoveToWorld( house.BanLocation, house.Map );
|
||||
}
|
||||
from.Prompt = new BasePlayerBB.SetTitlePrompt(page, house, board);
|
||||
from.SendLocalizedMessage(1062402); // Enter new title:
|
||||
}
|
||||
|
||||
from.SendGump( new PlayerBBGump( from, house, board, page ) );
|
||||
break;
|
||||
}
|
||||
case 3: // Post greeting
|
||||
{
|
||||
if (house.IsOwner(from))
|
||||
{
|
||||
from.Prompt = new BasePlayerBB.PostPrompt(page, house, board, true);
|
||||
from.SendLocalizedMessage(1062404); // Enter new greeting (this will always be the first post):
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4: // Scroll up
|
||||
{
|
||||
if (page == 0)
|
||||
page = board.Messages.Count;
|
||||
else
|
||||
page -= 1;
|
||||
|
||||
from.SendGump(new PlayerBBGump(from, house, board, page));
|
||||
|
||||
break;
|
||||
}
|
||||
case 5: // Scroll down
|
||||
{
|
||||
page += 1;
|
||||
page %= board.Messages.Count + 1;
|
||||
|
||||
from.SendGump(new PlayerBBGump(from, house, board, page));
|
||||
|
||||
break;
|
||||
}
|
||||
case 6: // Banish poster
|
||||
{
|
||||
if (house.IsOwner(from))
|
||||
{
|
||||
if (page >= 1 && page <= board.Messages.Count)
|
||||
{
|
||||
PlayerBBMessage message = board.Messages[page - 1];
|
||||
Mobile poster = message.Poster;
|
||||
|
||||
if (poster == null)
|
||||
{
|
||||
from.SendGump(new PlayerBBGump(from, house, board, page));
|
||||
return;
|
||||
}
|
||||
|
||||
if (poster.AccessLevel > AccessLevel.Player && from.AccessLevel <= poster.AccessLevel)
|
||||
{
|
||||
from.SendLocalizedMessage(501354); // Uh oh...a bigger boot may be required.
|
||||
}
|
||||
else if (house.IsFriend(poster))
|
||||
{
|
||||
from.SendLocalizedMessage(1060750); // That person is a friend, co-owner, or owner of this house, and therefore cannot be banished!
|
||||
}
|
||||
else if (poster is PlayerVendor)
|
||||
{
|
||||
from.SendLocalizedMessage(501351); // You cannot eject a vendor.
|
||||
}
|
||||
else if (house.Bans.Count >= BaseHouse.MaxBans)
|
||||
{
|
||||
from.SendLocalizedMessage(501355); // The ban limit for this house has been reached!
|
||||
}
|
||||
else if (house.IsBanned(poster))
|
||||
{
|
||||
from.SendLocalizedMessage(501356); // This person is already banned!
|
||||
}
|
||||
else if (poster is BaseCreature creature && creature.NoHouseRestrictions)
|
||||
{
|
||||
from.SendLocalizedMessage(1062040); // You cannot ban that.
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!house.Bans.Contains(poster))
|
||||
house.Bans.Add(poster);
|
||||
|
||||
from.SendLocalizedMessage(1062417); // That person has been banned from this house.
|
||||
|
||||
if (house.IsInside(poster) && !BasePlayerBB.CheckAccess(house, poster))
|
||||
poster.MoveToWorld(house.BanLocation, house.Map);
|
||||
}
|
||||
}
|
||||
|
||||
from.SendGump(new PlayerBBGump(from, house, board, page));
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case 7: // Delete message
|
||||
{
|
||||
if ( house.IsOwner( from ) )
|
||||
{
|
||||
if ( page >= 1 && page <= board.Messages.Count )
|
||||
board.Messages.RemoveAt( page - 1 );
|
||||
if (house.IsOwner(from))
|
||||
{
|
||||
if (page >= 1 && page <= board.Messages.Count)
|
||||
board.Messages.RemoveAt(page - 1);
|
||||
|
||||
from.SendGump( new PlayerBBGump( from, house, board, 0 ) );
|
||||
from.SendGump(new PlayerBBGump(from, house, board, 0));
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case 8: // Post props
|
||||
{
|
||||
if ( from.AccessLevel >= AccessLevel.GameMaster )
|
||||
{
|
||||
PlayerBBMessage message = board.Greeting;
|
||||
if (from.AccessLevel >= AccessLevel.GameMaster)
|
||||
{
|
||||
PlayerBBMessage message = board.Greeting;
|
||||
|
||||
if ( page >= 1 && page <= board.Messages.Count )
|
||||
message = board.Messages[page - 1];
|
||||
if (page >= 1 && page <= board.Messages.Count)
|
||||
message = board.Messages[page - 1];
|
||||
|
||||
from.SendGump( new PlayerBBGump( from, house, board, page ) );
|
||||
from.SendGump( new PropertiesGump( from, message ) );
|
||||
from.SendGump(new PlayerBBGump(from, house, board, page));
|
||||
from.SendGump(new PropertiesGump(from, message));
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public PlayerBBGump( Mobile from, BaseHouse house, BasePlayerBB board, int page ) : base( 50, 10 )
|
||||
public PlayerBBGump(Mobile from, BaseHouse house, BasePlayerBB board, int page) : base(50, 10)
|
||||
{
|
||||
from.CloseGump<PlayerBBGump>();
|
||||
|
||||
|
|
@ -521,70 +521,70 @@ namespace Server.Items
|
|||
m_House = house;
|
||||
m_Board = board;
|
||||
|
||||
AddPage( 0 );
|
||||
AddPage(0);
|
||||
|
||||
AddImage( 30, 30, 5400 );
|
||||
AddImage(30, 30, 5400);
|
||||
|
||||
AddButton( 393, 145, 2084, 2084, 4); // Scroll up
|
||||
AddButton( 390, 371, 2085, 2085, 5); // Scroll down
|
||||
AddButton(393, 145, 2084, 2084, 4); // Scroll up
|
||||
AddButton(390, 371, 2085, 2085, 5); // Scroll down
|
||||
|
||||
AddButton( 32, 183, 5412, 5413, 1); // Post message
|
||||
AddButton(32, 183, 5412, 5413, 1); // Post message
|
||||
|
||||
if ( house.IsOwner( from ) )
|
||||
if (house.IsOwner(from))
|
||||
{
|
||||
AddButton( 63, 90, 5601, 5605, 2);
|
||||
AddHtmlLocalized( 81, 89, 230, 20, 1062400, LabelColor ); // Set title
|
||||
AddButton(63, 90, 5601, 5605, 2);
|
||||
AddHtmlLocalized(81, 89, 230, 20, 1062400, LabelColor); // Set title
|
||||
|
||||
AddButton( 63, 109, 5601, 5605, 3);
|
||||
AddHtmlLocalized( 81, 108, 230, 20, 1062401, LabelColor ); // Post greeting
|
||||
AddButton(63, 109, 5601, 5605, 3);
|
||||
AddHtmlLocalized(81, 108, 230, 20, 1062401, LabelColor); // Post greeting
|
||||
}
|
||||
|
||||
string title = board.Title;
|
||||
|
||||
if ( title != null )
|
||||
AddHtml( 183, 68, 180, 23, title );
|
||||
if (title != null)
|
||||
AddHtml(183, 68, 180, 23, title);
|
||||
|
||||
AddHtmlLocalized( 385, 89, 60, 20, 1062409, LabelColor ); // Post
|
||||
AddHtmlLocalized(385, 89, 60, 20, 1062409, LabelColor); // Post
|
||||
|
||||
AddLabel( 440, 89, LabelHue, page.ToString() );
|
||||
AddLabel( 455, 89, LabelHue, "/" );
|
||||
AddLabel( 470, 89, LabelHue, board.Messages.Count.ToString() );
|
||||
AddLabel(440, 89, LabelHue, page.ToString());
|
||||
AddLabel(455, 89, LabelHue, "/");
|
||||
AddLabel(470, 89, LabelHue, board.Messages.Count.ToString());
|
||||
|
||||
PlayerBBMessage message = board.Greeting;
|
||||
|
||||
if ( page >= 1 && page <= board.Messages.Count )
|
||||
if (page >= 1 && page <= board.Messages.Count)
|
||||
message = board.Messages[page - 1];
|
||||
|
||||
AddImageTiled( 150, 220, 240, 1, 2700 ); // Separator
|
||||
AddImageTiled(150, 220, 240, 1, 2700); // Separator
|
||||
|
||||
AddHtmlLocalized( 150, 180, 100, 20, 1062405, 16715 ); // Posted On:
|
||||
AddHtmlLocalized( 150, 200, 100, 20, 1062406, 16715 ); // Posted By:
|
||||
AddHtmlLocalized(150, 180, 100, 20, 1062405, 16715); // Posted On:
|
||||
AddHtmlLocalized(150, 200, 100, 20, 1062406, 16715); // Posted By:
|
||||
|
||||
if ( message != null )
|
||||
if (message != null)
|
||||
{
|
||||
AddHtml( 255, 180, 150, 20, message.Time.ToString( "yyyy-MM-dd HH:mm:ss" ) );
|
||||
AddHtml(255, 180, 150, 20, message.Time.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||
|
||||
Mobile poster = message.Poster;
|
||||
string name = poster?.Name;
|
||||
|
||||
if ( name == null || (name = name.Trim()).Length == 0 )
|
||||
if (name == null || (name = name.Trim()).Length == 0)
|
||||
name = "Someone";
|
||||
|
||||
AddHtml( 255, 200, 150, 20, name );
|
||||
AddHtml(255, 200, 150, 20, name);
|
||||
|
||||
AddHtml( 150, 240, 250, 100, message.Message ?? "" );
|
||||
AddHtml(150, 240, 250, 100, message.Message ?? "");
|
||||
|
||||
if ( message != board.Greeting && house.IsOwner( from ) )
|
||||
if (message != board.Greeting && house.IsOwner(from))
|
||||
{
|
||||
AddButton( 130, 395, 1209, 1210, 6);
|
||||
AddHtmlLocalized( 150, 393, 150, 20, 1062410, LabelColor ); // Banish Poster
|
||||
AddButton(130, 395, 1209, 1210, 6);
|
||||
AddHtmlLocalized(150, 393, 150, 20, 1062410, LabelColor); // Banish Poster
|
||||
|
||||
AddButton( 310, 395, 1209, 1210, 7);
|
||||
AddHtmlLocalized( 330, 393, 150, 20, 1062411, LabelColor ); // Delete Message
|
||||
AddButton(310, 395, 1209, 1210, 7);
|
||||
AddHtmlLocalized(330, 393, 150, 20, 1062411, LabelColor); // Delete Message
|
||||
}
|
||||
|
||||
if ( from.AccessLevel >= AccessLevel.GameMaster )
|
||||
AddButton( 135, 242, 1209, 1210, 8); // Post props
|
||||
if (from.AccessLevel >= AccessLevel.GameMaster)
|
||||
AddButton(135, 242, 1209, 1210, 8); // Post props
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ namespace Server.Items
|
|||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); //version
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
|
|
|
|||
|
|
@ -1,28 +1,28 @@
|
|||
using System;
|
||||
using Server.Mobiles;
|
||||
using System.Collections.Generic;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class PoolOfAcid : Item
|
||||
{
|
||||
private TimeSpan m_Duration;
|
||||
private int m_MinDamage;
|
||||
private int m_MaxDamage;
|
||||
private DateTime m_Created;
|
||||
private readonly TimeSpan m_Duration;
|
||||
private readonly int m_MinDamage;
|
||||
private readonly int m_MaxDamage;
|
||||
private readonly DateTime m_Created;
|
||||
private bool m_Drying;
|
||||
private Timer m_Timer;
|
||||
private readonly Timer m_Timer;
|
||||
|
||||
[Constructible]
|
||||
public PoolOfAcid() : this( TimeSpan.FromSeconds( 10.0 ), 2, 5 )
|
||||
public PoolOfAcid() : this(TimeSpan.FromSeconds(10.0), 2, 5)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "a pool of acid";
|
||||
|
||||
[Constructible]
|
||||
public PoolOfAcid( TimeSpan duration, int minDamage, int maxDamage )
|
||||
: base( 0x122A )
|
||||
public PoolOfAcid(TimeSpan duration, int minDamage, int maxDamage)
|
||||
: base(0x122A)
|
||||
{
|
||||
Hue = 0x3F;
|
||||
Movable = false;
|
||||
|
|
@ -32,7 +32,7 @@ namespace Server.Items
|
|||
m_Created = DateTime.UtcNow;
|
||||
m_Duration = duration;
|
||||
|
||||
m_Timer = Timer.DelayCall( TimeSpan.Zero, TimeSpan.FromSeconds( 1 ), OnTick );
|
||||
m_Timer = Timer.DelayCall(TimeSpan.Zero, TimeSpan.FromSeconds(1), OnTick);
|
||||
}
|
||||
|
||||
public override void OnAfterDelete()
|
||||
|
|
@ -45,10 +45,13 @@ namespace Server.Items
|
|||
DateTime now = DateTime.UtcNow;
|
||||
TimeSpan age = now - m_Created;
|
||||
|
||||
if ( age > m_Duration ) {
|
||||
if (age > m_Duration)
|
||||
{
|
||||
Delete();
|
||||
} else {
|
||||
if ( !m_Drying && age > m_Duration - age )
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!m_Drying && age > m_Duration - age)
|
||||
{
|
||||
m_Drying = true;
|
||||
ItemID = 0x122B;
|
||||
|
|
@ -56,35 +59,35 @@ namespace Server.Items
|
|||
|
||||
List<Mobile> toDamage = new List<Mobile>();
|
||||
|
||||
foreach( Mobile m in GetMobilesInRange( 0 ) )
|
||||
if ( m.Alive && !m.IsDeadBondedPet && (!(m is BaseCreature bc) || bc.Controlled || bc.Summoned) )
|
||||
toDamage.Add( m );
|
||||
foreach (Mobile m in GetMobilesInRange(0))
|
||||
if (m.Alive && !m.IsDeadBondedPet && (!(m is BaseCreature bc) || bc.Controlled || bc.Summoned))
|
||||
toDamage.Add(m);
|
||||
|
||||
for ( int i = 0; i < toDamage.Count; i++ )
|
||||
Damage( toDamage[i] );
|
||||
for (int i = 0; i < toDamage.Count; i++)
|
||||
Damage(toDamage[i]);
|
||||
}
|
||||
}
|
||||
public override bool OnMoveOver( Mobile m )
|
||||
public override bool OnMoveOver(Mobile m)
|
||||
{
|
||||
Damage( m );
|
||||
Damage(m);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Damage ( Mobile m )
|
||||
public void Damage(Mobile m)
|
||||
{
|
||||
m.Damage( Utility.RandomMinMax( m_MinDamage, m_MaxDamage ) );
|
||||
m.Damage(Utility.RandomMinMax(m_MinDamage, m_MaxDamage));
|
||||
}
|
||||
|
||||
public PoolOfAcid( Serial serial ) : base( serial )
|
||||
public PoolOfAcid(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(IGenericWriter writer )
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
//Don't serialize these
|
||||
// Don't serialize these
|
||||
}
|
||||
|
||||
public override void Deserialize( IGenericReader reader )
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ namespace Server.Items
|
|||
{
|
||||
private static readonly TimeSpan m_UseTimeout = TimeSpan.FromMinutes(2.0);
|
||||
|
||||
private HashSet<Mobile> m_DamageTable = new HashSet<Mobile>();
|
||||
private readonly HashSet<Mobile> m_DamageTable = new HashSet<Mobile>();
|
||||
private DateTime m_LastUse;
|
||||
|
||||
private int m_SideLength;
|
||||
|
|
@ -94,7 +94,7 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
public Node[] Path{ get; private set; }
|
||||
public Node[] Path { get; private set; }
|
||||
|
||||
public override string DefaultName => "a control panel";
|
||||
|
||||
|
|
@ -275,9 +275,9 @@ namespace Server.Items
|
|||
|
||||
public struct Node
|
||||
{
|
||||
public int X{ get; set; }
|
||||
public int X { get; set; }
|
||||
|
||||
public int Y{ get; set; }
|
||||
public int Y { get; set; }
|
||||
|
||||
public Node(int x, int y)
|
||||
{
|
||||
|
|
@ -296,10 +296,10 @@ namespace Server.Items
|
|||
|
||||
private class GameGump : Gump
|
||||
{
|
||||
private Mobile m_From;
|
||||
private readonly Mobile m_From;
|
||||
|
||||
private ControlPanel m_Panel;
|
||||
private int m_Step;
|
||||
private readonly ControlPanel m_Panel;
|
||||
private readonly int m_Step;
|
||||
|
||||
public GameGump(ControlPanel panel, Mobile from, int step, bool hint) : base(5, 30)
|
||||
{
|
||||
|
|
@ -341,12 +341,12 @@ namespace Server.Items
|
|||
AddBackground(100, 125, 10 + 40 * sideLength, 10 + 40 * sideLength, 0x1400);
|
||||
|
||||
for (int i = 0; i < sideLength; i++)
|
||||
for (int j = 0; j < sideLength - 1; j++)
|
||||
AddImage(120 + 40 * i, 162 + 40 * j, 0x13F9);
|
||||
for (int j = 0; j < sideLength - 1; j++)
|
||||
AddImage(120 + 40 * i, 162 + 40 * j, 0x13F9);
|
||||
|
||||
for (int i = 0; i < sideLength - 1; i++)
|
||||
for (int j = 0; j < sideLength; j++)
|
||||
AddImage(138 + 40 * i, 147 + 40 * j, 0x13FD);
|
||||
for (int j = 0; j < sideLength; j++)
|
||||
AddImage(138 + 40 * i, 147 + 40 * j, 0x13FD);
|
||||
|
||||
Node[] path = panel.Path;
|
||||
|
||||
|
|
@ -362,8 +362,8 @@ namespace Server.Items
|
|||
hues[lastNode.X, lastNode.Y] = NodeHue.Red;
|
||||
|
||||
for (int i = 0; i < sideLength; i++)
|
||||
for (int j = 0; j < sideLength; j++)
|
||||
AddNode(110 + 40 * i, 135 + 40 * j, hues[i, j]);
|
||||
for (int j = 0; j < sideLength; j++)
|
||||
AddNode(110 + 40 * i, 135 + 40 * j, hues[i, j]);
|
||||
|
||||
Node curNode = path[step];
|
||||
AddImage(118 + 40 * curNode.X, 143 + 40 * curNode.Y, 0x13A8);
|
||||
|
|
@ -490,9 +490,9 @@ namespace Server.Items
|
|||
|
||||
private class DamageTimer : Timer
|
||||
{
|
||||
private ControlPanel m_Panel;
|
||||
private readonly ControlPanel m_Panel;
|
||||
private int m_Step;
|
||||
private Mobile m_To;
|
||||
private readonly Mobile m_To;
|
||||
|
||||
public DamageTimer(ControlPanel panel, Mobile to) : base(TimeSpan.FromSeconds(5.0), TimeSpan.FromSeconds(5.0))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -5,40 +5,40 @@ namespace Server.Items
|
|||
{
|
||||
public abstract class PromotionalToken : Item
|
||||
{
|
||||
public abstract Item CreateItemFor( Mobile from );
|
||||
public abstract Item CreateItemFor(Mobile from);
|
||||
|
||||
public abstract TextDefinition ItemName{ get; }
|
||||
public abstract TextDefinition ItemName { get; }
|
||||
public abstract TextDefinition ItemReceiveMessage { get; }
|
||||
public abstract TextDefinition ItemGumpName { get; }
|
||||
|
||||
public PromotionalToken() : base( 0x2AAA )
|
||||
public PromotionalToken() : base(0x2AAA)
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
Light = LightType.Circle300;
|
||||
Weight = 5.0;
|
||||
}
|
||||
|
||||
public PromotionalToken( Serial serial ) : base( serial )
|
||||
public PromotionalToken(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GetProperties( ObjectPropertyList list )
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties( list );
|
||||
base.GetProperties(list);
|
||||
|
||||
list.Add( 1070998, ItemName.ToString() ); // Use this to redeem<br>your ~1_PROMO~
|
||||
list.Add(1070998, ItemName.ToString()); // Use this to redeem<br>your ~1_PROMO~
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if ( !IsChildOf( from.Backpack ) )
|
||||
if (!IsChildOf(from.Backpack))
|
||||
{
|
||||
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.CloseGump<PromotionalTokenGump>();
|
||||
from.SendGump( new PromotionalTokenGump( this ) );
|
||||
from.SendGump(new PromotionalTokenGump(this));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -46,68 +46,67 @@ namespace Server.Items
|
|||
{
|
||||
Mobile m = null;
|
||||
|
||||
if ( parent is Item item )
|
||||
if (parent is Item item)
|
||||
m = item.RootParent as Mobile;
|
||||
else if ( parent is Mobile mobile )
|
||||
else if (parent is Mobile mobile)
|
||||
m = mobile;
|
||||
|
||||
m?.CloseGump<PromotionalTokenGump>();
|
||||
}
|
||||
|
||||
public override void Serialize(IGenericWriter writer )
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize( writer );
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( 0 );
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( IGenericReader reader )
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1070997; // A promotional token
|
||||
|
||||
|
||||
private class PromotionalTokenGump : Gump
|
||||
{
|
||||
private PromotionalToken m_Token;
|
||||
private readonly PromotionalToken m_Token;
|
||||
|
||||
public PromotionalTokenGump( PromotionalToken token ) : base( 10, 10 )
|
||||
public PromotionalTokenGump(PromotionalToken token) : base(10, 10)
|
||||
{
|
||||
m_Token = token;
|
||||
|
||||
AddPage( 0 );
|
||||
AddPage(0);
|
||||
|
||||
AddBackground( 0, 0, 240, 135, 0x2422 );
|
||||
AddHtmlLocalized( 15, 15, 210, 75, 1070972, 0x0, true ); // Click "OKAY" to redeem the following promotional item:
|
||||
TextDefinition.AddHtmlText( this, 15, 60, 210, 75, m_Token.ItemGumpName, false, false );
|
||||
AddBackground(0, 0, 240, 135, 0x2422);
|
||||
AddHtmlLocalized(15, 15, 210, 75, 1070972, 0x0, true); // Click "OKAY" to redeem the following promotional item:
|
||||
TextDefinition.AddHtmlText(this, 15, 60, 210, 75, m_Token.ItemGumpName, false, false);
|
||||
|
||||
AddButton( 160, 95, 0xF7, 0xF8, 1); //Okay
|
||||
AddButton( 90, 95, 0xF2, 0xF1, 0); //Cancel
|
||||
AddButton(160, 95, 0xF7, 0xF8, 1); // Okay
|
||||
AddButton(90, 95, 0xF2, 0xF1, 0); // Cancel
|
||||
}
|
||||
|
||||
public override void OnResponse( NetState sender, RelayInfo info )
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if ( info.ButtonID != 1 )
|
||||
if (info.ButtonID != 1)
|
||||
return;
|
||||
|
||||
Mobile from = sender.Mobile;
|
||||
|
||||
if ( !m_Token.IsChildOf( from.Backpack ) )
|
||||
if (!m_Token.IsChildOf(from.Backpack))
|
||||
{
|
||||
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
else
|
||||
{
|
||||
Item i = m_Token.CreateItemFor( from );
|
||||
Item i = m_Token.CreateItemFor(from);
|
||||
|
||||
if ( i != null )
|
||||
if (i != null)
|
||||
{
|
||||
from.BankBox.AddItem( i );
|
||||
TextDefinition.SendMessageTo( from, m_Token.ItemReceiveMessage );
|
||||
from.BankBox.AddItem(i);
|
||||
TextDefinition.SendMessageTo(from, m_Token.ItemReceiveMessage);
|
||||
m_Token.Delete();
|
||||
}
|
||||
}
|
||||
|
|
@ -117,17 +116,16 @@ namespace Server.Items
|
|||
|
||||
public class SoulstoneFragmentToken : PromotionalToken
|
||||
{
|
||||
|
||||
public override Item CreateItemFor( Mobile from )
|
||||
public override Item CreateItemFor(Mobile from)
|
||||
{
|
||||
if ( from?.Account != null )
|
||||
return new SoulstoneFragment( from.Account.ToString() );
|
||||
if (from?.Account != null)
|
||||
return new SoulstoneFragment(from.Account.ToString());
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public override TextDefinition ItemGumpName => 1070999;// <center>Soulstone Fragment</center>
|
||||
public override TextDefinition ItemName => 1071000;//soulstone fragment
|
||||
public override TextDefinition ItemName => 1071000;// soulstone fragment
|
||||
public override TextDefinition ItemReceiveMessage => 1070976; // A soulstone fragment has been created in your bank box.
|
||||
|
||||
[Constructible]
|
||||
|
|
@ -135,20 +133,20 @@ namespace Server.Items
|
|||
{
|
||||
}
|
||||
|
||||
public SoulstoneFragmentToken( Serial serial ) : base( serial )
|
||||
public SoulstoneFragmentToken(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(IGenericWriter writer )
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize( writer );
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( 0 );
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( IGenericReader reader )
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -156,9 +156,9 @@ namespace Server.Items
|
|||
Number = number;
|
||||
}
|
||||
|
||||
public Point3D Location{ get; }
|
||||
public Point3D Location { get; }
|
||||
|
||||
public int Number{ get; }
|
||||
public int Number { get; }
|
||||
}
|
||||
|
||||
public class PMList
|
||||
|
|
@ -241,20 +241,20 @@ namespace Server.Items
|
|||
Entries = entries;
|
||||
}
|
||||
|
||||
public int Number{ get; }
|
||||
public int Number { get; }
|
||||
|
||||
public int SelNumber{ get; }
|
||||
public int SelNumber { get; }
|
||||
|
||||
public Map Map{ get; }
|
||||
public Map Map { get; }
|
||||
|
||||
public PMEntry[] Entries{ get; }
|
||||
public PMEntry[] Entries { get; }
|
||||
}
|
||||
|
||||
public class MoongateGump : Gump
|
||||
{
|
||||
private PMList[] m_Lists;
|
||||
private Mobile m_Mobile;
|
||||
private Item m_Moongate;
|
||||
private readonly PMList[] m_Lists;
|
||||
private readonly Mobile m_Mobile;
|
||||
private readonly Item m_Moongate;
|
||||
|
||||
public MoongateGump(Mobile mobile, Item moongate) : base(100, 100)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ namespace Server.Items
|
|||
Amount = amount;
|
||||
}
|
||||
|
||||
|
||||
public Rope(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
|
@ -40,7 +39,6 @@ namespace Server.Items
|
|||
Amount = amount;
|
||||
}
|
||||
|
||||
|
||||
public IronWire(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
|
@ -73,7 +71,6 @@ namespace Server.Items
|
|||
Amount = amount;
|
||||
}
|
||||
|
||||
|
||||
public SilverWire(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
|
@ -106,7 +103,6 @@ namespace Server.Items
|
|||
Amount = amount;
|
||||
}
|
||||
|
||||
|
||||
public GoldWire(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
|
@ -139,7 +135,6 @@ namespace Server.Items
|
|||
Amount = amount;
|
||||
}
|
||||
|
||||
|
||||
public CopperWire(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
|
@ -172,7 +167,6 @@ namespace Server.Items
|
|||
Amount = amount;
|
||||
}
|
||||
|
||||
|
||||
public WhiteDriedFlowers(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
|
@ -202,7 +196,6 @@ namespace Server.Items
|
|||
Amount = amount;
|
||||
}
|
||||
|
||||
|
||||
public GreenDriedFlowers(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
|
@ -232,7 +225,6 @@ namespace Server.Items
|
|||
Amount = amount;
|
||||
}
|
||||
|
||||
|
||||
public DriedOnions(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
|
@ -262,7 +254,6 @@ namespace Server.Items
|
|||
Amount = amount;
|
||||
}
|
||||
|
||||
|
||||
public DriedHerbs(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ namespace Server.Items
|
|||
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
private Scales m_Item;
|
||||
private readonly Scales m_Item;
|
||||
|
||||
public InternalTarget(Scales item) : base(1, false, TargetFlags.None) => m_Item = item;
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ namespace Server.Items
|
|||
{
|
||||
IEntity root = item.RootParent;
|
||||
|
||||
if (root != null && root != from || item.Parent == from)
|
||||
if ((root != null && root != from) || item.Parent == from)
|
||||
{
|
||||
message = "You decide that item's current location is too awkward to get an accurate result.";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,13 +23,13 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool Active{ get; set; }
|
||||
public bool Active { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public string Word{ get; set; }
|
||||
public string Word { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Rectangle2D Destination{ get; set; }
|
||||
public Rectangle2D Destination { get; set; }
|
||||
|
||||
public override bool HandlesOnSpeech => true;
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ namespace Server.Items
|
|||
|
||||
public class SpecialBeardDyeGump : Gump
|
||||
{
|
||||
private static SpecialBeardDyeEntry[] m_Entries =
|
||||
private static readonly SpecialBeardDyeEntry[] m_Entries =
|
||||
{
|
||||
new SpecialBeardDyeEntry("*****", 12, 10),
|
||||
new SpecialBeardDyeEntry("*****", 32, 5),
|
||||
|
|
@ -60,7 +60,7 @@ namespace Server.Items
|
|||
new SpecialBeardDyeEntry("*****", 1153, 2)
|
||||
};
|
||||
|
||||
private SpecialBeardDye m_SpecialBeardDye;
|
||||
private readonly SpecialBeardDye m_SpecialBeardDye;
|
||||
|
||||
public SpecialBeardDyeGump(SpecialBeardDye dye) : base(0, 0)
|
||||
{
|
||||
|
|
@ -103,7 +103,7 @@ namespace Server.Items
|
|||
|
||||
if (!m_SpecialBeardDye.IsChildOf(m.Backpack))
|
||||
{
|
||||
m.SendLocalizedMessage(1042010); //You must have the objectin your backpack to use it.
|
||||
m.SendLocalizedMessage(1042010); // You must have the objectin your backpack to use it.
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -152,11 +152,11 @@ namespace Server.Items
|
|||
HueCount = hueCount;
|
||||
}
|
||||
|
||||
public string Name{ get; }
|
||||
public string Name { get; }
|
||||
|
||||
public int HueStart{ get; }
|
||||
public int HueStart { get; }
|
||||
|
||||
public int HueCount{ get; }
|
||||
public int HueCount { get; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ namespace Server.Items
|
|||
|
||||
public class SpecialHairDyeGump : Gump
|
||||
{
|
||||
private static SpecialHairDyeEntry[] m_Entries =
|
||||
private static readonly SpecialHairDyeEntry[] m_Entries =
|
||||
{
|
||||
new SpecialHairDyeEntry("*****", 12, 10),
|
||||
new SpecialHairDyeEntry("*****", 32, 5),
|
||||
|
|
@ -60,7 +60,7 @@ namespace Server.Items
|
|||
new SpecialHairDyeEntry("*****", 1153, 2)
|
||||
};
|
||||
|
||||
private SpecialHairDye m_SpecialHairDye;
|
||||
private readonly SpecialHairDye m_SpecialHairDye;
|
||||
|
||||
public SpecialHairDyeGump(SpecialHairDye dye) : base(0, 0)
|
||||
{
|
||||
|
|
@ -103,7 +103,7 @@ namespace Server.Items
|
|||
|
||||
if (!m_SpecialHairDye.IsChildOf(m.Backpack))
|
||||
{
|
||||
m.SendLocalizedMessage(1042010); //You must have the objectin your backpack to use it.
|
||||
m.SendLocalizedMessage(1042010); // You must have the objectin your backpack to use it.
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -153,11 +153,11 @@ namespace Server.Items
|
|||
HueCount = hueCount;
|
||||
}
|
||||
|
||||
public string Name{ get; }
|
||||
public string Name { get; }
|
||||
|
||||
public int HueStart{ get; }
|
||||
public int HueStart { get; }
|
||||
|
||||
public int HueCount{ get; }
|
||||
public int HueCount { get; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,10 +80,10 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_LabelNumber = reader.ReadEncodedInt();
|
||||
break;
|
||||
}
|
||||
{
|
||||
m_LabelNumber = reader.ReadEncodedInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -286,38 +286,38 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 4:
|
||||
{
|
||||
m_CriminalCheck = reader.ReadBool();
|
||||
goto case 3;
|
||||
}
|
||||
{
|
||||
m_CriminalCheck = reader.ReadBool();
|
||||
goto case 3;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
m_CombatCheck = reader.ReadBool();
|
||||
goto case 2;
|
||||
}
|
||||
{
|
||||
m_CombatCheck = reader.ReadBool();
|
||||
goto case 2;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
m_SourceEffect = reader.ReadBool();
|
||||
m_DestEffect = reader.ReadBool();
|
||||
m_Delay = reader.ReadTimeSpan();
|
||||
m_SoundID = reader.ReadEncodedInt();
|
||||
{
|
||||
m_SourceEffect = reader.ReadBool();
|
||||
m_DestEffect = reader.ReadBool();
|
||||
m_Delay = reader.ReadTimeSpan();
|
||||
m_SoundID = reader.ReadEncodedInt();
|
||||
|
||||
goto case 1;
|
||||
}
|
||||
goto case 1;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
m_Creatures = reader.ReadBool();
|
||||
{
|
||||
m_Creatures = reader.ReadBool();
|
||||
|
||||
goto case 0;
|
||||
}
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
m_Active = reader.ReadBool();
|
||||
m_PointDest = reader.ReadPoint3D();
|
||||
m_MapDest = reader.ReadMap();
|
||||
{
|
||||
m_Active = reader.ReadBool();
|
||||
m_PointDest = reader.ReadPoint3D();
|
||||
m_MapDest = reader.ReadMap();
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -451,14 +451,14 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_Skill = (SkillName)reader.ReadInt();
|
||||
m_Required = reader.ReadDouble();
|
||||
m_MessageString = reader.ReadString();
|
||||
m_MessageNumber = reader.ReadInt();
|
||||
{
|
||||
m_Skill = (SkillName)reader.ReadInt();
|
||||
m_Required = reader.ReadDouble();
|
||||
m_MessageString = reader.ReadString();
|
||||
m_MessageNumber = reader.ReadInt();
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -583,13 +583,13 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_Substring = reader.ReadString();
|
||||
m_Keyword = reader.ReadInt();
|
||||
m_Range = reader.ReadInt();
|
||||
{
|
||||
m_Substring = reader.ReadString();
|
||||
m_Keyword = reader.ReadInt();
|
||||
m_Range = reader.ReadInt();
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -609,19 +609,19 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int StartNumber{ get; set; }
|
||||
public int StartNumber { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public string StartMessage{ get; set; }
|
||||
public string StartMessage { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int ProgressNumber{ get; set; }
|
||||
public int ProgressNumber { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public string ProgressMessage{ get; set; }
|
||||
public string ProgressMessage { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool ShowTimeRemaining{ get; set; }
|
||||
public bool ShowTimeRemaining { get; set; }
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
|
|
@ -739,9 +739,9 @@ namespace Server.Items
|
|||
Timer = t;
|
||||
}
|
||||
|
||||
public WaitTeleporter Teleporter{ get; }
|
||||
public WaitTeleporter Teleporter { get; }
|
||||
|
||||
public Timer Timer{ get; }
|
||||
public Timer Timer { get; }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -765,7 +765,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public TimeSpan TimeoutDelay{ get; set; }
|
||||
public TimeSpan TimeoutDelay { get; set; }
|
||||
|
||||
public void StartTimer(Mobile m)
|
||||
{
|
||||
|
|
@ -864,7 +864,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public TimeoutTeleporter Teleporter{ get; set; }
|
||||
public TimeoutTeleporter Teleporter { get; set; }
|
||||
|
||||
public override string DefaultName => "timeout teleporter goal";
|
||||
|
||||
|
|
@ -1022,7 +1022,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
if (GetFlag(ConditionFlag.DenyFollowers) &&
|
||||
(m.Followers != 0 || m is PlayerMobile mobile && mobile.AutoStabled.Count != 0))
|
||||
(m.Followers != 0 || (m is PlayerMobile mobile && mobile.AutoStabled.Count != 0)))
|
||||
{
|
||||
m.SendLocalizedMessage(1077250); // No pets permitted beyond this point.
|
||||
return false;
|
||||
|
|
@ -1039,7 +1039,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
if (GetFlag(ConditionFlag.DenyPackEthereals) &&
|
||||
pack.FindItemByType(new []{typeof(EtherealMount), typeof(BaseImprisonedMobile)}) != null)
|
||||
pack.FindItemByType(new[] { typeof(EtherealMount), typeof(BaseImprisonedMobile) }) != null)
|
||||
{
|
||||
m.SendMessage("You must empty your backpack of ethereal mounts before proceeding.");
|
||||
return false;
|
||||
|
|
@ -1061,14 +1061,14 @@ namespace Server.Items
|
|||
case Layer.Backpack:
|
||||
case Layer.Mount:
|
||||
case Layer.Bank:
|
||||
{
|
||||
continue; // ignore
|
||||
}
|
||||
{
|
||||
continue; // ignore
|
||||
}
|
||||
default:
|
||||
{
|
||||
m.SendMessage("You must remove all of your equipment before proceeding.");
|
||||
return false;
|
||||
}
|
||||
{
|
||||
m.SendMessage("You must remove all of your equipment before proceeding.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (GetFlag(ConditionFlag.DenyTransformed) && m.IsBodyMod)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ using Server.Network;
|
|||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class TrashBarrel : Container, IChopable
|
||||
public class TrashBarrel : Container, IChoppable
|
||||
{
|
||||
private Timer m_Timer;
|
||||
|
||||
|
|
@ -130,7 +130,7 @@ namespace Server.Items
|
|||
|
||||
private class EmptyTimer : Timer
|
||||
{
|
||||
private TrashBarrel m_Barrel;
|
||||
private readonly TrashBarrel m_Barrel;
|
||||
|
||||
public EmptyTimer(TrashBarrel barrel) : base(TimeSpan.FromMinutes(3.0))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ namespace Server.Items
|
|||
|
||||
public override int LabelNumber => 1040001; // tribal berry
|
||||
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ namespace Server.Items
|
|||
Effects.PlaySound(GetWorldLocation(), Map, 0x48F);
|
||||
Effects.SendLocationEffect(GetWorldLocation(), Map, 0x3728, 10, 10, 0, 0);
|
||||
|
||||
if (0.3 > Utility.RandomDouble())
|
||||
if (Utility.RandomDouble() < 0.3)
|
||||
{
|
||||
if (ItemID == 0xF7E)
|
||||
from.SendMessage("You destroy the bone.");
|
||||
|
|
@ -71,7 +71,7 @@ namespace Server.Items
|
|||
|
||||
private class SpawnTimer : Timer
|
||||
{
|
||||
private Item m_Item;
|
||||
private readonly Item m_Item;
|
||||
|
||||
public SpawnTimer(Item item) : base(TimeSpan.FromSeconds(Utility.RandomMinMax(5, 10)))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -40,10 +40,10 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public string WarningString{ get; set; }
|
||||
public string WarningString { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int WarningNumber{ get; set; }
|
||||
public int WarningNumber { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Range
|
||||
|
|
@ -57,7 +57,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public TimeSpan ResetDelay{ get; set; }
|
||||
public TimeSpan ResetDelay { get; set; }
|
||||
|
||||
public virtual bool OnlyToTriggerer => false;
|
||||
public virtual int NeighborRange => 5;
|
||||
|
|
@ -142,14 +142,14 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
WarningString = reader.ReadString();
|
||||
WarningNumber = reader.ReadInt();
|
||||
m_Range = reader.ReadInt();
|
||||
ResetDelay = reader.ReadTimeSpan();
|
||||
{
|
||||
WarningString = reader.ReadString();
|
||||
WarningNumber = reader.ReadInt();
|
||||
m_Range = reader.ReadInt();
|
||||
ResetDelay = reader.ReadTimeSpan();
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -167,10 +167,10 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public string HintString{ get; set; }
|
||||
public string HintString { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int HintNumber{ get; set; }
|
||||
public int HintNumber { get; set; }
|
||||
|
||||
public override bool OnlyToTriggerer => true;
|
||||
|
||||
|
|
@ -198,12 +198,12 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
HintString = reader.ReadString();
|
||||
HintNumber = reader.ReadInt();
|
||||
{
|
||||
HintString = reader.ReadString();
|
||||
HintNumber = reader.ReadInt();
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ namespace Server.Items
|
|||
{
|
||||
Hue = 0x498;
|
||||
Visible = false;
|
||||
//this.Movable = false;
|
||||
// this.Movable = false;
|
||||
if (prev != null)
|
||||
prev.NextPoint = this;
|
||||
}
|
||||
|
|
@ -74,10 +74,10 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_Next = reader.ReadItem() as WayPoint;
|
||||
break;
|
||||
}
|
||||
{
|
||||
m_Next = reader.ReadItem() as WayPoint;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -93,7 +93,7 @@ namespace Server.Items
|
|||
|
||||
public class NextPointTarget : Target
|
||||
{
|
||||
private WayPoint m_Point;
|
||||
private readonly WayPoint m_Point;
|
||||
|
||||
public NextPointTarget(WayPoint pt) : base(-1, false, TargetFlags.None) => m_Point = pt;
|
||||
|
||||
|
|
@ -108,7 +108,7 @@ namespace Server.Items
|
|||
|
||||
public class WayPointSeqTarget : Target
|
||||
{
|
||||
private WayPoint m_Last;
|
||||
private readonly WayPoint m_Last;
|
||||
|
||||
public WayPointSeqTarget(WayPoint last) : base(-1, true, TargetFlags.None) => m_Last = last;
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
public static int[] Sounds{ get; } = { 0x505, 0x506, 0x507 };
|
||||
public static int[] Sounds { get; } = { 0x505, 0x506, 0x507 };
|
||||
|
||||
public override bool HandlesOnMovement => m_TurnedOn && IsLockedDown;
|
||||
|
||||
|
|
@ -78,16 +78,16 @@ namespace Server.Items
|
|||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_TurnedOn = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
{
|
||||
m_TurnedOn = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class OnOffGump : Gump
|
||||
{
|
||||
private BaseWindChimes m_Chimes;
|
||||
private readonly BaseWindChimes m_Chimes;
|
||||
|
||||
public OnOffGump(BaseWindChimes chimes) : base(150, 200)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue