#modelstats
Using resources to create custom model stats and weapon stats
This is how ModelStats is defined class_name ModelStats signal stats_changed @export var model_id: String @export var art: Texture @export_group("Basic Stats") @export var max_health := 5 @export var move := 6 @export var accuracy := 2 @export var strength := 2 @export var agility := 2 @export var willpower := 2 @export var armor := 0 @export var weapon : Weapon var health: int : set = set_health func set_health(value: int) -> void: health = clampi(value, 0, max_health) stats_changed.emit() func set_accuracy(value: int) -> void: accuracy = clampi(value, 0, 100) stats_changed.emit() func set_strength(value: int) -> void: strength = clampi(value, 0, 100) stats_changed.emit() func set_agility(value: int) -> void: agility = clampi(value, 0, 100) stats_changed.emit() func set_willpower(value: int) -> void: willpower = clampi(value, 0, 100) stats_changed.emit() func set_armor(value: int) -> void: armor = clampi(value, 0, 100) stats_changed.emit func take_damage(damage: int) -> void: if damage <= 0: return var initial_damage = damage damage = clampi(initial_damage - armor, 0, damage) self.health -= damage func heal(amount : int) -> void: self.health += amount func create_instance() -> Resource: var instance: ModelStats = self.duplicate() instance.health = max_health return instance```
forum.godotengine.org
June 7, 2025 at 9:42 PM