diff --git a/Source/Game/Chat/CommandArgs.cs b/Source/Game/Chat/CommandArgs.cs index 030454909..1528abf07 100644 --- a/Source/Game/Chat/CommandArgs.cs +++ b/Source/Game/Chat/CommandArgs.cs @@ -70,6 +70,9 @@ namespace Game.Chat if (type.IsEnum) type = type.GetEnumUnderlyingType(); + if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) + type = Nullable.GetUnderlyingType(type); + switch (Type.GetTypeCode(type)) { case TypeCode.SByte: diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 11b63b76e..897d18410 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -6247,14 +6247,14 @@ namespace Game.Entities void UpdateVisibilityOf_helper(List s64, T target, List v) where T : WorldObject { + s64.Add(target.GetGUID()); + switch (target.GetTypeId()) { case TypeId.Unit: - s64.Add(target.GetGUID()); v.Add(target.ToCreature()); break; case TypeId.Player: - s64.Add(target.GetGUID()); v.Add(target.ToPlayer()); break; } diff --git a/Source/Game/Entities/Unit/Unit.cs b/Source/Game/Entities/Unit/Unit.cs index af6437e96..23fc42e4c 100644 --- a/Source/Game/Entities/Unit/Unit.cs +++ b/Source/Game/Entities/Unit/Unit.cs @@ -2310,7 +2310,7 @@ namespace Game.Entities WorldPacket buffer = new(); - UpdateMask mask = new(191); + UpdateMask mask = new(194); m_unitData.AppendAllowedFieldsMaskForFlag(mask, flags); m_unitData.WriteUpdate(buffer, mask, true, this, target); diff --git a/Source/Game/Maps/TransportManager.cs b/Source/Game/Maps/TransportManager.cs index f7aae8e8e..a75b5bc1a 100644 --- a/Source/Game/Maps/TransportManager.cs +++ b/Source/Game/Maps/TransportManager.cs @@ -73,6 +73,7 @@ namespace Game.Maps TransportTemplate transport = new(); GeneratePath(goInfo, transport); + _transportTemplates[entry] = transport; ++count; } while (result.NextRow()); @@ -161,10 +162,11 @@ namespace Game.Maps spawn.PhaseGroup = phaseGroupId; foreach (uint mapId in transportTemplate.MapIds) - _transportsByMap[mapId].Add(spawn); + _transportsByMap.Add(mapId, spawn); _transportSpawns[guid] = spawn; + count++; } while (result.NextRow()); } @@ -554,7 +556,7 @@ namespace Game.Maps var segmentIndex = 0; double distanceMoved = 0.0; bool isOnPause = false; - for (segmentIndex = 0; segmentIndex < leg.Segments.Count; ++segmentIndex) + for (segmentIndex = 0; segmentIndex < leg.Segments.Count - 1; ++segmentIndex) { var segment = leg.Segments[segmentIndex]; if (time < segment.SegmentEndArrivalTimestamp) diff --git a/Source/Game/Movement/Spline.cs b/Source/Game/Movement/Spline.cs index 8c3e08f9d..1aadcf71f 100644 --- a/Source/Game/Movement/Spline.cs +++ b/Source/Game/Movement/Spline.cs @@ -270,7 +270,7 @@ namespace Game.Movement T length_ = t * (dynamic)Length(); index = ComputeIndexInBounds(length_); //ASSERT(index < index_hi); - u = (length_ - Length(index)) / (float)Length(index, index + 1); + u = (float)(length_ - Length(index)) / (float)Length(index, index + 1); } int ComputeIndexInBounds(T length_)