diff --git a/src/Persistence/Initialization/VersionSeasonSix/Events/HeykelSavasiInitializer.cs b/src/Persistence/Initialization/VersionSeasonSix/Events/HeykelSavasiInitializer.cs new file mode 100644 index 0000000..5a5374a --- /dev/null +++ b/src/Persistence/Initialization/VersionSeasonSix/Events/HeykelSavasiInitializer.cs @@ -0,0 +1,51 @@ +// +// Licensed under the MIT License. See LICENSE file in the project root for full license information. +// + +namespace MUnique.OpenMU.Persistence.Initialization.VersionSeasonSix.Events; + +using MUnique.OpenMU.DataModel.Configuration; +using MUnique.OpenMU.Persistence.Initialization.VersionSeasonSix.Maps; + +/// +/// The initializer for the Heykel Savasi event. +/// +internal class HeykelSavasiInitializer : InitializerBase +{ + /// + /// The Zen reward given to each member of the winning team (applied directly by the event context, not via ). + /// + public const int WinnerZenReward = 10_000_000; + + /// + /// Initializes a new instance of the class. + /// + /// The context. + /// The game configuration. + public HeykelSavasiInitializer(IContext context, GameConfiguration gameConfiguration) + : base(context, gameConfiguration) + { + } + + /// + public override void Initialize() + { + var heykelSavasi = this.Context.CreateNew(); + heykelSavasi.SetGuid((short)MiniGameType.HeykelSavasi, 0); + this.GameConfiguration.MiniGameDefinitions.Add(heykelSavasi); + heykelSavasi.Name = "Heykel Savasi"; + heykelSavasi.Description = "Takim vs takim heykel kirma savasi."; + heykelSavasi.Type = MiniGameType.HeykelSavasi; + heykelSavasi.GameLevel = 0; + heykelSavasi.MapCreationPolicy = MiniGameMapCreationPolicy.Shared; + heykelSavasi.EnterDuration = TimeSpan.FromMinutes(5); + heykelSavasi.GameDuration = TimeSpan.FromMinutes(5); + heykelSavasi.ExitDuration = TimeSpan.FromSeconds(15); + heykelSavasi.MaximumPlayerCount = 20; + heykelSavasi.AllowParty = false; + heykelSavasi.SaveRankingStatistics = false; + heykelSavasi.Entrance = this.GameConfiguration.Maps + .First(m => m.Number == HeykelSavasiMap.Number) + .ExitGates.First(g => g.IsSpawnGate); // Fallback entrance; the real per-team base gate is chosen by the join action. + } +} diff --git a/src/Persistence/Initialization/VersionSeasonSix/GameConfigurationInitializer.cs b/src/Persistence/Initialization/VersionSeasonSix/GameConfigurationInitializer.cs index fc67f51..8433836 100644 --- a/src/Persistence/Initialization/VersionSeasonSix/GameConfigurationInitializer.cs +++ b/src/Persistence/Initialization/VersionSeasonSix/GameConfigurationInitializer.cs @@ -88,6 +88,7 @@ public class GameConfigurationInitializer : GameConfigurationInitializerBase new DevilSquareInitializer(this.Context, this.GameConfiguration).Initialize(); new BloodCastleInitializer(this.Context, this.GameConfiguration).Initialize(); new ChaosCastleInitializer(this.Context, this.GameConfiguration).Initialize(); + new HeykelSavasiInitializer(this.Context, this.GameConfiguration).Initialize(); } private void CreateJewelMixes()