diff --git a/Data/objects.xml b/Data/objects.xml
index 25d6a581d..537439ead 100644
--- a/Data/objects.xml
+++ b/Data/objects.xml
@@ -24,16 +24,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -50,43 +73,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -143,18 +189,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -170,29 +243,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -222,12 +333,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -240,8 +351,8 @@
-
-
+
+
@@ -287,78 +398,82 @@
-
-
+
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
-
+
+
-
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
+
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
-
-
+
+
+
+
-
-
+
+
-
+
-
-
-
-
-
+
+
+
+
+
+
+
@@ -384,8 +499,10 @@
+
+
@@ -402,10 +519,17 @@
+
+
+
+
+
+
+
@@ -416,10 +540,19 @@
+
+
+
+
+
+
+
+
+
@@ -433,16 +566,33 @@
+
+
+
-
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
@@ -452,21 +602,45 @@
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
@@ -495,9 +669,9 @@
-
+
-
+
@@ -515,7 +689,7 @@
-
+
@@ -529,28 +703,28 @@
-
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
+
+
+
@@ -613,14 +787,16 @@
+
+
-
+
-
+
@@ -647,6 +823,7 @@
+
@@ -657,6 +834,8 @@
+
+
@@ -664,32 +843,42 @@
+
+
+
+
+
+
+
+
+
+
@@ -699,13 +888,16 @@
+
+
+
@@ -713,6 +905,7 @@
+
@@ -722,6 +915,7 @@
+
@@ -737,22 +931,17 @@
-
+
-
-
-
-
-
@@ -780,7 +969,6 @@
-
@@ -830,20 +1018,26 @@
+
+
+
+
+
+
@@ -859,6 +1053,7 @@
+
@@ -866,9 +1061,11 @@
+
+
@@ -879,6 +1076,11 @@
+
+
+
+
+
@@ -981,14 +1183,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1021,8 +1241,8 @@
-
-
+
+
@@ -1059,13 +1279,13 @@
-
-
-
-
+
+
+
+
-
+
@@ -1129,13 +1349,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1150,6 +1383,8 @@
+
+
@@ -1157,6 +1392,7 @@
+
@@ -1173,6 +1409,7 @@
+
@@ -1187,6 +1424,7 @@
+
@@ -1196,19 +1434,41 @@
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1216,16 +1476,20 @@
+
-
+
+
+
+
-
+
@@ -1236,33 +1500,151 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1276,7 +1658,10 @@
+
+
+
@@ -1284,126 +1669,211 @@
-
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1412,6 +1882,11 @@
+
+
+
+
+
@@ -1424,77 +1899,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
-
+
@@ -1503,10 +2036,18 @@
+
+
+
+
+
+
+
+
@@ -1515,11 +2056,20 @@
+
+
+
+
+
+
+
+
+
@@ -1531,42 +2081,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
@@ -1594,6 +2183,7 @@
+
@@ -1621,12 +2211,16 @@
+
+
+
+
@@ -1636,10 +2230,12 @@
-
+
+
+
@@ -1658,6 +2254,7 @@
+
@@ -1671,6 +2268,8 @@
+
+
@@ -1689,17 +2288,23 @@
+
+
+
+
+
+
@@ -1724,7 +2329,13 @@
+
+
+
+
+
+
@@ -1732,6 +2343,7 @@
+
@@ -1741,13 +2353,19 @@
+
+
+
+
+
+
@@ -1768,7 +2386,10 @@
+
+
+
@@ -1779,12 +2400,14 @@
+
+
-
+
@@ -1796,6 +2419,7 @@
+
@@ -1803,6 +2427,7 @@
+
@@ -1819,21 +2444,30 @@
+
+
+
+
+
+
+
+
+
@@ -1844,6 +2478,7 @@
+
@@ -1853,6 +2488,7 @@
+
@@ -1863,21 +2499,31 @@
+
+
+
+
+
+
+
+
+
+
@@ -1911,12 +2557,17 @@
+
+
+
+
+
@@ -1924,9 +2575,11 @@
+
+
@@ -1936,8 +2589,11 @@
+
+
+
@@ -1947,6 +2603,8 @@
+
+
@@ -1954,111 +2612,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
@@ -2068,57 +2782,66 @@
+
+
+
-
+
+
-
+
+
+
-
+
+
+
-
+
-
+
-
+
+
@@ -2133,12 +2856,14 @@
+
-
-
+
+
+
@@ -2146,6 +2871,9 @@
+
+
+
@@ -2164,7 +2892,7 @@
-
+
@@ -2212,7 +2940,6 @@
-
@@ -2236,6 +2963,7 @@
+
@@ -2245,6 +2973,7 @@
+
@@ -2263,20 +2992,22 @@
+
-
+
-
-
+
+
+
-
+
@@ -2290,6 +3021,7 @@
+
@@ -2315,10 +3047,11 @@
-
+
-
-
+
+
+
@@ -2328,23 +3061,27 @@
+
-
+
+
-
+
-
+
+
+
@@ -2353,106 +3090,295 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
@@ -2470,6 +3396,11 @@
+
+
+
+
+
@@ -2487,156 +3418,173 @@
+
+
+
-
+
+
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
+
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
diff --git a/Server/Mobile.cs b/Server/Mobile.cs
index 8984146c2..896e2e2f6 100644
--- a/Server/Mobile.cs
+++ b/Server/Mobile.cs
@@ -10257,24 +10257,9 @@ namespace Server
Packet hbpPacket = null;
Packet hbyPacket = null;
- // 9 Separate Locks.. Feels Dirty
- object hitsPacketLock = new object();
- object statPacketTrueLock = new object();
- object statPacketFalseLock = new object();
- object deadPacketLock = new object();
- object hairPacketLock = new object();
- object facialhairPacketLock = new object();
- object hbpPacketLock = new object();
- object hbyPacketLock = new object();
- object cacheSync = new object();
-
IPooledEnumerable eable = m.Map.GetClientsInRange(m.m_Location);
-#if Framework_4_0
- Parallel.ForEach( eable.Cast(), state => {
-#else
foreach ( NetState state in eable ) {
-#endif
beholder = state.Mobile;
if( beholder != m && beholder.CanSee( m ) )
@@ -10292,11 +10277,8 @@ namespace Server
if( m.IsDeadBondedPet )
{
- lock (deadPacketLock)
- {
- if (deadPacket == null)
- deadPacket = Packet.Acquire(new BondedStatus(0, m.m_Serial, 1));
- }
+ if (deadPacket == null)
+ deadPacket = Packet.Acquire(new BondedStatus(0, m.m_Serial, 1));
state.Send( deadPacket );
}
@@ -10307,35 +10289,24 @@ namespace Server
{
int noto = Notoriety.Compute( beholder, m );
- Packet p;
+ Packet p = cache[0][noto];
- lock (cacheSync)
- {
- p = cache[0][noto];
-
- if (p == null)
- cache[0][noto] = p = Packet.Acquire(new MobileMoving(m, noto));
- }
+ if (p == null)
+ cache[0][noto] = p = Packet.Acquire(new MobileMoving(m, noto));
state.Send( p );
}
if ( sendHealthbarPoison ) {
- lock (hbpPacketLock)
- {
- if (hbpPacket == null)
- hbpPacket = Packet.Acquire(new HealthbarPoison(m));
- }
+ if (hbpPacket == null)
+ hbpPacket = Packet.Acquire(new HealthbarPoison(m));
state.Send( hbpPacket );
}
if ( sendHealthbarYellow ) {
- lock (hbyPacketLock)
- {
- if (hbyPacket == null)
- hbyPacket = Packet.Acquire(new HealthbarYellow(m));
- }
+ if (hbyPacket == null)
+ hbyPacket = Packet.Acquire(new HealthbarYellow(m));
state.Send( hbyPacket );
}
@@ -10344,15 +10315,10 @@ namespace Server
{
int noto = Notoriety.Compute( beholder, m );
- Packet p;
+ Packet p = cache[1][noto];
- lock (cacheSync)
- {
- p = cache[1][noto];
-
- if (p == null)
- cache[1][noto] = p = Packet.Acquire(new MobileMovingOld(m, noto));
- }
+ if (p == null)
+ cache[1][noto] = p = Packet.Acquire(new MobileMovingOld(m, noto));
state.Send( p );
}
@@ -10362,45 +10328,34 @@ namespace Server
{
if( m.CanBeRenamedBy( beholder ) )
{
- lock (statPacketTrueLock)
- {
- if (statPacketTrue == null)
- statPacketTrue = Packet.Acquire(new MobileStatusCompact(true, m));
- }
+ if (statPacketTrue == null)
+ statPacketTrue = Packet.Acquire(new MobileStatusCompact(true, m));
state.Send( statPacketTrue );
}
else
{
- lock (statPacketFalseLock)
- {
- if (statPacketFalse == null)
- statPacketFalse = Packet.Acquire(new MobileStatusCompact(false, m));
- }
+ if (statPacketFalse == null)
+ statPacketFalse = Packet.Acquire(new MobileStatusCompact(false, m));
state.Send( statPacketFalse );
}
}
else if( sendHits )
{
- lock (hitsPacketLock)
- {
- if (hitsPacket == null)
- hitsPacket = Packet.Acquire(new MobileHitsN(m));
- }
+ if (hitsPacket == null)
+ hitsPacket = Packet.Acquire(new MobileHitsN(m));
state.Send( hitsPacket );
}
if( sendHair )
{
- lock (hairPacketLock) {
- if (hairPacket == null) {
- if (removeHair)
- hairPacket = Packet.Acquire(new RemoveHair(m));
- else
- hairPacket = Packet.Acquire(new HairEquipUpdate(m));
- }
+ if (hairPacket == null) {
+ if (removeHair)
+ hairPacket = Packet.Acquire(new RemoveHair(m));
+ else
+ hairPacket = Packet.Acquire(new HairEquipUpdate(m));
}
state.Send( hairPacket );
@@ -10408,13 +10363,11 @@ namespace Server
if( sendFacialHair )
{
- lock (facialhairPacketLock) {
- if (facialhairPacket == null) {
- if (removeFacialHair)
- facialhairPacket = Packet.Acquire(new RemoveFacialHair(m));
- else
- facialhairPacket = Packet.Acquire(new FacialHairEquipUpdate(m));
- }
+ if (facialhairPacket == null) {
+ if (removeFacialHair)
+ facialhairPacket = Packet.Acquire(new RemoveFacialHair(m));
+ else
+ facialhairPacket = Packet.Acquire(new FacialHairEquipUpdate(m));
}
state.Send( facialhairPacket );
@@ -10424,9 +10377,6 @@ namespace Server
state.Send(this.OPLPacket);
}
}
-#if Framework_4_0
- );
-#endif
Packet.Release( hitsPacket );
Packet.Release( statPacketTrue );
@@ -10463,7 +10413,7 @@ namespace Server
int count = m_DeltaQueue.Count;
int index = 0;
- while( m_DeltaQueue.Count > 0 && index++ < count )
+ while (m_DeltaQueue.Count > 0 && index++ < count)
m_DeltaQueue.Dequeue().ProcessDelta();
#endif
}