Пример #1
0
        /// <summary>
        /// Applies the modifications from a status effect to a character.
        /// </summary>
        /// <param name="status">The status effect to apply the modifications from.</param>
        /// <param name="character">The character to apply the modifications to.</param>
        private void ApplyStatusEffects(StatusEffect status, Character character)
        {
            int preSpeedChange = character.CurrentStats.Speed;

            character.Armor                         += status.Armor;
            character.ArmorPercentage               += status.ArmorPercentage;
            character.CurrentMaxHealth              += status.ModifyMaxHealth;
            character.CurrentMaxMana                += status.ModifyMaxMana;
            character.CurrentStats                  += status.ModifyStats;
            character.DamageModifier                += status.DamageModifier;
            character.DamagePercentageModifier      += status.DamagePercentageModifier;
            character.CritChance                    += status.CritChance;
            character.CritMultiplier                += status.CritMultiplier;
            character.ResistAll                     += status.ResistAll;
            character.ResistAllPercentage           += status.ResistAllPercentage;
            character.SpellDamageModifier           += status.SpellDamageModifier;
            character.SpellDamagePercentageModifier += status.SpellDamagePercentageModifier;

            if (status.ModifyStats.Speed != 0)
            {
                CharacterSpeedChanged?.Invoke(this, new CharacterSpeedChangedEventArgs()
                {
                    CharacterId    = character.Id,
                    PreSpeedChange = preSpeedChange,
                    SpeedChange    = status.ModifyStats.Speed
                });
            }
        }
Пример #2
0
        /// <summary>
        /// Removes modifications from a status effect from a character. Takes into account how many stacks
        /// have been previously applied to a character.
        /// </summary>
        /// <param name="status">The status effect to remove modifications.</param>
        /// <param name="character">The character to remove modifications from.</param>
        private void RemoveStatusEffects(AppliedStatus status, Character character, bool removePermanent = false)
        {
            if (status.BaseStatus.IsPermanent && !removePermanent)
            {
                return;
            }

            int preSpeedChange = character.CurrentStats.Speed;

            var baseStatus = status.BaseStatus;

            character.Armor                         -= baseStatus.Armor * status.StackCount;
            character.ArmorPercentage               -= baseStatus.ArmorPercentage * status.StackCount;
            character.CurrentMaxHealth              -= baseStatus.ModifyMaxHealth * status.StackCount;
            character.CurrentMaxMana                -= baseStatus.ModifyMaxMana * status.StackCount;
            character.CurrentStats                  -= baseStatus.ModifyStats * status.StackCount;
            character.DamageModifier                -= baseStatus.DamageModifier * status.StackCount;
            character.DamagePercentageModifier      -= baseStatus.DamagePercentageModifier * status.StackCount;
            character.CritChance                    -= baseStatus.CritChance * status.StackCount;
            character.CritMultiplier                -= baseStatus.CritMultiplier * status.StackCount;
            character.ResistAll                     -= baseStatus.ResistAll * status.StackCount;
            character.ResistAllPercentage           -= baseStatus.ResistAllPercentage * status.StackCount;
            character.SpellDamageModifier           -= baseStatus.SpellDamageModifier * status.StackCount;
            character.SpellDamagePercentageModifier -= baseStatus.SpellDamagePercentageModifier * status.StackCount;

            if (baseStatus.ModifyStats.Speed != 0)
            {
                CharacterSpeedChanged?.Invoke(this, new CharacterSpeedChangedEventArgs()
                {
                    CharacterId    = character.Id,
                    PreSpeedChange = preSpeedChange,
                    SpeedChange    = baseStatus.ModifyStats.Speed
                });
            }
        }
Пример #3
0
 private void OnCharacterSpeedChanged(object sender, CharacterSpeedChangedEventArgs args)
 {
     CharacterSpeedChanged?.Invoke(sender, args);
 }
Пример #4
0
 private void OnCharacterSpeedChanged(object sender, CharacterSpeedChangedEventArgs args)
 {
     CombatStateHandler.OnCharacterSpeedChanged(sender, args);
     CharacterSpeedChanged?.Invoke(sender, args);
 }