From 729b7e4014ae4d0fcbc75358c31c757333ef1c1d Mon Sep 17 00:00:00 2001 From: bernat Date: Sun, 1 Sep 2024 18:37:18 +0200 Subject: [PATCH 1/4] change skill definition --- .../Initialization/VersionSeasonSix/SkillsInitializer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Persistence/Initialization/VersionSeasonSix/SkillsInitializer.cs b/src/Persistence/Initialization/VersionSeasonSix/SkillsInitializer.cs index 142cc96a9..446803730 100644 --- a/src/Persistence/Initialization/VersionSeasonSix/SkillsInitializer.cs +++ b/src/Persistence/Initialization/VersionSeasonSix/SkillsInitializer.cs @@ -173,7 +173,7 @@ public override void Initialize() this.CreateSkill(SkillNumber.ShieldBurn, "Shield-Burn", CharacterClasses.All, distance: 3, manaConsumption: 30, elementalModifier: ElementalType.Ice, cooldownMinutes: 5); this.CreateSkill(SkillNumber.DrainLife, "Drain Life", CharacterClasses.AllSummoners, DamageType.Curse, 35, 6, manaConsumption: 50, energyRequirement: 150, skillType: SkillType.AreaSkillExplicitTarget); this.CreateSkill(SkillNumber.ChainLightning, "Chain Lightning", CharacterClasses.AllSummoners, DamageType.Curse, 70, 6, manaConsumption: 85, energyRequirement: 245, skillType: SkillType.AreaSkillExplicitTarget, skillTarget: SkillTarget.Explicit); - this.CreateSkill(SkillNumber.DamageReflection, "Damage Reflection", CharacterClasses.AllSummoners, distance: 5, abilityConsumption: 10, manaConsumption: 40, energyRequirement: 375); + this.CreateSkill(SkillNumber.DamageReflection, "Damage Reflection", CharacterClasses.AllSummoners, distance: 5, abilityConsumption: 10, manaConsumption: 40, energyRequirement: 375, skillType: SkillType.Buff, implicitTargetRange: 0, targetRestriction: SkillTargetRestriction.Self); this.CreateSkill(SkillNumber.Berserker, "Berserker", CharacterClasses.AllSummoners, DamageType.Curse, distance: 5, abilityConsumption: 50, manaConsumption: 100, energyRequirement: 620); this.CreateSkill(SkillNumber.Sleep, "Sleep", CharacterClasses.AllSummoners, distance: 6, abilityConsumption: 3, manaConsumption: 20, energyRequirement: 180); this.CreateSkill(SkillNumber.Weakness, "Weakness", CharacterClasses.AllSummoners, distance: 6, abilityConsumption: 15, manaConsumption: 50, energyRequirement: 663); From c652cf3d4c32126353adc38db098bda582de94fc Mon Sep 17 00:00:00 2001 From: bernat Date: Sun, 1 Sep 2024 19:41:13 +0200 Subject: [PATCH 2/4] implement reflection summoner --- .../Skills/ReflectionEffectInitializer.cs | 60 +++++++++++++++++++ .../VersionSeasonSix/SkillsInitializer.cs | 2 + 2 files changed, 62 insertions(+) create mode 100644 src/Persistence/Initialization/Skills/ReflectionEffectInitializer.cs diff --git a/src/Persistence/Initialization/Skills/ReflectionEffectInitializer.cs b/src/Persistence/Initialization/Skills/ReflectionEffectInitializer.cs new file mode 100644 index 000000000..2a7d18dfc --- /dev/null +++ b/src/Persistence/Initialization/Skills/ReflectionEffectInitializer.cs @@ -0,0 +1,60 @@ +// +// Licensed under the MIT License. See LICENSE file in the project root for full license information. +// + +namespace MUnique.OpenMU.Persistence.Initialization.Skills; + +using MUnique.OpenMU.AttributeSystem; +using MUnique.OpenMU.DataModel.Attributes; +using MUnique.OpenMU.DataModel.Configuration; +using MUnique.OpenMU.GameLogic.Attributes; + +/// +/// Initializer for the reflection buff effect. +/// +public class ReflectionEffectInitializer : InitializerBase +{ + /// + /// Initializes a new instance of the class. + /// + /// The context. + /// The game configuration. + public ReflectionEffectInitializer(IContext context, GameConfiguration gameConfiguration) + : base(context, gameConfiguration) + { + } + + /// + public override void Initialize() + { + var magicEffect = this.Context.CreateNew(); + this.GameConfiguration.MagicEffects.Add(magicEffect); + magicEffect.Number = (byte)MagicEffectNumber.Reflection; + magicEffect.Name = "Reflection"; + magicEffect.InformObservers = true; + magicEffect.SendDuration = false; + magicEffect.StopByDeath = true; + var powerUpDefinition = this.Context.CreateNew(); + magicEffect.PowerUpDefinitions.Add(powerUpDefinition); + powerUpDefinition.TargetAttribute = Stats.DamageReflection.GetPersistent(this.GameConfiguration); + magicEffect.Duration = this.Context.CreateNew(); + magicEffect.Duration.ConstantValue.Value = 60; + var durationPerEnergy = this.Context.CreateNew(); + durationPerEnergy.InputAttribute = Stats.TotalEnergy.GetPersistent(this.GameConfiguration); + durationPerEnergy.InputOperator = InputOperator.Multiply; + durationPerEnergy.InputOperand = 1f / 5f; // 5 energy adds 1 second duration + magicEffect.Duration.RelatedValues.Add(durationPerEnergy); + + // one percent per 42 energy + var boostPerEnergy = this.Context.CreateNew(); + boostPerEnergy.InputAttribute = Stats.TotalEnergy.GetPersistent(this.GameConfiguration); + boostPerEnergy.InputOperator = InputOperator.ExponentiateByAttribute; + boostPerEnergy.InputOperand = 1 - (0.01f / 42f); + + // Reflection % = 30 + (Energi / 42) + powerUpDefinition.Boost = this.Context.CreateNew(); + powerUpDefinition.Boost.ConstantValue.Value = 0.29f; + powerUpDefinition.Boost.ConstantValue.AggregateType = AggregateType.Multiplicate; + powerUpDefinition.Boost.RelatedValues.Add(boostPerEnergy); + } +} \ No newline at end of file diff --git a/src/Persistence/Initialization/VersionSeasonSix/SkillsInitializer.cs b/src/Persistence/Initialization/VersionSeasonSix/SkillsInitializer.cs index 446803730..28b59414f 100644 --- a/src/Persistence/Initialization/VersionSeasonSix/SkillsInitializer.cs +++ b/src/Persistence/Initialization/VersionSeasonSix/SkillsInitializer.cs @@ -66,6 +66,7 @@ internal class SkillsInitializer : SkillsInitializerBase { SkillNumber.IncreaseHealth, MagicEffectNumber.IncreaseHealth }, { SkillNumber.IncreaseBlock, MagicEffectNumber.IncreaseBlock }, { SkillNumber.ExpansionofWizardry, MagicEffectNumber.WizEnhance }, + { SkillNumber.DamageReflection, MagicEffectNumber.Reflection }, }; private readonly IDictionary _masterSkillRoots; @@ -572,6 +573,7 @@ private void InitializeEffects() new IncreaseHealthEffectInitializer(this.Context, this.GameConfiguration).Initialize(); new IncreaseBlockEffectInitializer(this.Context, this.GameConfiguration).Initialize(); new WizardryEnhanceEffectInitializer(this.Context, this.GameConfiguration).Initialize(); + new ReflectionEffectInitializer(this.Context, this.GameConfiguration).Initialize(); } private void MapSkillsToEffects() From c52d326743ff62c09a9a395ea347a36c64590407 Mon Sep 17 00:00:00 2001 From: bernat Date: Tue, 3 Sep 2024 12:44:47 +0200 Subject: [PATCH 3/4] apply changes proposed --- .../Initialization/Skills/ReflectionEffectInitializer.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Persistence/Initialization/Skills/ReflectionEffectInitializer.cs b/src/Persistence/Initialization/Skills/ReflectionEffectInitializer.cs index 2a7d18dfc..bbbfc0e62 100644 --- a/src/Persistence/Initialization/Skills/ReflectionEffectInitializer.cs +++ b/src/Persistence/Initialization/Skills/ReflectionEffectInitializer.cs @@ -48,13 +48,13 @@ public override void Initialize() // one percent per 42 energy var boostPerEnergy = this.Context.CreateNew(); boostPerEnergy.InputAttribute = Stats.TotalEnergy.GetPersistent(this.GameConfiguration); - boostPerEnergy.InputOperator = InputOperator.ExponentiateByAttribute; - boostPerEnergy.InputOperand = 1 - (0.01f / 42f); + boostPerEnergy.InputOperator = InputOperator.Multiply; + boostPerEnergy.InputOperand = 1 - (0.01f / 40f); // Reflection % = 30 + (Energi / 42) powerUpDefinition.Boost = this.Context.CreateNew(); powerUpDefinition.Boost.ConstantValue.Value = 0.29f; - powerUpDefinition.Boost.ConstantValue.AggregateType = AggregateType.Multiplicate; + powerUpDefinition.Boost.ConstantValue.AggregateType = AggregateType.AddRaw; powerUpDefinition.Boost.RelatedValues.Add(boostPerEnergy); } } \ No newline at end of file From b56df53e6bd7d9850438d16932e2bfebe0de6976 Mon Sep 17 00:00:00 2001 From: bernat Date: Tue, 3 Sep 2024 13:19:21 +0200 Subject: [PATCH 4/4] adjust values for reflect skill --- .../Initialization/Skills/ReflectionEffectInitializer.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Persistence/Initialization/Skills/ReflectionEffectInitializer.cs b/src/Persistence/Initialization/Skills/ReflectionEffectInitializer.cs index bbbfc0e62..b2cf42f30 100644 --- a/src/Persistence/Initialization/Skills/ReflectionEffectInitializer.cs +++ b/src/Persistence/Initialization/Skills/ReflectionEffectInitializer.cs @@ -38,18 +38,18 @@ public override void Initialize() magicEffect.PowerUpDefinitions.Add(powerUpDefinition); powerUpDefinition.TargetAttribute = Stats.DamageReflection.GetPersistent(this.GameConfiguration); magicEffect.Duration = this.Context.CreateNew(); - magicEffect.Duration.ConstantValue.Value = 60; + magicEffect.Duration.ConstantValue.Value = 30; var durationPerEnergy = this.Context.CreateNew(); durationPerEnergy.InputAttribute = Stats.TotalEnergy.GetPersistent(this.GameConfiguration); durationPerEnergy.InputOperator = InputOperator.Multiply; - durationPerEnergy.InputOperand = 1f / 5f; // 5 energy adds 1 second duration + durationPerEnergy.InputOperand = 1f / 25f; // 25 energy adds 1 second duration magicEffect.Duration.RelatedValues.Add(durationPerEnergy); // one percent per 42 energy var boostPerEnergy = this.Context.CreateNew(); boostPerEnergy.InputAttribute = Stats.TotalEnergy.GetPersistent(this.GameConfiguration); boostPerEnergy.InputOperator = InputOperator.Multiply; - boostPerEnergy.InputOperand = 1 - (0.01f / 40f); + boostPerEnergy.InputOperand = 0.01f / 42f; // Reflection % = 30 + (Energi / 42) powerUpDefinition.Boost = this.Context.CreateNew();