// // Licensed under the MIT License. See LICENSE file in the project root for full license information. // namespace MUnique.OpenMU.GameLogic.PlugIns; using System.ComponentModel.DataAnnotations; using MUnique.OpenMU.DataModel.Composition; /// /// Configuration for the . /// public class PlayerLosesExperienceAfterDeathPlugInConfiguration { /// /// Gets or sets the losses per level. /// /// /// The losses per level. /// [Display(ResourceType = typeof(PlugInResources), Name = nameof(PlugInResources.PlayerLosesExperienceAfterDeathPlugInConfiguration_LossesPerLevel_Name))] [MemberOfAggregate] [ScaffoldColumn(true)] public ICollection LossesPerLevel { get; set; } = new List(); /// /// Defines the losses for a specific level range. /// public class LossOfLevel { /// /// Initializes a new instance of the class. /// public LossOfLevel() { } /// /// Initializes a new instance of the class. /// /// The minimum level. /// If set to true, this entry only applies to master characters. /// The losses. public LossOfLevel(int minimumLevel, bool isMaster, List losses) { this.MinimumLevel = minimumLevel; this.IsMaster = isMaster; this.Losses = losses; } /// /// Gets or sets the minimum level. /// /// /// The minimum level. /// [Display(ResourceType = typeof(PlugInResources), Name = nameof(PlugInResources.PlayerLosesExperienceAfterDeathPlugInConfiguration_MinimumLevel_Name))] public int MinimumLevel { get; set; } /// /// Gets or sets a value indicating whether this instance applies only to master characters. /// [Display(ResourceType = typeof(PlugInResources), Name = nameof(PlugInResources.PlayerLosesExperienceAfterDeathPlugInConfiguration_IsMaster_Name))] public bool IsMaster { get; set; } /// /// Gets or sets the loss per . /// [Display(ResourceType = typeof(PlugInResources), Name = nameof(PlugInResources.PlayerLosesExperienceAfterDeathPlugInConfiguration_Losses_Name))] [MemberOfAggregate] [ScaffoldColumn(true)] public ICollection Losses { get; set; } = []; } /// /// Defines the experience loss for a specific . /// public class LossPerStage { /// /// Initializes a new instance of the class. /// public LossPerStage() { } /// /// Initializes a new instance of the class. /// /// The state. /// The experience loss percentage. public LossPerStage(HeroState state, double experienceLossPercentage) { this.State = state; this.ExperienceLossPercentage = experienceLossPercentage; } /// /// Gets or sets the state. /// [Display(ResourceType = typeof(PlugInResources), Name = nameof(PlugInResources.PlayerLosesExperienceAfterDeathPlugInConfiguration_State_Name))] public HeroState State { get; set; } /// /// Gets or sets the experience loss percentage. /// [Display(ResourceType = typeof(PlugInResources), Name = nameof(PlugInResources.PlayerLosesExperienceAfterDeathPlugInConfiguration_ExperienceLossPercentage_Name))] public double ExperienceLossPercentage { get; set; } } }