game: add player stats and modifiers
This commit is contained in:
28
scenes/player_stats.gd
Normal file
28
scenes/player_stats.gd
Normal 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)))
|
Reference in New Issue
Block a user