fix: Fixes treasure map chest crash from null guardians (#2236)

This commit is contained in:
Kamron Batman 2025-07-22 16:01:27 -07:00 committed by GitHub
parent aab731ed96
commit 8a118170e7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 6 deletions

View file

@ -12,6 +12,7 @@ namespace Server.Items;
[SerializationGenerator(2, false)]
public partial class TreasureMapChest : LockableContainer
{
[Tidy]
[SerializableField(0, setter: "private")]
private List<Mobile> _guardians;
@ -57,7 +58,7 @@ public partial class TreasureMapChest : LockableContainer
_level = level;
_temporary = temporary;
_guardians = new List<Mobile>();
_guardians = [];
_expireTimer = Timer.DelayCall(TimeSpan.FromHours(3.0), Delete);
Fill(this, level);
@ -66,7 +67,7 @@ public partial class TreasureMapChest : LockableContainer
public override int LabelNumber => 3000541;
public static Type[] Artifacts { get; } =
{
[
typeof(CandelabraOfSouls), typeof(GoldBricks), typeof(PhillipsWoodenSteed),
typeof(ArcticDeathDealer), typeof(BlazeOfDeath), typeof(BurglarsBandana),
typeof(CavortingClub), typeof(DreadPirateHat),
@ -74,7 +75,7 @@ public partial class TreasureMapChest : LockableContainer
typeof(LunaLance), typeof(NightsKiss), typeof(NoxRangersHeavyCrossbow),
typeof(PolarBearMask), typeof(VioletCourage), typeof(HeartOfTheLion),
typeof(ColdBlood), typeof(AlchemistsBauble)
};
];
[CommandProperty(AccessLevel.GameMaster)]
public DateTime DeleteTime => _expireTimer.Next;
@ -299,8 +300,9 @@ public partial class TreasureMapChest : LockableContainer
if (_level == 0 && from.AccessLevel < AccessLevel.GameMaster)
{
foreach (var m in _guardians)
for (var i = 0; i < _guardians.Count; i++)
{
var m = _guardians[i];
if (m.Alive)
{
// You must first kill the guardians before you may open this chest.
@ -366,7 +368,7 @@ public partial class TreasureMapChest : LockableContainer
if (notYetLifted)
{
_lifted ??= new HashSet<Item>();
_lifted ??= [];
_lifted.Add(item);
if (Utility.RandomDouble() < 0.1) // 10% chance to spawn a new monster
@ -391,7 +393,7 @@ public partial class TreasureMapChest : LockableContainer
private void Deserialize(IGenericReader reader, int version)
{
_guardians = new List<Mobile>();
_guardians = [];
_owner = reader.ReadEntity<Mobile>();
_level = reader.ReadInt();