Adds style cop (#109)

This commit is contained in:
Kamron Batman 2020-04-26 00:16:02 -07:00 committed by GitHub
parent 3e715bcb60
commit 556a17aba8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
1725 changed files with 33831 additions and 38046 deletions

View file

@ -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)

View file

@ -62,10 +62,10 @@ namespace Server.Items
switch (version)
{
case 0:
{
m_Worth = reader.ReadInt();
break;
}
{
m_Worth = reader.ReadInt();
break;
}
}
}

View file

@ -14,7 +14,6 @@ namespace Server.Items
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);

View file

@ -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;

View file

@ -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);
}
}
}

View file

@ -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))
{

View file

@ -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;

View file

@ -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)

View file

@ -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;
}
}
}

View file

@ -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;

View file

@ -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)
{

View file

@ -7,6 +7,6 @@ namespace Server
{
public CorpseNameAttribute(string name) => Name = name;
public string Name{ get; }
public string Name { get; }
}
}

View file

@ -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)
{

View file

@ -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);
}
}
}

View file

@ -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;

View file

@ -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;
}
}
}
}

View file

@ -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)
{

View file

@ -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);

View file

@ -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)
{

View file

@ -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
{

View file

@ -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)

View file

@ -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!");

View file

@ -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; }
}
}
}

View file

@ -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();

View file

@ -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)
{

View file

@ -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;

View file

@ -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;

View file

@ -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);
}
}
}

View file

@ -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))

View file

@ -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))
{

View file

@ -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);

View file

@ -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();
}
}
}
}

View file

@ -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
}
}
}

View file

@ -18,7 +18,7 @@ namespace Server.Items
{
base.Serialize(writer);
writer.Write(0); //version
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)

View file

@ -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)
{
}
}

View file

@ -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))
{

View file

@ -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();
}

View file

@ -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)
{

View file

@ -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)
{
}

View file

@ -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.";
}

View file

@ -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;

View file

@ -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; }
}
}
}

View file

@ -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; }
}
}
}

View file

@ -80,10 +80,10 @@ namespace Server.Items
switch (version)
{
case 0:
{
m_LabelNumber = reader.ReadEncodedInt();
break;
}
{
m_LabelNumber = reader.ReadEncodedInt();
break;
}
}
}
}

View file

@ -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)

View file

@ -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))
{

View file

@ -17,7 +17,6 @@ namespace Server.Items
public override int LabelNumber => 1040001; // tribal berry
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);

View file

@ -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)))
{

View file

@ -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;
}
}
}
}

View file

@ -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;

View file

@ -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)
{