//
// 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;
}
}