// // Licensed under the MIT License. See LICENSE file in the project root for full license information. // namespace MUnique.OpenMU.Persistence.Initialization.Updates; using System.Runtime.InteropServices; using MUnique.OpenMU.DataModel.Configuration; using MUnique.OpenMU.Persistence.Initialization.Items; using MUnique.OpenMU.PlugIns; /// /// This update fixes the discriminators of some ancient items. /// [PlugIn] [Display(Name = PlugInName, Description = PlugInDescription)] [Guid("AB664421-1CA6-4FCE-A150-0007971017E1")] public class FixAncientDiscriminatorsUpdatePlugIn : UpdatePlugInBase { /// /// The plug in name. /// internal const string PlugInName = "Fix Warrior Morning Star"; /// /// The plug in description. /// internal const string PlugInDescription = "This update fixes the discriminators of some ancient items."; /// public override string Name => PlugInName; /// public override string Description => PlugInDescription; /// public override UpdateVersion Version => UpdateVersion.FixAncientDiscriminators; /// public override string DataInitializationKey => VersionSeasonSix.DataInitialization.Id; /// public override bool IsMandatory => true; /// public override DateTime CreatedAt => new(2024, 08, 25, 17, 0, 0, DateTimeKind.Utc); /// protected override async ValueTask ApplyAsync(IContext context, GameConfiguration gameConfiguration) { ChangeDiscriminator(gameConfiguration, "Anonymous", ItemGroups.Shields, 0, 1); ChangeDiscriminator(gameConfiguration, "Mist", ItemGroups.Gloves, 0, 1); ChangeDiscriminator(gameConfiguration, "Mist", ItemGroups.Helm, 0, 1); ChangeDiscriminator(gameConfiguration, "Berserker", ItemGroups.Gloves, 6, 1); ChangeDiscriminator(gameConfiguration, "Berserker", ItemGroups.Boots, 6, 1); ChangeDiscriminator(gameConfiguration, "Cloud", ItemGroups.Helm, 8, 1); ChangeDiscriminator(gameConfiguration, "Rave", ItemGroups.Helm, 9, 1); ChangeDiscriminator(gameConfiguration, "Rave", ItemGroups.Pants, 9, 1); ChangeDiscriminator(gameConfiguration, "Barnake", ItemGroups.Boots, 2, 1); ChangeDiscriminator(gameConfiguration, "Sylion", ItemGroups.Gloves, 4, 1); ChangeDiscriminator(gameConfiguration, "Sylion", ItemGroups.Helm, 4, 1); ChangeDiscriminator(gameConfiguration, "Drake", ItemGroups.Armor, 10, 1); ChangeDiscriminator(gameConfiguration, "Fase", ItemGroups.Boots, 11, 1); } private static void ChangeDiscriminator(GameConfiguration gameConfiguration, string setName, ItemGroups itemGroup, byte itemNumber, byte discriminator) { var itemSetGroup = gameConfiguration.ItemSetGroups.First(set => set.Name == setName); var itemOfItemSet = itemSetGroup.Items.FirstOrDefault(item => item.ItemDefinition?.Group == (byte)itemGroup && item.ItemDefinition?.Number == itemNumber); if (itemOfItemSet != null) { itemOfItemSet.AncientSetDiscriminator = discriminator; } } }