game: add player stats and modifiers

This commit is contained in:
2025-08-19 14:23:12 +02:00
parent c95d4341a1
commit 0f0b537921
10 changed files with 91 additions and 51 deletions

28
scenes/player_stats.gd Normal file
View File

@@ -0,0 +1,28 @@
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
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.ADDITIVE:
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)))