class_name PlayerStats extends Resource var max_health: float = 50.0 var current_health: float = 50.0 var current_xp: float = 0.0 var current_level: int = 1 var crit_chance: float = 0.05 var crit_multiplier: float = 2.0 var move_speed: float = 200.0 var attack_damage: float = 1.0 var pickup_radius: float = 50.0 func get_final(stat: String, modifiers: Array[PlayerStatsModifier]) -> Variant: var base_value = get(stat) var add = 0.0 var mul = 1.0 for mod in modifiers: if mod.stat_name == stat: if mod.type == PlayerStatsModifier.ModifierType.ADDITIVE: add += mod.value if mod.type == PlayerStatsModifier.ModifierType.MULTIPLICATIVE: mul *= mod.value if mod.type == PlayerStatsModifier.ModifierType.ABSOLUTE: return mod.value return (base_value + add) * mul func xp_required_for_level() -> float: return 100 * (100 * (1.5 ** (current_level - 1)))