baseline: OpenMU upstream b5a0961 (fresh source)
This commit is contained in:
100
src/Persistence/Initialization/Version075/ChaosMixes.cs
Normal file
100
src/Persistence/Initialization/Version075/ChaosMixes.cs
Normal file
@@ -0,0 +1,100 @@
|
||||
// <copyright file="ChaosMixes.cs" company="MUnique">
|
||||
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
|
||||
// </copyright>
|
||||
|
||||
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;
|
||||
|
||||
/// <summary>
|
||||
/// Initializer for chaos mixes.
|
||||
/// </summary>
|
||||
public class ChaosMixes : InitializerBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ChaosMixes"/> class.
|
||||
/// </summary>
|
||||
/// <param name="context">The context.</param>
|
||||
/// <param name="gameConfiguration">The game configuration.</param>
|
||||
public ChaosMixes(IContext context, GameConfiguration gameConfiguration)
|
||||
: base(context, gameConfiguration)
|
||||
{
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
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<ItemCrafting>();
|
||||
chaosWeapon.Name = "Chaos Weapon";
|
||||
chaosWeapon.Number = 1;
|
||||
chaosWeapon.ItemCraftingHandlerClassName = typeof(ChaosWeaponAndFirstWingsCrafting).FullName!;
|
||||
var chaosWeaponSettings = this.Context.CreateNew<SimpleCraftingSettings>();
|
||||
chaosWeapon.SimpleCraftingSettings = chaosWeaponSettings;
|
||||
chaosWeaponSettings.MoneyPerFinalSuccessPercentage = 10_000;
|
||||
chaosWeaponSettings.NpcPriceDivisor = 20_000;
|
||||
|
||||
// Requirements:
|
||||
var randomItem = this.Context.CreateNew<ItemCraftingRequiredItem>();
|
||||
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<ItemCraftingRequiredItem>();
|
||||
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<ItemCraftingRequiredItem>();
|
||||
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<ItemCraftingRequiredItem>();
|
||||
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<ItemCraftingResultItem>();
|
||||
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<ItemCraftingResultItem>();
|
||||
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<ItemCraftingResultItem>();
|
||||
chaosLightningStaff.ItemDefinition = this.GameConfiguration.Items.First(i => i.Name == "Chaos Lightning Staff");
|
||||
chaosLightningStaff.RandomMinimumLevel = 0;
|
||||
chaosLightningStaff.RandomMaximumLevel = 4;
|
||||
chaosWeaponSettings.ResultItems.Add(chaosLightningStaff);
|
||||
|
||||
return chaosWeapon;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user