diff --git a/Projects/Server/Buffers/CircularBufferWriter.cs b/Projects/Server/Buffers/CircularBufferWriter.cs
index 2b017732d..8850ad5f8 100644
--- a/Projects/Server/Buffers/CircularBufferWriter.cs
+++ b/Projects/Server/Buffers/CircularBufferWriter.cs
@@ -17,7 +17,6 @@ using System.Buffers.Binary;
using System.IO;
using System.Runtime.CompilerServices;
using System.Text;
-using Server;
using Server.Network;
using Server.Text;
diff --git a/Projects/Server/Buffers/SpanWriter.cs b/Projects/Server/Buffers/SpanWriter.cs
index 21460a427..36666271e 100644
--- a/Projects/Server/Buffers/SpanWriter.cs
+++ b/Projects/Server/Buffers/SpanWriter.cs
@@ -20,7 +20,6 @@ using System.IO;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
-using Server;
using Server.Network;
using Server.Text;
diff --git a/Projects/Server/Gumps/Gump.cs b/Projects/Server/Gumps/Gump.cs
index 8f45e531c..126cd306d 100644
--- a/Projects/Server/Gumps/Gump.cs
+++ b/Projects/Server/Gumps/Gump.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Text;
using Server.Network;
using Server.Text;
diff --git a/Projects/Server/Mobiles/Mobile.cs b/Projects/Server/Mobiles/Mobile.cs
index 6c2d7d829..c81daced5 100644
--- a/Projects/Server/Mobiles/Mobile.cs
+++ b/Projects/Server/Mobiles/Mobile.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Diagnostics;
using System.IO;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
diff --git a/Projects/Server/Network/PacketHandler.cs b/Projects/Server/Network/PacketHandler.cs
index 2d1d38b15..664119b30 100644
--- a/Projects/Server/Network/PacketHandler.cs
+++ b/Projects/Server/Network/PacketHandler.cs
@@ -1,5 +1,3 @@
-using System;
-
namespace Server.Network
{
public delegate void OnPacketReceive(NetState state, CircularBufferReader reader, ref int packetLength);
diff --git a/Projects/Server/Network/Packets/IncomingAccountPackets.cs b/Projects/Server/Network/Packets/IncomingAccountPackets.cs
index 383fac056..3041ec8f4 100644
--- a/Projects/Server/Network/Packets/IncomingAccountPackets.cs
+++ b/Projects/Server/Network/Packets/IncomingAccountPackets.cs
@@ -57,9 +57,12 @@ namespace Server.Network
public static void CreateCharacter(NetState state, CircularBufferReader reader, ref int packetLength)
{
+ reader.Seek(9, SeekOrigin.Current);
+ /*
var unk1 = reader.ReadInt32();
var unk2 = reader.ReadInt32();
int unk3 = reader.ReadByte();
+ */
var name = reader.ReadAscii(30);
reader.Seek(2, SeekOrigin.Current);
@@ -113,8 +116,11 @@ namespace Server.Network
int hairHuef = reader.ReadInt16();
reader.ReadByte();
int cityIndex = reader.ReadByte();
+ reader.Seek(8, SeekOrigin.Current);
+ /*
var charSlot = reader.ReadInt32();
var clientIP = reader.ReadInt32();
+ */
int shirtHue = reader.ReadInt16();
int pantsHue = reader.ReadInt16();
@@ -141,64 +147,63 @@ namespace Server.Network
if (info == null || a == null || cityIndex < 0 || cityIndex >= info.Length)
{
state.Disconnect("Invalid city selected during character creation.");
+ return;
+ }
+
+ // Check if anyone is using this account
+ for (var i = 0; i < a.Length; ++i)
+ {
+ var check = a[i];
+
+ if (check != null && check.Map != Map.Internal)
+ {
+ state.WriteConsole("Account in use");
+ state.SendPopupMessage(PMMessage.CharInWorld);
+ return;
+ }
+ }
+
+ state.Flags = (ClientFlags)flags;
+
+ var args = new CharacterCreatedEventArgs(
+ state,
+ a,
+ name,
+ female,
+ hue,
+ str,
+ dex,
+ intl,
+ info[cityIndex],
+ skills,
+ shirtHue,
+ pantsHue,
+ hairVal,
+ hairHue,
+ hairValf,
+ hairHuef,
+ prof,
+ race
+ );
+
+ state.SendClientVersionRequest();
+
+ state.BlockAllPackets = true;
+
+ EventSink.InvokeCharacterCreated(args);
+
+ var m = args.Mobile;
+
+ if (m != null)
+ {
+ state.Mobile = m;
+ m.NetState = state;
+ new LoginTimer(state, m).Start();
}
else
{
- // Check if anyone is using this account
- for (var i = 0; i < a.Length; ++i)
- {
- var check = a[i];
-
- if (check != null && check.Map != Map.Internal)
- {
- state.WriteConsole("Account in use");
- state.SendPopupMessage(PMMessage.CharInWorld);
- return;
- }
- }
-
- state.Flags = (ClientFlags)flags;
-
- var args = new CharacterCreatedEventArgs(
- state,
- a,
- name,
- female,
- hue,
- str,
- dex,
- intl,
- info[cityIndex],
- skills,
- shirtHue,
- pantsHue,
- hairVal,
- hairHue,
- hairValf,
- hairHuef,
- prof,
- race
- );
-
- state.SendClientVersionRequest();
-
- state.BlockAllPackets = true;
-
- EventSink.InvokeCharacterCreated(args);
-
- var m = args.Mobile;
-
- if (m != null)
- {
- state.Mobile = m;
- m.NetState = state;
- new LoginTimer(state, m).Start();
- }
- else
- {
- state.BlockAllPackets = false;
- state.Disconnect("Character creation blocked.");
- }
+ state.BlockAllPackets = false;
+ state.Disconnect("Character creation blocked.");
}
}
@@ -239,9 +244,9 @@ namespace Server.Network
public static void PlayCharacter(NetState state, CircularBufferReader reader, ref int packetLength)
{
- reader.ReadInt32(); // 0xEDEDEDED
+ reader.Seek(4, SeekOrigin.Current); // 0xEDEDEDED
- var name = reader.ReadAscii(30);
+ reader.Seek(30, SeekOrigin.Current); // var name = reader.ReadAscii(30);
reader.Seek(2, SeekOrigin.Current);
@@ -250,50 +255,49 @@ namespace Server.Network
reader.Seek(24, SeekOrigin.Current);
var charSlot = reader.ReadInt32();
- var clientIP = reader.ReadInt32();
+ reader.Seek(4, SeekOrigin.Current); // var clientIP = reader.ReadInt32();
var a = state.Account;
if (a == null || charSlot < 0 || charSlot >= a.Length)
{
state.Disconnect("Invalid character slot selected.");
+ return;
}
- else
+
+ var m = a[charSlot];
+
+ // Check if anyone is using this account
+ for (var i = 0; i < a.Length; ++i)
{
- var m = a[charSlot];
+ var check = a[i];
- // Check if anyone is using this account
- for (var i = 0; i < a.Length; ++i)
+ if (check != null && check.Map != Map.Internal && check != m)
{
- var check = a[i];
-
- if (check != null && check.Map != Map.Internal && check != m)
- {
- state.WriteConsole("Account in use");
- state.SendPopupMessage(PMMessage.CharInWorld);
- return;
- }
- }
-
- if (m == null)
- {
- state.Disconnect("Empty character slot selected.");
+ state.WriteConsole("Account in use");
+ state.SendPopupMessage(PMMessage.CharInWorld);
return;
}
-
- m.NetState?.Disconnect("Character selected for a player already logged in.");
-
- state.SendClientVersionRequest();
-
- state.BlockAllPackets = true;
-
- state.Flags = (ClientFlags)flags;
-
- state.Mobile = m;
- m.NetState = state;
-
- new LoginTimer(state, m).Start();
}
+
+ if (m == null)
+ {
+ state.Disconnect("Empty character slot selected.");
+ return;
+ }
+
+ m.NetState?.Disconnect("Character selected for a player already logged in.");
+
+ state.SendClientVersionRequest();
+
+ state.BlockAllPackets = true;
+
+ state.Flags = (ClientFlags)flags;
+
+ state.Mobile = m;
+ m.NetState = state;
+
+ new LoginTimer(state, m).Start();
}
public static void DoLogin(this NetState state, Mobile m)
@@ -523,29 +527,39 @@ namespace Server.Network
private class LoginTimer : Timer
{
- private readonly Mobile m_Mobile;
- private readonly NetState m_State;
+ private readonly Mobile _mobile;
+ private readonly NetState _state;
public LoginTimer(NetState state, Mobile m) : base(TimeSpan.FromSeconds(1.0), TimeSpan.FromSeconds(1.0))
{
- m_State = state;
- m_Mobile = m;
+ _state = state;
+ _mobile = m;
}
protected override void OnTick()
{
- if (m_State == null)
+ if (_state != null)
{
- Stop();
- return;
+ if (_state.Account == null)
+ {
+ _state.Disconnect("Account was deleted during the login process.");
+ }
+ else if (_mobile == null)
+ {
+ _state.Disconnect("Player was deleted during the login process.");
+ }
+ else if (_state.Version != null)
+ {
+ _state.BlockAllPackets = false;
+ DoLogin(_state, _mobile);
+ }
+ else // Waiting to receive the client version before we continue the login process
+ {
+ return;
+ }
}
- if (m_State.Version != null)
- {
- m_State.BlockAllPackets = false;
- DoLogin(m_State, m_Mobile);
- Stop();
- }
+ Stop();
}
}
}
diff --git a/Projects/Server/Network/Packets/IncomingPackets.cs b/Projects/Server/Network/Packets/IncomingPackets.cs
index 67f4f29fa..a99a86053 100644
--- a/Projects/Server/Network/Packets/IncomingPackets.cs
+++ b/Projects/Server/Network/Packets/IncomingPackets.cs
@@ -13,7 +13,6 @@
* along with this program. If not, see . *
*************************************************************************/
-using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
diff --git a/Projects/Server/Network/TcpServer.cs b/Projects/Server/Network/TcpServer.cs
index 12ab2a709..dc44702d5 100644
--- a/Projects/Server/Network/TcpServer.cs
+++ b/Projects/Server/Network/TcpServer.cs
@@ -20,7 +20,6 @@ using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
-using Server.Exceptions;
namespace Server.Network
{
diff --git a/Projects/Server/Skills.cs b/Projects/Server/Skills.cs
index c685f0765..f6c6f329e 100644
--- a/Projects/Server/Skills.cs
+++ b/Projects/Server/Skills.cs
@@ -1,6 +1,4 @@
using System;
-using System.Collections;
-using System.Collections.Generic;
using System.Runtime.CompilerServices;
using Server.Network;
diff --git a/Projects/Server/Timer/Timer.cs b/Projects/Server/Timer/Timer.cs
index a9c23aab5..33e959420 100644
--- a/Projects/Server/Timer/Timer.cs
+++ b/Projects/Server/Timer/Timer.cs
@@ -17,7 +17,6 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
-using System.Threading.Tasks;
using Server.Diagnostics;
namespace Server
diff --git a/Projects/UOContent.Tests/Tests/Multis/Boats/Packets.cs b/Projects/UOContent.Tests/Tests/Multis/Boats/Packets.cs
index 730d40650..32fd230f9 100644
--- a/Projects/UOContent.Tests/Tests/Multis/Boats/Packets.cs
+++ b/Projects/UOContent.Tests/Tests/Multis/Boats/Packets.cs
@@ -1,8 +1,6 @@
using System.Collections.Generic;
using System.IO;
-using System.Linq;
using Server;
-using Server.Collections;
using Server.Items;
using Server.Multis;
using Server.Network;
diff --git a/Projects/UOContent/Accounting/AccountHandler.cs b/Projects/UOContent/Accounting/AccountHandler.cs
index 85fc714ed..b2d8c6caa 100644
--- a/Projects/UOContent/Accounting/AccountHandler.cs
+++ b/Projects/UOContent/Accounting/AccountHandler.cs
@@ -403,10 +403,8 @@ namespace Server.Misc
Console.WriteLine("Login: {0}: Past IP limit threshold", e.State);
- using (var op = new StreamWriter("ipLimits.log", true))
- {
- op.WriteLine("{0}\tPast IP limit threshold\t{1}", e.State, DateTime.UtcNow);
- }
+ using var op = new StreamWriter("ipLimits.log", true);
+ op.WriteLine("{0}\tPast IP limit threshold\t{1}", e.State, DateTime.UtcNow);
return;
}
@@ -414,7 +412,7 @@ namespace Server.Misc
var un = e.Username;
var pw = e.Password;
- if (!(Accounts.GetAccount(un) is Account acct))
+ if (Accounts.GetAccount(un) is not Account acct)
{
e.Accepted = false;
}
diff --git a/Projects/UOContent/Accounting/Security/SHA2PasswordProtection.cs b/Projects/UOContent/Accounting/Security/SHA2PasswordProtection.cs
index a7f5cedb2..02d333aa2 100644
--- a/Projects/UOContent/Accounting/Security/SHA2PasswordProtection.cs
+++ b/Projects/UOContent/Accounting/Security/SHA2PasswordProtection.cs
@@ -15,7 +15,6 @@
using System;
using System.Security.Cryptography;
-using System.Text;
using Server.Text;
namespace Server.Accounting.Security
diff --git a/Projects/UOContent/Items/Books/BookPackets.cs b/Projects/UOContent/Items/Books/BookPackets.cs
index 21b1d66f1..ef6b0ae66 100644
--- a/Projects/UOContent/Items/Books/BookPackets.cs
+++ b/Projects/UOContent/Items/Books/BookPackets.cs
@@ -13,7 +13,6 @@
* along with this program. If not, see . *
*************************************************************************/
-using System;
using System.Buffers;
using System.IO;
using Server.Network;
diff --git a/Projects/UOContent/Items/Misc/Corpses/Corpse.cs b/Projects/UOContent/Items/Misc/Corpses/Corpse.cs
index e4c91c05f..46bdf6f09 100644
--- a/Projects/UOContent/Items/Misc/Corpses/Corpse.cs
+++ b/Projects/UOContent/Items/Misc/Corpses/Corpse.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Runtime.CompilerServices;
using Server.ContextMenus;
using Server.Engines.PartySystem;
using Server.Engines.Quests.Doom;
diff --git a/Projects/UOContent/Items/Weapons/Abilities/FrenziedWhirlwind.cs b/Projects/UOContent/Items/Weapons/Abilities/FrenziedWhirlwind.cs
index a9072f8f7..c36ff89b2 100644
--- a/Projects/UOContent/Items/Weapons/Abilities/FrenziedWhirlwind.cs
+++ b/Projects/UOContent/Items/Weapons/Abilities/FrenziedWhirlwind.cs
@@ -1,7 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Linq;
-using Server.Mobiles;
using Server.Spells;
namespace Server.Items
diff --git a/Projects/UOContent/Misc/PacketThrottles.cs b/Projects/UOContent/Misc/PacketThrottles.cs
index c4b226b14..40293221b 100644
--- a/Projects/UOContent/Misc/PacketThrottles.cs
+++ b/Projects/UOContent/Misc/PacketThrottles.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Globalization;
using System.IO;
using Server.Json;
using Server.Mobiles;
diff --git a/Projects/UOContent/Multis/Boats/BaseBoat.cs b/Projects/UOContent/Multis/Boats/BaseBoat.cs
index 6e64cac73..e339342b3 100644
--- a/Projects/UOContent/Multis/Boats/BaseBoat.cs
+++ b/Projects/UOContent/Multis/Boats/BaseBoat.cs
@@ -1,9 +1,7 @@
using System;
-using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
-using Server.Collections;
using Server.Items;
using Server.Multis.Boats;
using Server.Network;