fix: Fixes TimeSpan rounding issues (#1610)

### Summary

TLDR - .NET Framework rounded TimeSpan (and some DateTime) methods to the nearest millisecond. This was actually _expected_ accidentally for parts of RunUO.

We are aiming to fix this and clean up some other bad assumptions.

Closes #1604
This commit is contained in:
Kamron Batman 2023-11-22 18:03:56 -08:00 • committed by GitHub
parent 98727d13b3
commit 331f24cb71
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 91 additions and 87 deletions

View file

@ -509,7 +509,7 @@ namespace Server.Spells
if (scaleDuration)
{
duration = TimeSpan.FromSeconds(duration.TotalSeconds * scale);
duration *= scale;
}
if (scaleStats)

View file

@ -51,7 +51,7 @@ namespace Server.Items
{
to.SendLocalizedMessage(
1072516, // ~1_name~ will expire in ~2_val~ seconds!
$"{Name ?? $"#{LabelNumber}"}\t{(int)LifeSpan.TotalSeconds}"
$"{Name ?? $"#{LabelNumber}"}\t{LifeSpan.TotalSeconds:F0}"
);
}
@ -79,7 +79,7 @@ namespace Server.Items
var remaining = CreationTime + LifeSpan - Core.Now;
list.Add(1072517, $"{(int)remaining.TotalSeconds}"); // Lifespan: ~1_val~ seconds
list.Add(1072517, $"{remaining.TotalSeconds:F0}"); // Lifespan: ~1_val~ seconds
}
public override void Serialize(IGenericWriter writer)