// // 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.AttributeSystem; using MUnique.OpenMU.DataModel.Configuration; using MUnique.OpenMU.GameLogic.Attributes; using MUnique.OpenMU.Persistence.Initialization.Skills; using MUnique.OpenMU.Persistence.Initialization.VersionSeasonSix; using MUnique.OpenMU.PlugIns; /// /// This update sets the right settings for the chain lightning skill. /// [PlugIn] [Display(Name = PlugInName, Description = PlugInDescription)] [Guid("426497DB-A1D7-4EC5-BE6A-C8AEABC288E2")] public class WizEnhanceAndRagefighterSkillsUpdatePlugIn : UpdatePlugInBase { /// /// The plug in name. /// internal const string PlugInName = "Some added skills"; /// /// The plug in description. /// internal const string PlugInDescription = "This update adds the following skills: Wizardry Enhance, Increase Health, Increase Block, Ignore Defense."; /// public override string Name => PlugInName; /// public override string Description => PlugInDescription; /// public override UpdateVersion Version => UpdateVersion.WizEnhanceAndRagefighterSkills; /// public override string DataInitializationKey => VersionSeasonSix.DataInitialization.Id; /// public override bool IsMandatory => true; /// public override DateTime CreatedAt => new(2024, 07, 20, 12, 00, 0, DateTimeKind.Utc); /// protected override async ValueTask ApplyAsync(IContext context, GameConfiguration gameConfiguration) { if (gameConfiguration.MagicEffects.Any(m => m.Number == (int)MagicEffectNumber.WizEnhance)) { return; } // First, we add the required effects: new IgnoreDefenseEffectInitializer(context, gameConfiguration).Initialize(); new WizardryEnhanceEffectInitializer(context, gameConfiguration).Initialize(); new IncreaseHealthEffectInitializer(context, gameConfiguration).Initialize(); new IncreaseBlockEffectInitializer(context, gameConfiguration).Initialize(); this.UpdateWizardryEnhance(gameConfiguration); this.UpdateIncreaseHealth(gameConfiguration); this.UpdateIncreaseBlock(gameConfiguration); this.UpdateIgnoreDefense(gameConfiguration); } private void UpdateIgnoreDefense(GameConfiguration gameConfiguration) { var skill = gameConfiguration.Skills.First(s => s.Number == (int)SkillNumber.IgnoreDefense); skill.SkillType = SkillType.Buff; skill.Target = SkillTarget.ImplicitPlayer; skill.MagicEffectDef = gameConfiguration.MagicEffects.First(m => m.Number == (int)MagicEffectNumber.IgnoreDefense); } private void UpdateIncreaseBlock(GameConfiguration gameConfiguration) { var skill = gameConfiguration.Skills.First(s => s.Number == (int)SkillNumber.IncreaseBlock); skill.SkillType = SkillType.Buff; skill.Target = SkillTarget.ImplicitParty; skill.TargetRestriction = SkillTargetRestriction.Player; skill.MagicEffectDef = gameConfiguration.MagicEffects.First(m => m.Number == (int)MagicEffectNumber.IncreaseBlock); } private void UpdateIncreaseHealth(GameConfiguration gameConfiguration) { var skill = gameConfiguration.Skills.First(s => s.Number == (int)SkillNumber.IncreaseHealth); skill.SkillType = SkillType.Buff; skill.Target = SkillTarget.ImplicitParty; skill.TargetRestriction = SkillTargetRestriction.Player; skill.MagicEffectDef = gameConfiguration.MagicEffects.First(m => m.Number == (int)MagicEffectNumber.IncreaseHealth); } private void UpdateWizardryEnhance(GameConfiguration gameConfiguration) { var skill = gameConfiguration.Skills.First(s => s.Number == (int)SkillNumber.ExpansionofWizardry); skill.SkillType = SkillType.Buff; skill.Target = SkillTarget.ImplicitPlayer; skill.MagicEffectDef = gameConfiguration.MagicEffects.First(m => m.Number == (int)MagicEffectNumber.WizEnhance); var skill2 = gameConfiguration.Skills.First(s => s.Number == (int)SkillNumber.ExpansionofWizStreng); skill2.SkillType = SkillType.Buff; skill2.Target = SkillTarget.ImplicitPlayer; skill2.MagicEffectDef = gameConfiguration.MagicEffects.First(m => m.Number == (int)MagicEffectNumber.WizEnhance); skill2.MasterDefinition!.ValueFormula = SkillsInitializer.Formula120Value; skill2.MasterDefinition.TargetAttribute = Stats.MaximumWizBaseDmg; skill2.MasterDefinition.Aggregation = AggregateType.Multiplicate; var skill3 = gameConfiguration.Skills.First(s => s.Number == (int)SkillNumber.ExpansionofWizMas); skill3.SkillType = SkillType.Buff; skill3.Target = SkillTarget.ImplicitPlayer; skill3.MagicEffectDef = gameConfiguration.MagicEffects.First(m => m.Number == (int)MagicEffectNumber.WizEnhance); skill3.MasterDefinition!.ValueFormula = SkillsInitializer.Formula120Value; skill3.MasterDefinition.TargetAttribute = Stats.CriticalDamageChance; skill3.MasterDefinition.Aggregation = AggregateType.Multiplicate; } }