diff --git a/Maple2.File.Parser/Maple2.File.Parser.csproj b/Maple2.File.Parser/Maple2.File.Parser.csproj index 82c3367..de3094f 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.0 + 2.4.1 net8.0 README.md enable diff --git a/Maple2.File.Parser/TableParser.cs b/Maple2.File.Parser/TableParser.cs index f97e4c5..e55ba32 100644 --- a/Maple2.File.Parser/TableParser.cs +++ b/Maple2.File.Parser/TableParser.cs @@ -33,6 +33,7 @@ public class TableParser { private readonly XmlSerializer guildHouseSerializer; private readonly XmlSerializer guildNpcSerializer; private readonly XmlSerializer guildPropertySerializer; + private readonly XmlSerializer guildQuestRewardFactorSerializer; private readonly XmlSerializer instrumentCategoryInfoSerializer; private readonly XmlSerializer instrumentInfoSerializer; private readonly XmlSerializer interactObjectSerializer; @@ -132,6 +133,7 @@ public TableParser(M2dReader xmlReader, string language) { guildHouseSerializer = new XmlSerializer(typeof(GuildHouseRoot)); guildNpcSerializer = new XmlSerializer(typeof(GuildNpcRoot)); guildPropertySerializer = new XmlSerializer(typeof(GuildPropertyRoot)); + guildQuestRewardFactorSerializer = new XmlSerializer(typeof(GuildQuestRewardFactorRoot)); instrumentCategoryInfoSerializer = new XmlSerializer(typeof(InstrumentCategoryInfoRoot)); instrumentInfoSerializer = new XmlSerializer(typeof(InstrumentInfoRoot)); interactObjectSerializer = new XmlSerializer(typeof(InteractObjectRoot)); @@ -469,6 +471,16 @@ public IEnumerable ParseUnitedWeeklyReward() { } } + public IEnumerable<(int Id, GuildQuestRewardFactor Factor)> ParseGuildQuestRewardFactor() { + XmlReader reader = xmlReader.GetXmlReader(xmlReader.GetEntry("table/guildquestrewardfactor.xml")); + var data = guildQuestRewardFactorSerializer.Deserialize(reader) as GuildQuestRewardFactorRoot; + Debug.Assert(data != null); + + foreach (GuildQuestRewardFactor factor in data.guildNpc) { + yield return (factor.level, factor); + } + } + public IEnumerable<(int Id, InstrumentCategoryInfo Info)> ParseInstrumentCategoryInfo() { XmlReader reader = xmlReader.GetXmlReader(xmlReader.GetEntry("table/instrumentcategoryinfo.xml")); var data = instrumentCategoryInfoSerializer.Deserialize(reader) as InstrumentCategoryInfoRoot; diff --git a/Maple2.File.Parser/Xml/Table/GuildQuestRewardFactor.cs b/Maple2.File.Parser/Xml/Table/GuildQuestRewardFactor.cs new file mode 100644 index 0000000..c3150e7 --- /dev/null +++ b/Maple2.File.Parser/Xml/Table/GuildQuestRewardFactor.cs @@ -0,0 +1,19 @@ +using System.Xml.Serialization; +using M2dXmlGenerator; + +namespace Maple2.File.Parser.Xml.Table; + +// ./data/xml/table/guildquestrewardfactor.xml +[XmlRoot("ms2")] +public partial class GuildQuestRewardFactorRoot { + [M2dFeatureLocale(Selector = "level")] private IList _guildNpc; +} + +public partial class GuildQuestRewardFactor : IFeatureLocale { + [XmlAttribute] public int level; + [XmlAttribute] public float guildExpFactor; + [XmlAttribute] public float userExpFactor; + [XmlAttribute] public float guildFundFactor; + [XmlAttribute] public float userMesoFactor; + [XmlAttribute] public float GuildCoinFactor; +} diff --git a/Maple2.File.Tests/TableParserTest.cs b/Maple2.File.Tests/TableParserTest.cs index 1a4e05e..b16d37d 100644 --- a/Maple2.File.Tests/TableParserTest.cs +++ b/Maple2.File.Tests/TableParserTest.cs @@ -191,6 +191,13 @@ public void TestGuildProperty() { } } + [TestMethod] + public void TestGuildQuestRewardFactor() { + foreach ((_, _) in _parser.ParseGuildQuestRewardFactor()) { + continue; + } + } + [TestMethod] public void TestParseInstrumentCategoryInfo() { foreach ((_, _) in _parser.ParseInstrumentCategoryInfo()) {