From 760254b7b17a852369864199192cedeee5905c71 Mon Sep 17 00:00:00 2001 From: Relintai Date: Sat, 2 May 2020 01:54:12 +0200 Subject: [PATCH] Added a new convenience stat setter. --- entities/entity.cpp | 12 ++++++++++++ entities/entity.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/entities/entity.cpp b/entities/entity.cpp index 5354c9d..9038954 100644 --- a/entities/entity.cpp +++ b/entities/entity.cpp @@ -1932,6 +1932,16 @@ void Entity::stat_mod_percent(const int stat_id, const float value) { stat_recalculate(stat_id); } +void Entity::stat_mod(const int stat_id, const float base, const float bonus, const float percent) { + ERR_FAIL_INDEX(stat_id, ESS::get_instance()->stat_get_count()); + + _stats.write[stat_id].base += base; + _stats.write[stat_id].bonus += bonus; + _stats.write[stat_id].percent += percent; + + stat_recalculate(stat_id); +} + float Entity::stat_gets_current(const int stat_id) const { ERR_FAIL_INDEX_V(stat_id, ESS::get_instance()->stat_get_count(), 0); @@ -6904,6 +6914,8 @@ void Entity::_bind_methods() { ClassDB::bind_method(D_METHOD("stat_set_percent", "stat_id", "value"), &Entity::stat_set_percent); ClassDB::bind_method(D_METHOD("stat_mod_percent", "stat_id", "value"), &Entity::stat_mod_percent); + ClassDB::bind_method(D_METHOD("stat_mod", "stat_id", "base", "bonus", "percent"), &Entity::stat_mod); + ClassDB::bind_method(D_METHOD("stat_gets_current", "stat_id"), &Entity::stat_gets_current); ClassDB::bind_method(D_METHOD("stat_sets_current", "stat_id", "value"), &Entity::stat_sets_current); diff --git a/entities/entity.h b/entities/entity.h index e64005b..cf7308c 100644 --- a/entities/entity.h +++ b/entities/entity.h @@ -383,6 +383,8 @@ public: void stat_set_percent(const int stat_id, const float value); void stat_mod_percent(const int stat_id, const float value); + void stat_mod(const int stat_id, const float base, const float bonus, const float percent); + float stat_gets_current(const int stat_id) const; void stat_sets_current(const int stat_id, const float value);