mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-02-22 17:18:12 +01:00
ItemInstance now also stores stat modifier data like ItemTemplate.
This commit is contained in:
parent
2d2629ba09
commit
cb0b8271e1
1
SCsub
1
SCsub
@ -19,7 +19,6 @@ sources = [
|
|||||||
|
|
||||||
"data/entities/xp_data.cpp",
|
"data/entities/xp_data.cpp",
|
||||||
|
|
||||||
"data/items/item_stat_modifier.cpp",
|
|
||||||
"data/items/item_instance.cpp",
|
"data/items/item_instance.cpp",
|
||||||
"data/items/item_template.cpp",
|
"data/items/item_template.cpp",
|
||||||
"data/items/equipment_data.cpp",
|
"data/items/equipment_data.cpp",
|
||||||
|
@ -21,7 +21,6 @@ def get_doc_classes():
|
|||||||
"CraftRecipe",
|
"CraftRecipe",
|
||||||
"EquipmentData",
|
"EquipmentData",
|
||||||
"ItemInstance",
|
"ItemInstance",
|
||||||
"ItemStatModifier",
|
|
||||||
"ItemTemplate",
|
"ItemTemplate",
|
||||||
"ModelVisualEntry",
|
"ModelVisualEntry",
|
||||||
"ModelVisual",
|
"ModelVisual",
|
||||||
|
@ -39,13 +39,59 @@ void ItemInstance::set_item_template(const Ref<ItemTemplate> &value) {
|
|||||||
_item_template_path = value->get_path();
|
_item_template_path = value->get_path();
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<ItemStatModifier> ItemInstance::get_item_stat_modifier(const int index) {
|
int ItemInstance::stat_modifier_get_stat_id(const int index) const {
|
||||||
ERR_FAIL_INDEX_V(index, _modifiers.size(), Ref<ItemStatModifier>());
|
ERR_FAIL_INDEX_V(index, _modifiers.size(), 0);
|
||||||
|
|
||||||
return _modifiers.get(index);
|
return _modifiers[index].stat_id;
|
||||||
}
|
}
|
||||||
void ItemInstance::add_item_stat_modifier(const Ref<ItemStatModifier> &modifier) {
|
void ItemInstance::stat_modifier_set_stat_id(const int index, const int value) {
|
||||||
_modifiers.push_back(modifier);
|
ERR_FAIL_INDEX(index, _modifiers.size());
|
||||||
|
|
||||||
|
_modifiers.write[index].stat_id = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ItemInstance::stat_modifier_get_base_mod(const int index) const {
|
||||||
|
ERR_FAIL_INDEX_V(index, _modifiers.size(), 0);
|
||||||
|
|
||||||
|
return _modifiers[index].base_mod;
|
||||||
|
}
|
||||||
|
void ItemInstance::stat_modifier_set_base_mod(const int index, const float value) {
|
||||||
|
ERR_FAIL_INDEX(index, _modifiers.size());
|
||||||
|
|
||||||
|
_modifiers.write[index].base_mod = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ItemInstance::stat_modifier_get_bonus_mod(const int index) const {
|
||||||
|
ERR_FAIL_INDEX_V(index, _modifiers.size(), 0);
|
||||||
|
|
||||||
|
return _modifiers[index].bonus_mod;
|
||||||
|
}
|
||||||
|
void ItemInstance::stat_modifier_set_bonus_mod(const int index, const float value) {
|
||||||
|
ERR_FAIL_INDEX(index, _modifiers.size());
|
||||||
|
|
||||||
|
_modifiers.write[index].bonus_mod = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ItemInstance::stat_modifier_get_percent_mod(const int index) const {
|
||||||
|
ERR_FAIL_INDEX_V(index, _modifiers.size(), 0);
|
||||||
|
|
||||||
|
return _modifiers[index].percent_mod;
|
||||||
|
}
|
||||||
|
void ItemInstance::stat_modifier_set_percent_mod(const int index, const float value) {
|
||||||
|
ERR_FAIL_INDEX(index, _modifiers.size());
|
||||||
|
|
||||||
|
_modifiers.write[index].percent_mod = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ItemInstance::add_item_stat_modifier(const int stat_id, const int base_mod, const int bonus_mod, const int percent_mod) {
|
||||||
|
ItemStatModifier mod;
|
||||||
|
|
||||||
|
mod.stat_id = stat_id;
|
||||||
|
mod.base_mod = base_mod;
|
||||||
|
mod.bonus_mod = bonus_mod;
|
||||||
|
mod.percent_mod = percent_mod;
|
||||||
|
|
||||||
|
_modifiers.push_back(mod);
|
||||||
}
|
}
|
||||||
void ItemInstance::remove_item_stat_modifier(const int index) {
|
void ItemInstance::remove_item_stat_modifier(const int index) {
|
||||||
ERR_FAIL_INDEX(index, _modifiers.size());
|
ERR_FAIL_INDEX(index, _modifiers.size());
|
||||||
@ -101,7 +147,16 @@ Dictionary ItemInstance::_to_dict() {
|
|||||||
Array mods;
|
Array mods;
|
||||||
|
|
||||||
for (int i = 0; i < _modifiers.size(); ++i) {
|
for (int i = 0; i < _modifiers.size(); ++i) {
|
||||||
mods.append(_modifiers.get(i)->to_dict());
|
|
||||||
|
Dictionary mdict;
|
||||||
|
|
||||||
|
mdict["stat_id"] = _modifiers[i].stat_id;
|
||||||
|
|
||||||
|
mdict["base_mod"] = _modifiers[i].base_mod;
|
||||||
|
mdict["bonus_mod"] = _modifiers[i].bonus_mod;
|
||||||
|
mdict["percent_mod"] = _modifiers[i].percent_mod;
|
||||||
|
|
||||||
|
mods.append(mdict);
|
||||||
}
|
}
|
||||||
|
|
||||||
dict["modifiers"] = mods;
|
dict["modifiers"] = mods;
|
||||||
@ -122,10 +177,13 @@ void ItemInstance::_from_dict(const Dictionary &dict) {
|
|||||||
Array mods = dict.get("modifiers", Array());
|
Array mods = dict.get("modifiers", Array());
|
||||||
|
|
||||||
for (int i = 0; i < mods.size(); ++i) {
|
for (int i = 0; i < mods.size(); ++i) {
|
||||||
Ref<ItemStatModifier> mod;
|
ItemStatModifier mod;
|
||||||
mod.instance();
|
Dictionary mdict = mods.get(i);
|
||||||
|
|
||||||
mod->from_dict(mods.get(i));
|
mod.stat_id = dict.get("stat_id", 0);
|
||||||
|
mod.base_mod = dict.get("base_mod", 0);
|
||||||
|
mod.bonus_mod = dict.get("bonus_mod", 0);
|
||||||
|
mod.percent_mod = dict.get("percent_mod", 0);
|
||||||
|
|
||||||
_modifiers.push_back(mod);
|
_modifiers.push_back(mod);
|
||||||
}
|
}
|
||||||
@ -155,8 +213,19 @@ void ItemInstance::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("set_charges", "size"), &ItemInstance::set_charges);
|
ClassDB::bind_method(D_METHOD("set_charges", "size"), &ItemInstance::set_charges);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "charges"), "set_charges", "get_charges");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "charges"), "set_charges", "get_charges");
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_item_stat_modifier", "index"), &ItemInstance::get_item_stat_modifier);
|
ClassDB::bind_method(D_METHOD("stat_modifier_get_stat_id", "index"), &ItemInstance::stat_modifier_get_stat_id);
|
||||||
ClassDB::bind_method(D_METHOD("add_item_stat_modifier", "modifier"), &ItemInstance::add_item_stat_modifier);
|
ClassDB::bind_method(D_METHOD("stat_modifier_set_stat_id", "index", "value"), &ItemInstance::stat_modifier_set_stat_id);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("stat_modifier_get_base_mod", "index"), &ItemInstance::stat_modifier_get_base_mod);
|
||||||
|
ClassDB::bind_method(D_METHOD("stat_modifier_set_base_mod", "index", "value"), &ItemInstance::stat_modifier_set_base_mod);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("stat_modifier_get_bonus_mod", "index"), &ItemInstance::stat_modifier_get_bonus_mod);
|
||||||
|
ClassDB::bind_method(D_METHOD("stat_modifier_set_bonus_mod", "index", "value"), &ItemInstance::stat_modifier_set_bonus_mod);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("stat_modifier_get_percent_mod", "index"), &ItemInstance::stat_modifier_get_percent_mod);
|
||||||
|
ClassDB::bind_method(D_METHOD("stat_modifier_set_percent_mod", "index", "value"), &ItemInstance::stat_modifier_set_percent_mod);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("add_item_stat_modifier", "stat_id", "base_mod", "bonus_mod", "percent_mod"), &ItemInstance::add_item_stat_modifier);
|
||||||
ClassDB::bind_method(D_METHOD("remove_item_stat_modifier", "index"), &ItemInstance::remove_item_stat_modifier);
|
ClassDB::bind_method(D_METHOD("remove_item_stat_modifier", "index"), &ItemInstance::remove_item_stat_modifier);
|
||||||
ClassDB::bind_method(D_METHOD("clear_item_stat_modifiers"), &ItemInstance::clear_item_stat_modifiers);
|
ClassDB::bind_method(D_METHOD("clear_item_stat_modifiers"), &ItemInstance::clear_item_stat_modifiers);
|
||||||
ClassDB::bind_method(D_METHOD("stat_modifier_get_count"), &ItemInstance::stat_modifier_get_count);
|
ClassDB::bind_method(D_METHOD("stat_modifier_get_count"), &ItemInstance::stat_modifier_get_count);
|
||||||
|
@ -27,7 +27,6 @@ SOFTWARE.
|
|||||||
#include "core/vector.h"
|
#include "core/vector.h"
|
||||||
|
|
||||||
#include "../../item_enums.h"
|
#include "../../item_enums.h"
|
||||||
#include "item_stat_modifier.h"
|
|
||||||
|
|
||||||
class ItemTemplate;
|
class ItemTemplate;
|
||||||
|
|
||||||
@ -38,8 +37,20 @@ public:
|
|||||||
Ref<ItemTemplate> get_item_template();
|
Ref<ItemTemplate> get_item_template();
|
||||||
void set_item_template(const Ref<ItemTemplate> &value);
|
void set_item_template(const Ref<ItemTemplate> &value);
|
||||||
|
|
||||||
Ref<ItemStatModifier> get_item_stat_modifier(const int index);
|
//Modifiers
|
||||||
void add_item_stat_modifier(const Ref<ItemStatModifier> &modifier);
|
int stat_modifier_get_stat_id(const int index) const;
|
||||||
|
void stat_modifier_set_stat_id(const int index, const int value);
|
||||||
|
|
||||||
|
float stat_modifier_get_base_mod(const int index) const;
|
||||||
|
void stat_modifier_set_base_mod(const int index, const float value);
|
||||||
|
|
||||||
|
float stat_modifier_get_bonus_mod(const int index) const;
|
||||||
|
void stat_modifier_set_bonus_mod(const int index, const float value);
|
||||||
|
|
||||||
|
float stat_modifier_get_percent_mod(const int index) const;
|
||||||
|
void stat_modifier_set_percent_mod(const int index, const float value);
|
||||||
|
|
||||||
|
void add_item_stat_modifier(const int stat_id, const int base_mod, const int bonus_mod, const int percent_mod);
|
||||||
void remove_item_stat_modifier(const int index);
|
void remove_item_stat_modifier(const int index);
|
||||||
void clear_item_stat_modifiers();
|
void clear_item_stat_modifiers();
|
||||||
|
|
||||||
@ -65,6 +76,21 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
struct ItemStatModifier {
|
||||||
|
int stat_id;
|
||||||
|
float base_mod;
|
||||||
|
float bonus_mod;
|
||||||
|
float percent_mod;
|
||||||
|
|
||||||
|
ItemStatModifier() {
|
||||||
|
stat_id = 0;
|
||||||
|
base_mod = 0;
|
||||||
|
bonus_mod = 0;
|
||||||
|
percent_mod = 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ref<ItemTemplate> _item_template;
|
Ref<ItemTemplate> _item_template;
|
||||||
StringName _item_template_path;
|
StringName _item_template_path;
|
||||||
@ -72,7 +98,7 @@ private:
|
|||||||
int _stack_size;
|
int _stack_size;
|
||||||
int _charges;
|
int _charges;
|
||||||
|
|
||||||
Vector<Ref<ItemStatModifier> > _modifiers;
|
Vector<ItemStatModifier> _modifiers;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright (c) 2019-2020 Péter Magyar
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "item_stat_modifier.h"
|
|
||||||
|
|
||||||
#include "../../singletons/ess.h"
|
|
||||||
|
|
||||||
int ItemStatModifier::get_stat_id() {
|
|
||||||
return _stat_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ItemStatModifier::set_stat_id(int value) {
|
|
||||||
_stat_id = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
float ItemStatModifier::get_base_mod() {
|
|
||||||
return _base_mod;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ItemStatModifier::set_base_mod(float value) {
|
|
||||||
_base_mod = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
float ItemStatModifier::get_bonus_mod() {
|
|
||||||
return _bonus_mod;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ItemStatModifier::set_bonus_mod(float value) {
|
|
||||||
_bonus_mod = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
float ItemStatModifier::get_percent_mod() {
|
|
||||||
return _percent_mod;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ItemStatModifier::set_percent_mod(float value) {
|
|
||||||
_percent_mod = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
Dictionary ItemStatModifier::to_dict() {
|
|
||||||
return call("_to_dict");
|
|
||||||
}
|
|
||||||
void ItemStatModifier::from_dict(const Dictionary &dict) {
|
|
||||||
call("_from_dict", dict);
|
|
||||||
}
|
|
||||||
|
|
||||||
Dictionary ItemStatModifier::_to_dict() {
|
|
||||||
Dictionary dict;
|
|
||||||
|
|
||||||
dict["stat_id"] = static_cast<int>(_stat_id);
|
|
||||||
|
|
||||||
dict["base_mod"] = _base_mod;
|
|
||||||
dict["bonus_mod"] = _bonus_mod;
|
|
||||||
dict["percent_mod"] = _percent_mod;
|
|
||||||
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
void ItemStatModifier::_from_dict(const Dictionary &dict) {
|
|
||||||
ERR_FAIL_COND(dict.empty());
|
|
||||||
|
|
||||||
_stat_id = dict.get("stat_id", 0);
|
|
||||||
_base_mod = dict.get("base_mod", 0);
|
|
||||||
_bonus_mod = dict.get("bonus_mod", 0);
|
|
||||||
_percent_mod = dict.get("percent_mod", 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStatModifier::ItemStatModifier() {
|
|
||||||
_stat_id = 0;
|
|
||||||
_base_mod = 0;
|
|
||||||
_bonus_mod = 0;
|
|
||||||
_percent_mod = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ItemStatModifier::_validate_property(PropertyInfo &property) const {
|
|
||||||
if (property.name == "stat_id") {
|
|
||||||
property.hint_string = ESS::get_singleton()->stat_get_string();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ItemStatModifier::_bind_methods() {
|
|
||||||
ClassDB::bind_method(D_METHOD("get_stat_id"), &ItemStatModifier::get_stat_id);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_stat_id", "value"), &ItemStatModifier::set_stat_id);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "stat_id", PROPERTY_HINT_ENUM, ""), "set_stat_id", "get_stat_id");
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_base_mod"), &ItemStatModifier::get_base_mod);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_base_mod", "value"), &ItemStatModifier::set_base_mod);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "base_mod"), "set_base_mod", "get_base_mod");
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_bonus_mod"), &ItemStatModifier::get_bonus_mod);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_bonus_mod", "value"), &ItemStatModifier::set_bonus_mod);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "bonus_mod"), "set_bonus_mod", "get_bonus_mod");
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_percent_mod"), &ItemStatModifier::get_percent_mod);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_percent_mod", "value"), &ItemStatModifier::set_percent_mod);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "percent_mod"), "set_percent_mod", "get_percent_mod");
|
|
||||||
}
|
|
@ -1,65 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright (c) 2019-2020 Péter Magyar
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef ITEM_STAT_MODIFIER_H
|
|
||||||
#define ITEM_STAT_MODIFIER_H
|
|
||||||
|
|
||||||
#include "core/reference.h"
|
|
||||||
|
|
||||||
#include "../../defines.h"
|
|
||||||
|
|
||||||
class ItemStatModifier : public Reference {
|
|
||||||
GDCLASS(ItemStatModifier, Reference);
|
|
||||||
|
|
||||||
public:
|
|
||||||
int get_stat_id();
|
|
||||||
void set_stat_id(int value);
|
|
||||||
|
|
||||||
float get_base_mod();
|
|
||||||
void set_base_mod(float value);
|
|
||||||
|
|
||||||
float get_bonus_mod();
|
|
||||||
void set_bonus_mod(float value);
|
|
||||||
|
|
||||||
float get_percent_mod();
|
|
||||||
void set_percent_mod(float value);
|
|
||||||
|
|
||||||
Dictionary to_dict();
|
|
||||||
void from_dict(const Dictionary &dict);
|
|
||||||
|
|
||||||
virtual Dictionary _to_dict();
|
|
||||||
virtual void _from_dict(const Dictionary &dict);
|
|
||||||
|
|
||||||
ItemStatModifier();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void _validate_property(PropertyInfo &property) const;
|
|
||||||
static void _bind_methods();
|
|
||||||
|
|
||||||
private:
|
|
||||||
int _stat_id;
|
|
||||||
float _base_mod;
|
|
||||||
float _bonus_mod;
|
|
||||||
float _percent_mod;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -148,16 +148,22 @@ public:
|
|||||||
|
|
||||||
float stat_modifier_get_min_base_mod(const int index) const;
|
float stat_modifier_get_min_base_mod(const int index) const;
|
||||||
void stat_modifier_set_min_base_mod(const int index, const float value);
|
void stat_modifier_set_min_base_mod(const int index, const float value);
|
||||||
|
|
||||||
float stat_modifier_get_max_base_mod(const int index) const;
|
float stat_modifier_get_max_base_mod(const int index) const;
|
||||||
void stat_modifier_set_max_base_mod(const int index, const float value);
|
void stat_modifier_set_max_base_mod(const int index, const float value);
|
||||||
|
|
||||||
float stat_modifier_get_min_bonus_mod(const int index) const;
|
float stat_modifier_get_min_bonus_mod(const int index) const;
|
||||||
void stat_modifier_set_min_bonus_mod(const int index, const float value);
|
void stat_modifier_set_min_bonus_mod(const int index, const float value);
|
||||||
|
|
||||||
float stat_modifier_get_max_bonus_mod(const int index) const;
|
float stat_modifier_get_max_bonus_mod(const int index) const;
|
||||||
void stat_modifier_set_max_bonus_mod(const int index, const float value);
|
void stat_modifier_set_max_bonus_mod(const int index, const float value);
|
||||||
|
|
||||||
float stat_modifier_get_min_percent_mod(const int index) const;
|
float stat_modifier_get_min_percent_mod(const int index) const;
|
||||||
void stat_modifier_set_min_percent_mod(const int index, const float value);
|
void stat_modifier_set_min_percent_mod(const int index, const float value);
|
||||||
|
|
||||||
float stat_modifier_get_max_percent_mod(const int index) const;
|
float stat_modifier_get_max_percent_mod(const int index) const;
|
||||||
void stat_modifier_set_max_percent_mod(const int index, const float value);
|
void stat_modifier_set_max_percent_mod(const int index, const float value);
|
||||||
|
|
||||||
float stat_modifier_get_scaling_factor(const int index) const;
|
float stat_modifier_get_scaling_factor(const int index) const;
|
||||||
void stat_modifier_set_scaling_factor(const int index, const float value);
|
void stat_modifier_set_scaling_factor(const int index, const float value);
|
||||||
|
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<class name="ItemStatModifier" inherits="Reference" version="3.2">
|
|
||||||
<brief_description>
|
|
||||||
Runtime item [Stat] modifier data.
|
|
||||||
</brief_description>
|
|
||||||
<description>
|
|
||||||
</description>
|
|
||||||
<tutorials>
|
|
||||||
</tutorials>
|
|
||||||
<methods>
|
|
||||||
</methods>
|
|
||||||
<members>
|
|
||||||
<member name="base_mod" type="float" setter="set_base_mod" getter="get_base_mod" default="0.0">
|
|
||||||
</member>
|
|
||||||
<member name="bonus_mod" type="float" setter="set_bonus_mod" getter="get_bonus_mod" default="0.0">
|
|
||||||
</member>
|
|
||||||
<member name="percent_mod" type="float" setter="set_percent_mod" getter="get_percent_mod" default="0.0">
|
|
||||||
</member>
|
|
||||||
<member name="stat_id" type="int" setter="set_stat_id" getter="get_stat_id" enum="Stat.StatId" default="0">
|
|
||||||
</member>
|
|
||||||
</members>
|
|
||||||
<constants>
|
|
||||||
</constants>
|
|
||||||
</class>
|
|
@ -2190,16 +2190,11 @@ void Entity::_equip_applys_item(Ref<ItemInstance> item) {
|
|||||||
ERR_FAIL_COND(!it.is_valid());
|
ERR_FAIL_COND(!it.is_valid());
|
||||||
|
|
||||||
for (int i = 0; i < item->stat_modifier_get_count(); ++i) {
|
for (int i = 0; i < item->stat_modifier_get_count(); ++i) {
|
||||||
Ref<ItemStatModifier> mod = item->get_item_stat_modifier(i);
|
int sid = item->stat_modifier_get_stat_id(i);
|
||||||
|
|
||||||
if (!mod.is_valid())
|
stat_mod_base(sid, item->stat_modifier_get_base_mod(i));
|
||||||
continue;
|
stat_mod_bonus(sid, item->stat_modifier_get_bonus_mod(i));
|
||||||
|
stat_mod_percent(sid, item->stat_modifier_get_percent_mod(i));
|
||||||
int sid = mod->get_stat_id();
|
|
||||||
|
|
||||||
stat_mod_base(sid, mod->get_base_mod());
|
|
||||||
stat_mod_bonus(sid, mod->get_bonus_mod());
|
|
||||||
stat_mod_percent(sid, mod->get_percent_mod());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Entity::_equip_deapplys_item(Ref<ItemInstance> item) {
|
void Entity::_equip_deapplys_item(Ref<ItemInstance> item) {
|
||||||
@ -2210,16 +2205,11 @@ void Entity::_equip_deapplys_item(Ref<ItemInstance> item) {
|
|||||||
ERR_FAIL_COND(!it.is_valid());
|
ERR_FAIL_COND(!it.is_valid());
|
||||||
|
|
||||||
for (int i = 0; i < item->stat_modifier_get_count(); ++i) {
|
for (int i = 0; i < item->stat_modifier_get_count(); ++i) {
|
||||||
Ref<ItemStatModifier> mod = item->get_item_stat_modifier(i);
|
int sid = item->stat_modifier_get_stat_id(i);
|
||||||
|
|
||||||
if (!mod.is_valid())
|
stat_mod_base(sid, -item->stat_modifier_get_base_mod(i));
|
||||||
continue;
|
stat_mod_bonus(sid, -item->stat_modifier_get_bonus_mod(i));
|
||||||
|
stat_mod_percent(sid, -item->stat_modifier_get_percent_mod(i));
|
||||||
int sid = mod->get_stat_id();
|
|
||||||
|
|
||||||
stat_mod_base(sid, -mod->get_base_mod());
|
|
||||||
stat_mod_bonus(sid, -mod->get_bonus_mod());
|
|
||||||
stat_mod_percent(sid, -mod->get_percent_mod());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,6 @@ SOFTWARE.
|
|||||||
|
|
||||||
#include "data/entities/xp_data.h"
|
#include "data/entities/xp_data.h"
|
||||||
#include "data/items/equipment_data.h"
|
#include "data/items/equipment_data.h"
|
||||||
#include "data/items/item_stat_modifier.h"
|
|
||||||
#include "data/spells/spell_cooldown_manipulation_data.h"
|
#include "data/spells/spell_cooldown_manipulation_data.h"
|
||||||
|
|
||||||
#include "entities/data/entity_class_data.h"
|
#include "entities/data/entity_class_data.h"
|
||||||
@ -161,7 +160,6 @@ void register_entity_spell_system_types() {
|
|||||||
ClassDB::register_class<ItemContainerDataEntry>();
|
ClassDB::register_class<ItemContainerDataEntry>();
|
||||||
|
|
||||||
ClassDB::register_class<XPData>();
|
ClassDB::register_class<XPData>();
|
||||||
ClassDB::register_class<ItemStatModifier>();
|
|
||||||
ClassDB::register_class<ItemEnums>();
|
ClassDB::register_class<ItemEnums>();
|
||||||
ClassDB::register_class<ItemTemplate>();
|
ClassDB::register_class<ItemTemplate>();
|
||||||
ClassDB::register_class<ItemInstance>();
|
ClassDB::register_class<ItemInstance>();
|
||||||
|
Loading…
Reference in New Issue
Block a user