diff --git a/Maple2.File.Flat/maplestory2library/IMS2InteractActor.cs b/Maple2.File.Flat/maplestory2library/IMS2InteractActor.cs index 6b17c4f..ba87b47 100644 --- a/Maple2.File.Flat/maplestory2library/IMS2InteractActor.cs +++ b/Maple2.File.Flat/maplestory2library/IMS2InteractActor.cs @@ -12,17 +12,13 @@ public interface IMS2InteractActor : IActor, IMS2InteractObject, I3DProxy, IMS2M bool MinimapInVisible => true; bool Transparency => true; bool UseInstancing => false; - // Manually added: a handful of MS2InteractActor entities double as NPC spawn points and - // carry the SpawnPointNPC property set (e.g. 11000119_MS2InteractActor_Moonrabbit on - // 80000022_bonus). Neither the flat definition nor any mixin declares them, so they are - // patched into the type index by RuntimeClassLookup the same way MS2Actor's are. - [Obsolete("This property should not exist")] + // Manually added: 11000119_MS2InteractActor_Moonrabbit on 80000022_bonus doubles as an NPC + // spawn point and carries the SpawnPointNPC property set. The flat definition and its + // mixins do not declare these, so RuntimeClassLookup patches them into the type index. + // They are real data and the server reads them, so they are not marked obsolete. IDictionary NpcList => new Dictionary(); - [Obsolete("This property should not exist")] int SpawnPointID => 0; - [Obsolete("This property should not exist")] float SpawnRadius => 0; - [Obsolete("This property should not exist")] uint NpcCount => 0; } } diff --git a/Maple2.File.Parser/Maple2.File.Parser.csproj b/Maple2.File.Parser/Maple2.File.Parser.csproj index 80fb8ec..73d6e43 100644 --- a/Maple2.File.Parser/Maple2.File.Parser.csproj +++ b/Maple2.File.Parser/Maple2.File.Parser.csproj @@ -13,7 +13,7 @@ MapleStory2, File, Parser, m2d, xml true - 2.4.30 + 2.4.31 net8.0 README.md enable diff --git a/Maple2.File.Parser/Xml/Table/DungeonRoom.cs b/Maple2.File.Parser/Xml/Table/DungeonRoom.cs index 46eadc5..5d94272 100644 --- a/Maple2.File.Parser/Xml/Table/DungeonRoom.cs +++ b/Maple2.File.Parser/Xml/Table/DungeonRoom.cs @@ -75,15 +75,17 @@ public partial class DungeonRoom : IFeatureLocale { [XmlAttribute] public string openPeriodDate = string.Empty; [XmlAttribute] public bool isDisableFindHelper; [XmlAttribute] public int extraRewardTicketBaseCount; // 0 + // Absent from the GMS2 table, set on 18 rows of Lith's and 34 of KMS2's. + [XmlAttribute] public int extraRewardTicketTableID; + // No row sets these two in GMS2, KMS2 or Lith. PrivateMaple2 still maps both into its metadata. + [XmlAttribute] public bool dungeonHelperManualChange; + [XmlAttribute] public bool isUseFindMember; // Not in XML // enum extraRewardItemType - [XmlAttribute][Obsolete("Unused")] public int extraRewardTicketTableID; [XmlAttribute][Obsolete("Unused")] public bool isLimitTime; [XmlAttribute][Obsolete("Unused")] public bool isTimeUp; [XmlAttribute][Obsolete("Unused")] public bool isRandomField; - [XmlAttribute][Obsolete("Unused")] public bool dungeonHelperManualChange; - [XmlAttribute][Obsolete("Unused")] public bool isUseFindMember; [M2dArray][Obsolete("Unused")] public int[] findHelperRewardDropBoxIds; [M2dArray][Obsolete("Unused")] public int[] findHelperExtraRewardDropBoxIds; [XmlAttribute][Obsolete("Unused")] public bool isDisableRandomMatch; diff --git a/Maple2.File.Parser/Xml/Table/Server/FishingSpot.cs b/Maple2.File.Parser/Xml/Table/Server/FishingSpot.cs index 8b4fb36..3466c86 100644 --- a/Maple2.File.Parser/Xml/Table/Server/FishingSpot.cs +++ b/Maple2.File.Parser/Xml/Table/Server/FishingSpot.cs @@ -19,5 +19,5 @@ public partial class FishingSpot : IFeatureLocale { [XmlAttribute] public int globalDropBoxId; [XmlAttribute] public int individualDropBoxId; [XmlAttribute] public int spotLevel; - [XmlAttribute] public bool spotDropRank; + [XmlAttribute] public int spotDropRank; } diff --git a/Maple2.File.Tests/InteractActorSpawnerTest.cs b/Maple2.File.Tests/InteractActorSpawnerTest.cs index b850588..0061a3d 100644 --- a/Maple2.File.Tests/InteractActorSpawnerTest.cs +++ b/Maple2.File.Tests/InteractActorSpawnerTest.cs @@ -10,7 +10,6 @@ namespace Maple2.File.Tests; // set (SpawnPointID / NpcList / NpcCount / SpawnRadius). Neither the flat definition nor any mixin // declares those, so RuntimeClassLookup patches them into the type index. See MS2Community/ // PrivateMaple2#270. -#pragma warning disable CS0618 // properties are intentionally marked obsolete [TestClass] public class InteractActorSpawnerTest { [TestMethod] @@ -68,4 +67,3 @@ public void ReportAllInteractActorsWithSpawnerData() { } } } -#pragma warning restore CS0618