Files
slopvivors/scenes/player_stats.gd

32 lines
882 B
GDScript

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)))