// // Licensed under the MIT License. See LICENSE file in the project root for full license information. // namespace MUnique.OpenMU.Persistence.Initialization.Version075; using MUnique.OpenMU.DataModel.Configuration; using MUnique.OpenMU.DataModel.Configuration.ItemCrafting; using MUnique.OpenMU.DataModel.Configuration.Items; using MUnique.OpenMU.GameLogic.PlayerActions.Craftings; using MUnique.OpenMU.Persistence.Initialization.Version075.Items; /// /// Initializer for chaos mixes. /// public class ChaosMixes : InitializerBase { /// /// Initializes a new instance of the class. /// /// The context. /// The game configuration. public ChaosMixes(IContext context, GameConfiguration gameConfiguration) : base(context, gameConfiguration) { } /// public override void Initialize() { var chaosGoblin = this.GameConfiguration.Monsters.First(m => m.NpcWindow == NpcWindow.ChaosMachine); chaosGoblin.ItemCraftings.Add(this.ChaosWeaponCrafting()); } private ItemCrafting ChaosWeaponCrafting() { var chaosWeapon = this.Context.CreateNew(); chaosWeapon.Name = "Chaos Weapon"; chaosWeapon.Number = 1; chaosWeapon.ItemCraftingHandlerClassName = typeof(ChaosWeaponAndFirstWingsCrafting).FullName!; var chaosWeaponSettings = this.Context.CreateNew(); chaosWeapon.SimpleCraftingSettings = chaosWeaponSettings; chaosWeaponSettings.MoneyPerFinalSuccessPercentage = 10_000; chaosWeaponSettings.NpcPriceDivisor = 20_000; // Requirements: var randomItem = this.Context.CreateNew(); randomItem.MinimumAmount = 1; randomItem.MinimumItemLevel = 4; randomItem.MaximumItemLevel = Constants.MaximumItemLevel; randomItem.FailResult = MixResult.ChaosWeaponAndFirstWingsDowngradedRandom; randomItem.RequiredItemOptions.Add(this.GameConfiguration.ItemOptionTypes.First(o => o == ItemOptionTypes.Option)); randomItem.SuccessResult = MixResult.Disappear; chaosWeaponSettings.RequiredItems.Add(randomItem); var chaos = this.Context.CreateNew(); chaos.MinimumAmount = 1; chaos.SuccessResult = MixResult.Disappear; chaos.FailResult = MixResult.Disappear; chaos.PossibleItems.Add(this.GameConfiguration.Items.First(i => i.Name == "Jewel of Chaos")); chaosWeaponSettings.RequiredItems.Add(chaos); var bless = this.Context.CreateNew(); bless.MinimumAmount = 0; bless.SuccessResult = MixResult.Disappear; bless.FailResult = MixResult.Disappear; bless.PossibleItems.Add(this.GameConfiguration.Items.First(i => i.Name == "Jewel of Bless")); chaosWeaponSettings.RequiredItems.Add(bless); var soul = this.Context.CreateNew(); soul.MinimumAmount = 0; soul.SuccessResult = MixResult.Disappear; soul.FailResult = MixResult.Disappear; soul.PossibleItems.Add(this.GameConfiguration.Items.First(i => i.Name == "Jewel of Soul")); chaosWeaponSettings.RequiredItems.Add(soul); // Result: chaosWeaponSettings.ResultItemSelect = ResultItemSelection.Any; var chaosDragonAxe = this.Context.CreateNew(); chaosDragonAxe.ItemDefinition = this.GameConfiguration.Items.First(i => i.Name == "Chaos Dragon Axe"); chaosDragonAxe.RandomMinimumLevel = 0; chaosDragonAxe.RandomMaximumLevel = 4; chaosWeaponSettings.ResultItems.Add(chaosDragonAxe); var chaosNatureBow = this.Context.CreateNew(); chaosNatureBow.ItemDefinition = this.GameConfiguration.Items.First(i => i.Name == "Chaos Nature Bow"); chaosNatureBow.RandomMinimumLevel = 0; chaosNatureBow.RandomMaximumLevel = 4; chaosWeaponSettings.ResultItems.Add(chaosNatureBow); var chaosLightningStaff = this.Context.CreateNew(); chaosLightningStaff.ItemDefinition = this.GameConfiguration.Items.First(i => i.Name == "Chaos Lightning Staff"); chaosLightningStaff.RandomMinimumLevel = 0; chaosLightningStaff.RandomMaximumLevel = 4; chaosWeaponSettings.ResultItems.Add(chaosLightningStaff); return chaosWeapon; } }