// MIT License - Copyright (c) 2025 wallstop // Full license text: https://github.com/wallstop/unity-helpers/blob/main/LICENSE namespace WallstopStudios.UnityHelpers.Tags { /// /// Specifies the type of action to perform when modifying an attribute value. /// Actions are applied in a specific order to ensure consistent calculation. /// /// /// /// When multiple modifications are applied to an attribute, they are processed in this order: /// 1. All Addition modifications /// 2. All Multiplication modifications /// 3. All Override modifications (last override wins) /// /// /// Example calculation with base value 100: /// /// Base: 100 /// + Addition(20): 120 /// + Addition(-10): 110 /// * Multiplication(1.5): 165 /// * Multiplication(0.8): 132 /// = Override(200): 200 (if present, completely replaces the value) /// /// /// public enum ModificationAction { /// /// Adds the modification value to the current value. /// Use negative values for subtraction. /// Applied first in the calculation order. /// /// /// A value of 20 adds 20 to the attribute. /// A value of -10 subtracts 10 from the attribute. /// Addition = 0, /// /// Multiplies the current value by the modification value. /// Use values greater than 1 to increase, less than 1 to decrease. /// Applied second in the calculation order, after all additions. /// /// /// A value of 1.5 increases by 50% (150% of original). /// A value of 0.5 decreases by 50% (50% of original). /// A value of 2.0 doubles the value. /// Multiplication = 1, /// /// Completely replaces the current value with the modification value. /// Applied last in the calculation order. If multiple overrides exist, the last one wins. /// /// /// A value of 999 sets the attribute to exactly 999, ignoring all previous calculations. /// Override = 2, } }