mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-05-09 22:41:39 +02:00
-Moved StatModifier from Stats to it's own file. Also updated i.
-Removed the old, now unneeded SpellCastData stuff from Entity. -Small interface fixed to stat, also fixed applying and deapplying modifiers. -Fixed AuraStatAttribute's bindings. -Made the aura commands a little more intuitive. -Added gcd callback bindings. -Has Global Cooldonw in spell is now defaults to true. -Small binding fixes.
This commit is contained in:
parent
39c9d6c36d
commit
38b155d4ad
1
SCsub
1
SCsub
@ -32,6 +32,7 @@ module_env.add_source_files(env.modules_sources,"data/spell.cpp")
|
|||||||
module_env.add_source_files(env.modules_sources,"data/spell/spell_data_constants.cpp")
|
module_env.add_source_files(env.modules_sources,"data/spell/spell_data_constants.cpp")
|
||||||
|
|
||||||
module_env.add_source_files(env.modules_sources,"entities/stats/stat.cpp")
|
module_env.add_source_files(env.modules_sources,"entities/stats/stat.cpp")
|
||||||
|
module_env.add_source_files(env.modules_sources,"entities/stats/stat_modifier.cpp")
|
||||||
module_env.add_source_files(env.modules_sources,"entities/stats/stat_data.cpp")
|
module_env.add_source_files(env.modules_sources,"entities/stats/stat_data.cpp")
|
||||||
|
|
||||||
module_env.add_source_files(env.modules_sources,"entities/player_talent.cpp")
|
module_env.add_source_files(env.modules_sources,"entities/player_talent.cpp")
|
||||||
|
@ -410,6 +410,20 @@ void Aura::sapply(Ref<AuraApplyInfo> info) {
|
|||||||
call("_sapply", info);
|
call("_sapply", info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Aura::sdeapply(Ref<AuraData> info) {
|
||||||
|
ERR_FAIL_COND(!info.is_valid());
|
||||||
|
|
||||||
|
//always exists
|
||||||
|
call("_sdeapply", info);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Aura::sadd(Ref<AuraData> aura) {
|
||||||
|
ERR_FAIL_COND(!aura.is_valid());
|
||||||
|
|
||||||
|
//always exists
|
||||||
|
call("_sadd", aura);
|
||||||
|
}
|
||||||
|
|
||||||
void Aura::sremove(Ref<AuraData> aura) {
|
void Aura::sremove(Ref<AuraData> aura) {
|
||||||
ERR_FAIL_COND(!aura.is_valid());
|
ERR_FAIL_COND(!aura.is_valid());
|
||||||
|
|
||||||
@ -616,6 +630,19 @@ void Aura::son_category_cooldown_removed(Ref<AuraData> data, Ref<CategoryCooldow
|
|||||||
call("_son_category_cooldown_removed", data, category_cooldown);
|
call("_son_category_cooldown_removed", data, category_cooldown);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Aura::son_gcd_started(Ref<AuraData> data, float gcd) {
|
||||||
|
ERR_FAIL_COND(!data.is_valid());
|
||||||
|
|
||||||
|
if (has_method("_son_gcd_started"))
|
||||||
|
call("_son_gcd_started", data, gcd);
|
||||||
|
}
|
||||||
|
void Aura::son_gcd_finished(Ref<AuraData> data) {
|
||||||
|
ERR_FAIL_COND(!data.is_valid());
|
||||||
|
|
||||||
|
if (has_method("_son_gcd_finished"))
|
||||||
|
call("_son_gcd_finished", data);
|
||||||
|
}
|
||||||
|
|
||||||
void Aura::con_cast_failed(Ref<AuraData> data, Ref<SpellCastInfo> info) {
|
void Aura::con_cast_failed(Ref<AuraData> data, Ref<SpellCastInfo> info) {
|
||||||
if (has_method("_con_cast_failed"))
|
if (has_method("_con_cast_failed"))
|
||||||
call("_con_cast_failed", data, info);
|
call("_con_cast_failed", data, info);
|
||||||
@ -712,6 +739,19 @@ void Aura::con_dealt_heal(Ref<AuraData> data, Ref<SpellHealInfo> info){
|
|||||||
call("_con_dealt_heal", data, info);
|
call("_con_dealt_heal", data, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Aura::con_gcd_started(Ref<AuraData> data, float gcd) {
|
||||||
|
ERR_FAIL_COND(!data.is_valid());
|
||||||
|
|
||||||
|
if (has_method("_con_gcd_started"))
|
||||||
|
call("_con_gcd_started", data, gcd);
|
||||||
|
}
|
||||||
|
void Aura::con_gcd_finished(Ref<AuraData> data) {
|
||||||
|
ERR_FAIL_COND(!data.is_valid());
|
||||||
|
|
||||||
|
if (has_method("_con_gcd_finished"))
|
||||||
|
call("_con_gcd_finished", data);
|
||||||
|
}
|
||||||
|
|
||||||
void Aura::setup_aura_data(Ref<AuraData> data, Ref<AuraApplyInfo> info) {
|
void Aura::setup_aura_data(Ref<AuraData> data, Ref<AuraApplyInfo> info) {
|
||||||
ERR_FAIL_COND(!data.is_valid() || !info.is_valid());
|
ERR_FAIL_COND(!data.is_valid() || !info.is_valid());
|
||||||
|
|
||||||
@ -844,25 +884,44 @@ void Aura::_sapply(Ref<AuraApplyInfo> info) {
|
|||||||
Ref<AuraData> ad(memnew(AuraData()));
|
Ref<AuraData> ad(memnew(AuraData()));
|
||||||
setup_aura_data(ad, info);
|
setup_aura_data(ad, info);
|
||||||
|
|
||||||
info->get_target()->sremove_aura(ad);
|
|
||||||
info->get_target()->sadd_aura(ad);
|
}
|
||||||
|
|
||||||
|
void Aura::_sdeapply(Ref<AuraData> info) {
|
||||||
|
ERR_FAIL_COND(info->get_owner() == NULL || info->get_caster() == NULL || !info->get_aura().is_valid());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Aura::_sadd(Ref<AuraData> aura) {
|
||||||
|
ERR_FAIL_COND(aura->get_owner() == NULL);
|
||||||
|
|
||||||
|
//sapply(aura);
|
||||||
|
|
||||||
|
aura->get_owner()->sremove_aura(aura);
|
||||||
|
aura->get_owner()->sadd_aura(aura);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Aura::_sremove(Ref<AuraData> aura) {
|
void Aura::_sremove(Ref<AuraData> aura) {
|
||||||
ERR_FAIL_COND(aura->get_owner() == NULL);
|
ERR_FAIL_COND(aura->get_owner() == NULL);
|
||||||
|
|
||||||
|
sdeapply(aura);
|
||||||
|
|
||||||
aura->get_owner()->sremove_aura(aura);
|
aura->get_owner()->sremove_aura(aura);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Aura::_sremove_expired(Ref<AuraData> aura) {
|
void Aura::_sremove_expired(Ref<AuraData> aura) {
|
||||||
ERR_FAIL_COND(aura->get_owner() == NULL);
|
ERR_FAIL_COND(aura->get_owner() == NULL);
|
||||||
|
|
||||||
|
sdeapply(aura);
|
||||||
|
|
||||||
aura->get_owner()->sremove_aura_expired(aura);
|
aura->get_owner()->sremove_aura_expired(aura);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Aura::_sremove_dispell(Ref<AuraData> aura) {
|
void Aura::_sremove_dispell(Ref<AuraData> aura) {
|
||||||
ERR_FAIL_COND(aura->get_owner() == NULL);
|
ERR_FAIL_COND(aura->get_owner() == NULL);
|
||||||
|
|
||||||
|
sdeapply(aura);
|
||||||
|
|
||||||
aura->get_owner()->sremove_aura_dispelled(aura);
|
aura->get_owner()->sremove_aura_dispelled(aura);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -922,18 +981,24 @@ void Aura::_validate_property(PropertyInfo &property) const {
|
|||||||
void Aura::_bind_methods() {
|
void Aura::_bind_methods() {
|
||||||
//Commands
|
//Commands
|
||||||
ClassDB::bind_method(D_METHOD("sapply", "info"), &Aura::sapply);
|
ClassDB::bind_method(D_METHOD("sapply", "info"), &Aura::sapply);
|
||||||
|
ClassDB::bind_method(D_METHOD("sdeapply", "aura"), &Aura::sdeapply);
|
||||||
|
ClassDB::bind_method(D_METHOD("sadd", "aura"), &Aura::sadd);
|
||||||
ClassDB::bind_method(D_METHOD("sremove", "aura"), &Aura::sremove);
|
ClassDB::bind_method(D_METHOD("sremove", "aura"), &Aura::sremove);
|
||||||
ClassDB::bind_method(D_METHOD("sremove_expired", "aura"), &Aura::sremove_expired);
|
ClassDB::bind_method(D_METHOD("sremove_expired", "aura"), &Aura::sremove_expired);
|
||||||
ClassDB::bind_method(D_METHOD("sremove_dispell", "aura"), &Aura::sremove_dispell);
|
ClassDB::bind_method(D_METHOD("sremove_dispell", "aura"), &Aura::sremove_dispell);
|
||||||
ClassDB::bind_method(D_METHOD("supdate", "aura", "delta"), &Aura::supdate);
|
ClassDB::bind_method(D_METHOD("supdate", "aura", "delta"), &Aura::supdate);
|
||||||
|
|
||||||
BIND_VMETHOD(MethodInfo("_sapply", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "AuraApplyInfo")));
|
BIND_VMETHOD(MethodInfo("_sapply", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "AuraApplyInfo")));
|
||||||
|
BIND_VMETHOD(MethodInfo("_sdeapply", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
||||||
|
BIND_VMETHOD(MethodInfo("_sadd", PropertyInfo(Variant::OBJECT, "aura", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
||||||
BIND_VMETHOD(MethodInfo("_sremove", PropertyInfo(Variant::OBJECT, "aura", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
BIND_VMETHOD(MethodInfo("_sremove", PropertyInfo(Variant::OBJECT, "aura", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
||||||
BIND_VMETHOD(MethodInfo("_sremove_expired", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
BIND_VMETHOD(MethodInfo("_sremove_expired", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
||||||
BIND_VMETHOD(MethodInfo("_sremove_dispell", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
BIND_VMETHOD(MethodInfo("_sremove_dispell", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
||||||
BIND_VMETHOD(MethodInfo("_supdate", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::REAL, "delta")));
|
BIND_VMETHOD(MethodInfo("_supdate", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::REAL, "delta")));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("_sapply", "info"), &Aura::_sapply);
|
ClassDB::bind_method(D_METHOD("_sapply", "info"), &Aura::_sapply);
|
||||||
|
ClassDB::bind_method(D_METHOD("_sdeapply", "aura"), &Aura::_sdeapply);
|
||||||
|
ClassDB::bind_method(D_METHOD("_sadd", "aura"), &Aura::_sadd);
|
||||||
ClassDB::bind_method(D_METHOD("_sremove", "aura"), &Aura::_sremove);
|
ClassDB::bind_method(D_METHOD("_sremove", "aura"), &Aura::_sremove);
|
||||||
ClassDB::bind_method(D_METHOD("_sremove_expired", "aura"), &Aura::_sremove_expired);
|
ClassDB::bind_method(D_METHOD("_sremove_expired", "aura"), &Aura::_sremove_expired);
|
||||||
ClassDB::bind_method(D_METHOD("_sremove_dispell", "aura"), &Aura::_sremove_dispell);
|
ClassDB::bind_method(D_METHOD("_sremove_dispell", "aura"), &Aura::_sremove_dispell);
|
||||||
@ -974,6 +1039,9 @@ void Aura::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("son_category_cooldown_added", "data", "category_cooldown"), &Aura::son_category_cooldown_added);
|
ClassDB::bind_method(D_METHOD("son_category_cooldown_added", "data", "category_cooldown"), &Aura::son_category_cooldown_added);
|
||||||
ClassDB::bind_method(D_METHOD("son_category_cooldown_removed", "data", "category_cooldown"), &Aura::son_category_cooldown_removed);
|
ClassDB::bind_method(D_METHOD("son_category_cooldown_removed", "data", "category_cooldown"), &Aura::son_category_cooldown_removed);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("son_gcd_started", "data", "gcd"), &Aura::son_gcd_started);
|
||||||
|
ClassDB::bind_method(D_METHOD("son_gcd_finished", "data"), &Aura::son_gcd_finished);
|
||||||
|
|
||||||
BIND_VMETHOD(MethodInfo("_son_before_cast", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_son_before_cast", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
BIND_VMETHOD(MethodInfo("_son_before_cast_target", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_son_before_cast_target", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
BIND_VMETHOD(MethodInfo("_son_cast_started", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_son_cast_started", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
@ -1007,6 +1075,9 @@ void Aura::_bind_methods() {
|
|||||||
BIND_VMETHOD(MethodInfo("_son_category_cooldown_added", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "category_cooldown", PROPERTY_HINT_RESOURCE_TYPE, "CategoryCooldown")));
|
BIND_VMETHOD(MethodInfo("_son_category_cooldown_added", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "category_cooldown", PROPERTY_HINT_RESOURCE_TYPE, "CategoryCooldown")));
|
||||||
BIND_VMETHOD(MethodInfo("_son_category_cooldown_removed", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "category_cooldown", PROPERTY_HINT_RESOURCE_TYPE, "CategoryCooldown")));
|
BIND_VMETHOD(MethodInfo("_son_category_cooldown_removed", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "category_cooldown", PROPERTY_HINT_RESOURCE_TYPE, "CategoryCooldown")));
|
||||||
|
|
||||||
|
BIND_VMETHOD(MethodInfo("_son_gcd_started", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::REAL, "gcd")));
|
||||||
|
BIND_VMETHOD(MethodInfo("_son_gcd_finished", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
||||||
|
|
||||||
//Clientside Event Handlers
|
//Clientside Event Handlers
|
||||||
ClassDB::bind_method(D_METHOD("con_cast_failed", "data", "info"), &Aura::con_cast_failed);
|
ClassDB::bind_method(D_METHOD("con_cast_failed", "data", "info"), &Aura::con_cast_failed);
|
||||||
ClassDB::bind_method(D_METHOD("con_cast_started", "data", "info"), &Aura::con_cast_started);
|
ClassDB::bind_method(D_METHOD("con_cast_started", "data", "info"), &Aura::con_cast_started);
|
||||||
@ -1030,6 +1101,9 @@ void Aura::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("con_heal_dealt", "data", "info"), &Aura::con_heal_dealt);
|
ClassDB::bind_method(D_METHOD("con_heal_dealt", "data", "info"), &Aura::con_heal_dealt);
|
||||||
ClassDB::bind_method(D_METHOD("con_dealt_heal", "data", "info"), &Aura::con_dealt_heal);
|
ClassDB::bind_method(D_METHOD("con_dealt_heal", "data", "info"), &Aura::con_dealt_heal);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("con_gcd_started", "data", "info"), &Aura::con_gcd_started);
|
||||||
|
ClassDB::bind_method(D_METHOD("con_gcd_finished", "data"), &Aura::con_gcd_finished);
|
||||||
|
|
||||||
BIND_VMETHOD(MethodInfo("_con_cast_failed", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_con_cast_failed", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
BIND_VMETHOD(MethodInfo("_con_cast_started", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_con_cast_started", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
BIND_VMETHOD(MethodInfo("_con_cast_state_changed", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_con_cast_state_changed", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
@ -1052,6 +1126,9 @@ void Aura::_bind_methods() {
|
|||||||
BIND_VMETHOD(MethodInfo("_con_heal_dealt", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
BIND_VMETHOD(MethodInfo("_con_heal_dealt", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
||||||
BIND_VMETHOD(MethodInfo("_con_dealt_heal", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
BIND_VMETHOD(MethodInfo("_con_dealt_heal", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
||||||
|
|
||||||
|
BIND_VMETHOD(MethodInfo("_con_gcd_started", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::REAL, "gcd")));
|
||||||
|
BIND_VMETHOD(MethodInfo("_con_gcd_finished", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
||||||
|
|
||||||
//Calculations / Queries
|
//Calculations / Queries
|
||||||
ClassDB::bind_method(D_METHOD("setup_aura_data", "data", "info"), &Aura::setup_aura_data);
|
ClassDB::bind_method(D_METHOD("setup_aura_data", "data", "info"), &Aura::setup_aura_data);
|
||||||
|
|
||||||
@ -1223,18 +1300,18 @@ void Aura::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("set_heal_scaling_curve", "curve"), &Aura::set_heal_scaling_curve);
|
ClassDB::bind_method(D_METHOD("set_heal_scaling_curve", "curve"), &Aura::set_heal_scaling_curve);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "heal_scaling_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_heal_scaling_curve", "get_heal_scaling_curve");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "heal_scaling_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_heal_scaling_curve", "get_heal_scaling_curve");
|
||||||
|
|
||||||
//ADD_GROUP("States", "states"); not needed
|
ADD_GROUP("States", "states");
|
||||||
ClassDB::bind_method(D_METHOD("get_add_states"), &Aura::get_add_states);
|
ClassDB::bind_method(D_METHOD("get_add_states"), &Aura::get_add_states);
|
||||||
ClassDB::bind_method(D_METHOD("set_add_states", "value"), &Aura::set_add_states);
|
ClassDB::bind_method(D_METHOD("set_add_states", "value"), &Aura::set_add_states);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "states/add_states", PROPERTY_HINT_FLAGS, EntityEnums::BINDING_STRING_ENTITY_STATE_TYPES), "set_add_states", "get_add_states");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "states_add", PROPERTY_HINT_FLAGS, EntityEnums::BINDING_STRING_ENTITY_STATE_TYPES), "set_add_states", "get_add_states");
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_remove_effects_with_states"), &Aura::get_remove_effects_with_states);
|
ClassDB::bind_method(D_METHOD("get_remove_effects_with_states"), &Aura::get_remove_effects_with_states);
|
||||||
ClassDB::bind_method(D_METHOD("set_remove_effects_with_states", "value"), &Aura::set_remove_effects_with_states);
|
ClassDB::bind_method(D_METHOD("set_remove_effects_with_states", "value"), &Aura::set_remove_effects_with_states);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "states/remove_effects_with_states", PROPERTY_HINT_FLAGS, EntityEnums::BINDING_STRING_ENTITY_STATE_TYPES), "set_remove_effects_with_states", "get_remove_effects_with_states");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "states_remove_effects", PROPERTY_HINT_FLAGS, EntityEnums::BINDING_STRING_ENTITY_STATE_TYPES), "set_remove_effects_with_states", "get_remove_effects_with_states");
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_supress_states"), &Aura::get_supress_states);
|
ClassDB::bind_method(D_METHOD("get_supress_states"), &Aura::get_supress_states);
|
||||||
ClassDB::bind_method(D_METHOD("set_supress_states", "value"), &Aura::set_supress_states);
|
ClassDB::bind_method(D_METHOD("set_supress_states", "value"), &Aura::set_supress_states);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "states/supress_states", PROPERTY_HINT_FLAGS, EntityEnums::BINDING_STRING_ENTITY_STATE_TYPES), "set_supress_states", "get_supress_states");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "states_supress", PROPERTY_HINT_FLAGS, EntityEnums::BINDING_STRING_ENTITY_STATE_TYPES), "set_supress_states", "get_supress_states");
|
||||||
|
|
||||||
//// Triggers ////
|
//// Triggers ////
|
||||||
ADD_GROUP("Triggers", "trigger");
|
ADD_GROUP("Triggers", "trigger");
|
||||||
@ -1253,9 +1330,9 @@ void Aura::_bind_methods() {
|
|||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "trigger_count", PROPERTY_HINT_RANGE, "0," + itos(MAX_TRIGGER_DATA), PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_trigger_count", "get_trigger_count");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "trigger_count", PROPERTY_HINT_RANGE, "0," + itos(MAX_TRIGGER_DATA), PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_trigger_count", "get_trigger_count");
|
||||||
|
|
||||||
for (int i = 0; i < MAX_TRIGGER_DATA; i++) {
|
for (int i = 0; i < MAX_TRIGGER_DATA; i++) {
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::INT, "Trigger_" + itos(i) + "/trigger_event", PROPERTY_HINT_ENUM, SpellEnums::BINDING_STRING_TRIGGER_EVENTS, PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_trigger_event", "get_trigger_event", i);
|
ADD_PROPERTYI(PropertyInfo(Variant::INT, "Trigger_" + itos(i) + "/event", PROPERTY_HINT_ENUM, SpellEnums::BINDING_STRING_TRIGGER_EVENTS, PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_trigger_event", "get_trigger_event", i);
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "Trigger_" + itos(i) + "/trigger_aura", PROPERTY_HINT_RESOURCE_TYPE, "Aura", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_trigger_aura", "get_trigger_aura", i);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "Trigger_" + itos(i) + "/aura", PROPERTY_HINT_RESOURCE_TYPE, "Aura", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_trigger_aura", "get_trigger_aura", i);
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "Trigger_" + itos(i) + "/trigger_spell", PROPERTY_HINT_RESOURCE_TYPE, "Spell", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_trigger_spell", "get_trigger_spell", i);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "Trigger_" + itos(i) + "/spell", PROPERTY_HINT_RESOURCE_TYPE, "Spell", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_trigger_spell", "get_trigger_spell", i);
|
||||||
}
|
}
|
||||||
|
|
||||||
ADD_GROUP("Attributes", "attribute");
|
ADD_GROUP("Attributes", "attribute");
|
||||||
|
10
data/aura.h
10
data/aura.h
@ -197,12 +197,16 @@ public:
|
|||||||
|
|
||||||
//Commands
|
//Commands
|
||||||
void sapply(Ref<AuraApplyInfo> info);
|
void sapply(Ref<AuraApplyInfo> info);
|
||||||
|
void sdeapply(Ref<AuraData> info);
|
||||||
|
void sadd(Ref<AuraData> aura);
|
||||||
void sremove(Ref<AuraData> aura);
|
void sremove(Ref<AuraData> aura);
|
||||||
void sremove_expired(Ref<AuraData> aura);
|
void sremove_expired(Ref<AuraData> aura);
|
||||||
void sremove_dispell(Ref<AuraData> aura);
|
void sremove_dispell(Ref<AuraData> aura);
|
||||||
void supdate(Ref<AuraData> aura, float delta);
|
void supdate(Ref<AuraData> aura, float delta);
|
||||||
|
|
||||||
virtual void _sapply(Ref<AuraApplyInfo> info);
|
virtual void _sapply(Ref<AuraApplyInfo> info);
|
||||||
|
virtual void _sdeapply(Ref<AuraData> info);
|
||||||
|
virtual void _sadd(Ref<AuraData> aura);
|
||||||
virtual void _sremove(Ref<AuraData> aura);
|
virtual void _sremove(Ref<AuraData> aura);
|
||||||
virtual void _sremove_expired(Ref<AuraData> aura);
|
virtual void _sremove_expired(Ref<AuraData> aura);
|
||||||
virtual void _supdate(Ref<AuraData> aura, float delta);
|
virtual void _supdate(Ref<AuraData> aura, float delta);
|
||||||
@ -243,6 +247,9 @@ public:
|
|||||||
void son_category_cooldown_added(Ref<AuraData> data, Ref<CategoryCooldown> category_cooldown);
|
void son_category_cooldown_added(Ref<AuraData> data, Ref<CategoryCooldown> category_cooldown);
|
||||||
void son_category_cooldown_removed(Ref<AuraData> data, Ref<CategoryCooldown> category_cooldown);
|
void son_category_cooldown_removed(Ref<AuraData> data, Ref<CategoryCooldown> category_cooldown);
|
||||||
|
|
||||||
|
void son_gcd_started(Ref<AuraData> data, float gcd);
|
||||||
|
void son_gcd_finished(Ref<AuraData> data);
|
||||||
|
|
||||||
//Clientside Event Handlers
|
//Clientside Event Handlers
|
||||||
void con_cast_failed(Ref<AuraData> data, Ref<SpellCastInfo> info);
|
void con_cast_failed(Ref<AuraData> data, Ref<SpellCastInfo> info);
|
||||||
void con_cast_started(Ref<AuraData> data, Ref<SpellCastInfo> info);
|
void con_cast_started(Ref<AuraData> data, Ref<SpellCastInfo> info);
|
||||||
@ -266,6 +273,9 @@ public:
|
|||||||
void con_heal_dealt(Ref<AuraData> data, Ref<SpellHealInfo> info);
|
void con_heal_dealt(Ref<AuraData> data, Ref<SpellHealInfo> info);
|
||||||
void con_dealt_heal(Ref<AuraData> data, Ref<SpellHealInfo> info);
|
void con_dealt_heal(Ref<AuraData> data, Ref<SpellHealInfo> info);
|
||||||
|
|
||||||
|
void con_gcd_started(Ref<AuraData> data, float gcd);
|
||||||
|
void con_gcd_finished(Ref<AuraData> data);
|
||||||
|
|
||||||
//Calculations / Queries
|
//Calculations / Queries
|
||||||
void setup_aura_data(Ref<AuraData> data, Ref<AuraApplyInfo> info);
|
void setup_aura_data(Ref<AuraData> data, Ref<AuraApplyInfo> info);
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void _bind_method() {
|
static void _bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("get_stat"), &AuraStatAttribute::get_stat);
|
ClassDB::bind_method(D_METHOD("get_stat"), &AuraStatAttribute::get_stat);
|
||||||
ClassDB::bind_method(D_METHOD("set_stat", "value"), &AuraStatAttribute::set_stat);
|
ClassDB::bind_method(D_METHOD("set_stat", "value"), &AuraStatAttribute::set_stat);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "stat", PROPERTY_HINT_ENUM, Stat::STAT_BINDING_STRING), "set_stat", "get_stat");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "stat", PROPERTY_HINT_ENUM, Stat::STAT_BINDING_STRING), "set_stat", "get_stat");
|
||||||
|
@ -302,6 +302,33 @@ void CharacterClass::son_category_cooldown_removed(Ref<CategoryCooldown> categor
|
|||||||
call("_son_category_cooldown_removed", category_cooldown);
|
call("_son_category_cooldown_removed", category_cooldown);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CharacterClass::son_gcd_started(Entity *entity, float gcd) {
|
||||||
|
if (has_method("_son_gcd_started"))
|
||||||
|
call("_son_gcd_started", entity, gcd);
|
||||||
|
}
|
||||||
|
void CharacterClass::son_gcd_finished(Entity *entity) {
|
||||||
|
if (has_method("_son_gcd_finished"))
|
||||||
|
call("_son_gcd_finished", entity);
|
||||||
|
}
|
||||||
|
void CharacterClass::son_gcd_started_bind(Node *entity, float gcd) {
|
||||||
|
ERR_FAIL_COND(entity == NULL);
|
||||||
|
|
||||||
|
Entity *e = Object::cast_to<Entity>(entity);
|
||||||
|
|
||||||
|
ERR_FAIL_COND(e == NULL);
|
||||||
|
|
||||||
|
son_gcd_started(e, gcd);
|
||||||
|
}
|
||||||
|
void CharacterClass::son_gcd_finished_bind(Node *entity) {
|
||||||
|
ERR_FAIL_COND(entity == NULL);
|
||||||
|
|
||||||
|
Entity *e = Object::cast_to<Entity>(entity);
|
||||||
|
|
||||||
|
ERR_FAIL_COND(e == NULL);
|
||||||
|
|
||||||
|
son_gcd_finished(e);
|
||||||
|
}
|
||||||
|
|
||||||
//Clientside Event Handlers
|
//Clientside Event Handlers
|
||||||
void CharacterClass::con_cast_failed(Ref<SpellCastInfo> info) {
|
void CharacterClass::con_cast_failed(Ref<SpellCastInfo> info) {
|
||||||
ERR_FAIL_COND(!info.is_valid());
|
ERR_FAIL_COND(!info.is_valid());
|
||||||
@ -425,6 +452,33 @@ void CharacterClass::con_dealt_heal(Ref<SpellHealInfo> info) {
|
|||||||
call("_con_dealt_heal", info);
|
call("_con_dealt_heal", info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CharacterClass::con_gcd_started(Entity *entity, float gcd) {
|
||||||
|
if (has_method("_con_gcd_started"))
|
||||||
|
call("_con_gcd_started", entity, gcd);
|
||||||
|
}
|
||||||
|
void CharacterClass::con_gcd_finished(Entity *entity) {
|
||||||
|
if (has_method("_con_gcd_finished"))
|
||||||
|
call("_con_gcd_finished", entity);
|
||||||
|
}
|
||||||
|
void CharacterClass::con_gcd_started_bind(Node *entity, float gcd) {
|
||||||
|
ERR_FAIL_COND(entity == NULL);
|
||||||
|
|
||||||
|
Entity *e = Object::cast_to<Entity>(entity);
|
||||||
|
|
||||||
|
ERR_FAIL_COND(e == NULL);
|
||||||
|
|
||||||
|
con_gcd_started(e, gcd);
|
||||||
|
}
|
||||||
|
void CharacterClass::con_gcd_finished_bind(Node *entity) {
|
||||||
|
ERR_FAIL_COND(entity == NULL);
|
||||||
|
|
||||||
|
Entity *e = Object::cast_to<Entity>(entity);
|
||||||
|
|
||||||
|
ERR_FAIL_COND(e == NULL);
|
||||||
|
|
||||||
|
con_gcd_finished(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void CharacterClass::sai_follow(Entity *entity) {
|
void CharacterClass::sai_follow(Entity *entity) {
|
||||||
ERR_FAIL_COND(entity == NULL);
|
ERR_FAIL_COND(entity == NULL);
|
||||||
@ -544,6 +598,9 @@ void CharacterClass::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("son_category_cooldown_added", "category_cooldown"), &CharacterClass::son_category_cooldown_added);
|
ClassDB::bind_method(D_METHOD("son_category_cooldown_added", "category_cooldown"), &CharacterClass::son_category_cooldown_added);
|
||||||
ClassDB::bind_method(D_METHOD("son_category_cooldown_removed", "category_cooldown"), &CharacterClass::son_category_cooldown_removed);
|
ClassDB::bind_method(D_METHOD("son_category_cooldown_removed", "category_cooldown"), &CharacterClass::son_category_cooldown_removed);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("son_gcd_started", "entity", "gcd"), &CharacterClass::son_gcd_started_bind);
|
||||||
|
ClassDB::bind_method(D_METHOD("son_gcd_finished", "entity"), &CharacterClass::son_gcd_finished_bind);
|
||||||
|
|
||||||
BIND_VMETHOD(MethodInfo("_son_before_cast", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_son_before_cast", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
BIND_VMETHOD(MethodInfo("_son_before_cast_target", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_son_before_cast_target", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
BIND_VMETHOD(MethodInfo("_son_cast_started", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_son_cast_started", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
@ -579,6 +636,8 @@ void CharacterClass::_bind_methods() {
|
|||||||
BIND_VMETHOD(MethodInfo("_son_category_cooldown_added", PropertyInfo(Variant::OBJECT, "category_cooldown", PROPERTY_HINT_RESOURCE_TYPE, "CategoryCooldown")));
|
BIND_VMETHOD(MethodInfo("_son_category_cooldown_added", PropertyInfo(Variant::OBJECT, "category_cooldown", PROPERTY_HINT_RESOURCE_TYPE, "CategoryCooldown")));
|
||||||
BIND_VMETHOD(MethodInfo("_son_category_cooldown_removed", PropertyInfo(Variant::OBJECT, "category_cooldown", PROPERTY_HINT_RESOURCE_TYPE, "CategoryCooldown")));
|
BIND_VMETHOD(MethodInfo("_son_category_cooldown_removed", PropertyInfo(Variant::OBJECT, "category_cooldown", PROPERTY_HINT_RESOURCE_TYPE, "CategoryCooldown")));
|
||||||
|
|
||||||
|
BIND_VMETHOD(MethodInfo("_son_gcd_started", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::REAL, "gcd")));
|
||||||
|
BIND_VMETHOD(MethodInfo("_son_gcd_finished", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity")));
|
||||||
|
|
||||||
//Clientside Event Handlers
|
//Clientside Event Handlers
|
||||||
ClassDB::bind_method(D_METHOD("con_cast_failed", "info"), &CharacterClass::con_cast_failed);
|
ClassDB::bind_method(D_METHOD("con_cast_failed", "info"), &CharacterClass::con_cast_failed);
|
||||||
@ -598,6 +657,9 @@ void CharacterClass::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("con_aura_removed", "data"), &CharacterClass::con_aura_removed);
|
ClassDB::bind_method(D_METHOD("con_aura_removed", "data"), &CharacterClass::con_aura_removed);
|
||||||
ClassDB::bind_method(D_METHOD("con_aura_refresh", "data"), &CharacterClass::con_aura_refresh);
|
ClassDB::bind_method(D_METHOD("con_aura_refresh", "data"), &CharacterClass::con_aura_refresh);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("con_gcd_started", "entity", "gcd"), &CharacterClass::con_gcd_started_bind);
|
||||||
|
ClassDB::bind_method(D_METHOD("con_gcd_finished", "entity"), &CharacterClass::con_gcd_finished_bind);
|
||||||
|
|
||||||
BIND_VMETHOD(MethodInfo("_con_cast_failed", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_con_cast_failed", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
BIND_VMETHOD(MethodInfo("_con_cast_started", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_con_cast_started", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
BIND_VMETHOD(MethodInfo("_con_cast_state_changed", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_con_cast_state_changed", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
@ -615,6 +677,9 @@ void CharacterClass::_bind_methods() {
|
|||||||
BIND_VMETHOD(MethodInfo("_con_aura_removed", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
BIND_VMETHOD(MethodInfo("_con_aura_removed", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
||||||
BIND_VMETHOD(MethodInfo("_con_aura_refresh", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
BIND_VMETHOD(MethodInfo("_con_aura_refresh", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
|
||||||
|
|
||||||
|
BIND_VMETHOD(MethodInfo("_con_gcd_started", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::REAL, "gcd")));
|
||||||
|
BIND_VMETHOD(MethodInfo("_con_gcd_finished", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity")));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("sai_follow", "entity"), &CharacterClass::sai_follow_bind);
|
ClassDB::bind_method(D_METHOD("sai_follow", "entity"), &CharacterClass::sai_follow_bind);
|
||||||
ClassDB::bind_method(D_METHOD("sai_rest", "entity"), &CharacterClass::sai_rest_bind);
|
ClassDB::bind_method(D_METHOD("sai_rest", "entity"), &CharacterClass::sai_rest_bind);
|
||||||
ClassDB::bind_method(D_METHOD("sai_regenerate", "entity"), &CharacterClass::sai_regenerate_bind);
|
ClassDB::bind_method(D_METHOD("sai_regenerate", "entity"), &CharacterClass::sai_regenerate_bind);
|
||||||
|
@ -121,6 +121,11 @@ public:
|
|||||||
void son_category_cooldown_added(Ref<CategoryCooldown> category_cooldown);
|
void son_category_cooldown_added(Ref<CategoryCooldown> category_cooldown);
|
||||||
void son_category_cooldown_removed(Ref<CategoryCooldown> category_cooldown);
|
void son_category_cooldown_removed(Ref<CategoryCooldown> category_cooldown);
|
||||||
|
|
||||||
|
void son_gcd_started(Entity *entity, float gcd);
|
||||||
|
void son_gcd_finished(Entity *entity);
|
||||||
|
void son_gcd_started_bind(Node *entity, float gcd);
|
||||||
|
void son_gcd_finished_bind(Node *entity);
|
||||||
|
|
||||||
//Clientside Event Handlers
|
//Clientside Event Handlers
|
||||||
void con_cast_failed(Ref<SpellCastInfo> info);
|
void con_cast_failed(Ref<SpellCastInfo> info);
|
||||||
void con_cast_started(Ref<SpellCastInfo> info);
|
void con_cast_started(Ref<SpellCastInfo> info);
|
||||||
@ -145,6 +150,11 @@ public:
|
|||||||
void con_heal_dealt(Ref<SpellHealInfo> info);
|
void con_heal_dealt(Ref<SpellHealInfo> info);
|
||||||
void con_dealt_heal(Ref<SpellHealInfo> info);
|
void con_dealt_heal(Ref<SpellHealInfo> info);
|
||||||
|
|
||||||
|
void con_gcd_started(Entity *entity, float gcd);
|
||||||
|
void con_gcd_finished(Entity *entity);
|
||||||
|
void con_gcd_started_bind(Node *entity, float gcd);
|
||||||
|
void con_gcd_finished_bind(Node *entity);
|
||||||
|
|
||||||
// AI //
|
// AI //
|
||||||
void sai_follow(Entity *entity);
|
void sai_follow(Entity *entity);
|
||||||
void sai_rest(Entity *entity);
|
void sai_rest(Entity *entity);
|
||||||
|
@ -749,7 +749,7 @@ Spell::Spell() {
|
|||||||
_cost_resource = 0;
|
_cost_resource = 0;
|
||||||
//PlayerResourceTypes _give_resource_type;
|
//PlayerResourceTypes _give_resource_type;
|
||||||
_give_resource = 0;
|
_give_resource = 0;
|
||||||
_has_global_cooldown = false;
|
_has_global_cooldown = true;
|
||||||
_is_local_spell = false;
|
_is_local_spell = false;
|
||||||
|
|
||||||
//String _name_key;
|
//String _name_key;
|
||||||
|
@ -172,24 +172,6 @@ void Entity::sets_character_class(Ref<CharacterClass> value) {
|
|||||||
//SEND_RPC(rpc("setc_character_class", value), setc_character_class(value));
|
//SEND_RPC(rpc("setc_character_class", value), setc_character_class(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
Entity *Entity::gets_spell_target() {
|
|
||||||
return _s_target;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Entity::sets_spell_target(Node *p_target) {
|
|
||||||
if (!p_target) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Entity *e = cast_to<Entity>(p_target);
|
|
||||||
|
|
||||||
if (!e) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_s_target = e;
|
|
||||||
}
|
|
||||||
|
|
||||||
Entity::Entity() {
|
Entity::Entity() {
|
||||||
_s_guid = 0;
|
_s_guid = 0;
|
||||||
_c_guid = 0;
|
_c_guid = 0;
|
||||||
@ -233,21 +215,6 @@ Entity::Entity() {
|
|||||||
sRezTimer = 0;
|
sRezTimer = 0;
|
||||||
cRezTimer = 0;
|
cRezTimer = 0;
|
||||||
|
|
||||||
_s_casting = false;
|
|
||||||
_s_spell_id = 0;
|
|
||||||
_s_current_cast_time = 0;
|
|
||||||
_s_cast_time = 0;
|
|
||||||
_s_spell_scale = 0;
|
|
||||||
_c_casting = false;
|
|
||||||
_c_spell_id = 0;
|
|
||||||
_c_current_cast_time = 0;
|
|
||||||
_c_cast_time = 0;
|
|
||||||
_c_spell_name = "";
|
|
||||||
_s_spell_target = NULL;
|
|
||||||
_c_spell_target = NULL;
|
|
||||||
_s_spell_target_guid = 0;
|
|
||||||
_s_spell_cast_game_object_guid = 0;
|
|
||||||
|
|
||||||
_s_active_category_cooldowns = 0;
|
_s_active_category_cooldowns = 0;
|
||||||
_c_active_category_cooldowns = 0;
|
_c_active_category_cooldowns = 0;
|
||||||
|
|
||||||
@ -309,14 +276,6 @@ Entity::Entity() {
|
|||||||
SET_RPC_REMOTE("setc_level");
|
SET_RPC_REMOTE("setc_level");
|
||||||
SET_RPC_REMOTE("setc_xp");
|
SET_RPC_REMOTE("setc_xp");
|
||||||
|
|
||||||
//// SpellCastData ////
|
|
||||||
|
|
||||||
//SET_RPC_PUPPET("setc_casting");
|
|
||||||
//SET_RPC_PUPPET("setc_spell_id");
|
|
||||||
//SET_RPC_PUPPET("setc_current_cast_time");
|
|
||||||
//SET_RPC_PUPPET("setc_cast_time");
|
|
||||||
//SET_RPC_PUPPET("setc_spell_target");
|
|
||||||
|
|
||||||
//// Stats ////
|
//// Stats ////
|
||||||
|
|
||||||
//send stats
|
//send stats
|
||||||
@ -487,11 +446,19 @@ bool Entity::gets_global_cooldown() {
|
|||||||
void Entity::sstart_global_cooldown(float value) {
|
void Entity::sstart_global_cooldown(float value) {
|
||||||
_s_gcd = value;
|
_s_gcd = value;
|
||||||
|
|
||||||
|
void son_gcd_started();
|
||||||
|
|
||||||
|
emit_signal("sgcd_started", _s_gcd);
|
||||||
|
|
||||||
SEND_RPC(rpc("cstart_global_cooldown", value), cstart_global_cooldown(value));
|
SEND_RPC(rpc("cstart_global_cooldown", value), cstart_global_cooldown(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Entity::cstart_global_cooldown(float value) {
|
void Entity::cstart_global_cooldown(float value) {
|
||||||
_c_gcd = value;
|
_c_gcd = value;
|
||||||
|
|
||||||
|
void con_gcd_started();
|
||||||
|
|
||||||
|
emit_signal("cgcd_started", _c_gcd);
|
||||||
}
|
}
|
||||||
|
|
||||||
//// States ////
|
//// States ////
|
||||||
@ -1206,6 +1173,62 @@ void Entity::son_category_cooldown_removed(Ref<CategoryCooldown> category_cooldo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Entity::son_gcd_started() {
|
||||||
|
if (_s_character_class.is_valid()) {
|
||||||
|
_s_character_class->son_gcd_started(this, _s_gcd);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (has_method("_son_gcd_started"))
|
||||||
|
call("_son_gcd_started", _s_gcd);
|
||||||
|
|
||||||
|
for (int i = 0; i < _s_auras.size(); ++i) {
|
||||||
|
Ref<AuraData> ad = _s_auras.get(i);
|
||||||
|
|
||||||
|
ad->get_aura()->son_gcd_started(ad, _s_gcd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void Entity::son_gcd_finished() {
|
||||||
|
if (_s_character_class.is_valid()) {
|
||||||
|
_s_character_class->son_gcd_finished(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (has_method("_son_gcd_finished"))
|
||||||
|
call("_son_gcd_finished");
|
||||||
|
|
||||||
|
for (int i = 0; i < _s_auras.size(); ++i) {
|
||||||
|
Ref<AuraData> ad = _s_auras.get(i);
|
||||||
|
|
||||||
|
ad->get_aura()->son_gcd_finished(ad);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void Entity::con_gcd_started() {
|
||||||
|
if (_s_character_class.is_valid()) {
|
||||||
|
_s_character_class->con_gcd_started(this, _c_gcd);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (has_method("_con_gcd_started"))
|
||||||
|
call("_con_gcd_started", _c_gcd);
|
||||||
|
|
||||||
|
for (int i = 0; i < _s_auras.size(); ++i) {
|
||||||
|
Ref<AuraData> ad = _s_auras.get(i);
|
||||||
|
|
||||||
|
ad->get_aura()->con_gcd_started(ad, _c_gcd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void Entity::con_gcd_finished() {
|
||||||
|
if (_s_character_class.is_valid()) {
|
||||||
|
_s_character_class->con_gcd_finished(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (has_method("_con_gcd_finished"))
|
||||||
|
call("_con_gcd_finished");
|
||||||
|
|
||||||
|
for (int i = 0; i < _s_auras.size(); ++i) {
|
||||||
|
Ref<AuraData> ad = _s_auras.get(i);
|
||||||
|
|
||||||
|
ad->get_aura()->con_gcd_finished(ad);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Entity::sadd_aura(Ref<AuraData> aura) {
|
void Entity::sadd_aura(Ref<AuraData> aura) {
|
||||||
ERR_FAIL_COND(!aura.is_valid());
|
ERR_FAIL_COND(!aura.is_valid());
|
||||||
@ -1444,6 +1467,31 @@ Ref<AuraData> Entity::sget_aura(int index) {
|
|||||||
return Ref<AuraData>(_s_auras.get(index));
|
return Ref<AuraData>(_s_auras.get(index));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ref<AuraData> Entity::sget_aura_by(Entity *caster, int aura_id) {
|
||||||
|
for (int i = 0; i < _s_auras.size(); ++i) {
|
||||||
|
Ref<AuraData> ad = _s_auras.get(i);
|
||||||
|
|
||||||
|
if (ad->get_aura_id() == aura_id && ad->get_caster() == caster) {
|
||||||
|
return ad;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ref<AuraData>(NULL);
|
||||||
|
}
|
||||||
|
Ref<AuraData> Entity::sget_aura_by_bind(Node *caster, int aura_id) {
|
||||||
|
if (!caster) {
|
||||||
|
return Ref<AuraData>(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
Entity *e = cast_to<Entity>(caster);
|
||||||
|
|
||||||
|
if (!e) {
|
||||||
|
return Ref<AuraData>(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sget_aura_by(e, aura_id);
|
||||||
|
}
|
||||||
|
|
||||||
int Entity::cget_aura_count() {
|
int Entity::cget_aura_count() {
|
||||||
return _s_auras.size();
|
return _s_auras.size();
|
||||||
}
|
}
|
||||||
@ -2179,6 +2227,16 @@ int Entity::getc_category_cooldown_count() {
|
|||||||
return _c_category_cooldowns.size();
|
return _c_category_cooldowns.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//// Casting System ////
|
||||||
|
|
||||||
|
bool Entity::sis_casting() {
|
||||||
|
return _s_spell_cast_info.is_valid();
|
||||||
|
}
|
||||||
|
bool Entity::cis_casting() {
|
||||||
|
return _c_spell_cast_info.is_valid();
|
||||||
|
}
|
||||||
|
|
||||||
Ref<SpellCastInfo> Entity::gets_spell_cast_info() {
|
Ref<SpellCastInfo> Entity::gets_spell_cast_info() {
|
||||||
return Ref<SpellCastInfo>(_s_spell_cast_info);
|
return Ref<SpellCastInfo>(_s_spell_cast_info);
|
||||||
}
|
}
|
||||||
@ -2539,85 +2597,6 @@ void Entity::rpc_level_up() {
|
|||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
//// SpellCastData ////
|
|
||||||
|
|
||||||
bool Entity::gets_casting() {
|
|
||||||
return _s_casting;
|
|
||||||
}
|
|
||||||
void Entity::sets_casting(bool value) {
|
|
||||||
_s_casting = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Entity::gets_spell_id() {
|
|
||||||
return _s_spell_id;
|
|
||||||
}
|
|
||||||
void Entity::sets_spell_id(int value) {
|
|
||||||
_s_spell_id = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
float Entity::gets_current_cast_time() {
|
|
||||||
return _s_current_cast_time;
|
|
||||||
}
|
|
||||||
void Entity::sets_current_cast_time(float value) {
|
|
||||||
_s_current_cast_time = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
float Entity::gets_cast_time() {
|
|
||||||
return _s_cast_time;
|
|
||||||
}
|
|
||||||
void Entity::sets_cast_time(float value) {
|
|
||||||
_s_cast_time = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
float Entity::gets_spell_scale() {
|
|
||||||
return _s_spell_scale;
|
|
||||||
}
|
|
||||||
void Entity::sets_spell_scale(float value) {
|
|
||||||
_s_spell_scale = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Entity::getc_casting() {
|
|
||||||
return _c_casting;
|
|
||||||
}
|
|
||||||
void Entity::setc_casting(bool value) {
|
|
||||||
_c_casting = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Entity::getc_spell_id() {
|
|
||||||
return _c_spell_id;
|
|
||||||
}
|
|
||||||
void Entity::setc_spell_id(int value) {
|
|
||||||
_c_spell_id = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
float Entity::getc_current_cast_time() {
|
|
||||||
return _c_current_cast_time;
|
|
||||||
}
|
|
||||||
void Entity::setc_current_cast_time(float value) {
|
|
||||||
_c_current_cast_time = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
float Entity::getc_cast_time() {
|
|
||||||
return _c_cast_time;
|
|
||||||
}
|
|
||||||
void Entity::setc_cast_time(float value) {
|
|
||||||
_c_cast_time = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
String Entity::getc_spell_name() {
|
|
||||||
return _c_spell_name;
|
|
||||||
}
|
|
||||||
void Entity::setc_spell_name(String value) {
|
|
||||||
_c_spell_name = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Entity::gets_target_guid() {
|
|
||||||
return _s_target_guid;
|
|
||||||
}
|
|
||||||
int Entity::gets_spell_cast_game_object_guid() {
|
|
||||||
return _s_spell_cast_game_object_guid;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Entity::update(float delta) {
|
void Entity::update(float delta) {
|
||||||
if (_s_gcd > 0.0000001) {
|
if (_s_gcd > 0.0000001) {
|
||||||
_s_gcd -= delta;
|
_s_gcd -= delta;
|
||||||
@ -2625,6 +2604,9 @@ void Entity::update(float delta) {
|
|||||||
if (_s_gcd <= 0) {
|
if (_s_gcd <= 0) {
|
||||||
_s_gcd = 0;
|
_s_gcd = 0;
|
||||||
|
|
||||||
|
|
||||||
|
void son_gcd_finished();
|
||||||
|
|
||||||
emit_signal("sgcd_finished");
|
emit_signal("sgcd_finished");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2635,6 +2617,8 @@ void Entity::update(float delta) {
|
|||||||
if (_c_gcd <= 0) {
|
if (_c_gcd <= 0) {
|
||||||
_c_gcd = 0;
|
_c_gcd = 0;
|
||||||
|
|
||||||
|
void con_gcd_finished();
|
||||||
|
|
||||||
emit_signal("cgcd_finished");
|
emit_signal("cgcd_finished");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2733,16 +2717,21 @@ void Entity::_bind_methods() {
|
|||||||
ADD_SIGNAL(MethodInfo("starget_changed", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity")));
|
ADD_SIGNAL(MethodInfo("starget_changed", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity")));
|
||||||
ADD_SIGNAL(MethodInfo("ctarget_changed", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity")));
|
ADD_SIGNAL(MethodInfo("ctarget_changed", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity")));
|
||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("son_damage_received", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "damage_pipeline_data", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
|
ADD_SIGNAL(MethodInfo("son_damage_received", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
|
||||||
ADD_SIGNAL(MethodInfo("con_damage_received", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "damage_pipeline_data", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
|
ADD_SIGNAL(MethodInfo("con_damage_received", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
|
||||||
|
|
||||||
|
ADD_SIGNAL(MethodInfo("con_damage_dealt", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
|
||||||
|
ADD_SIGNAL(MethodInfo("con_dealt_damage", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
|
||||||
|
|
||||||
|
ADD_SIGNAL(MethodInfo("son_heal_received", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
||||||
|
ADD_SIGNAL(MethodInfo("con_heal_received", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
||||||
|
|
||||||
|
ADD_SIGNAL(MethodInfo("con_dealt_heal", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
||||||
|
|
||||||
|
ADD_SIGNAL(MethodInfo("con_heal_dealt", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("con_damage_dealt", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "damage_pipeline_data", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
|
|
||||||
ADD_SIGNAL(MethodInfo("con_dealt_damage", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "damage_pipeline_data", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
|
|
||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("son_heal_received", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "damage_pipeline_data", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
|
||||||
ADD_SIGNAL(MethodInfo("con_heal_received", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "damage_pipeline_data", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
|
||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("con_dealt_heal", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "damage_pipeline_data", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
|
||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("scharacter_class_changed", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity")));
|
ADD_SIGNAL(MethodInfo("scharacter_class_changed", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity")));
|
||||||
ADD_SIGNAL(MethodInfo("ccharacter_class_changed", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity")));
|
ADD_SIGNAL(MethodInfo("ccharacter_class_changed", PropertyInfo(Variant::OBJECT, "Entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity")));
|
||||||
@ -2804,6 +2793,9 @@ void Entity::_bind_methods() {
|
|||||||
|
|
||||||
BIND_VMETHOD(MethodInfo("_son_death"));
|
BIND_VMETHOD(MethodInfo("_son_death"));
|
||||||
|
|
||||||
|
BIND_VMETHOD(MethodInfo("_son_gcd_started", PropertyInfo(Variant::REAL, "gcd")));
|
||||||
|
BIND_VMETHOD(MethodInfo("_son_gcd_finished"));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("son_before_aura_applied", "data"), &Entity::son_before_aura_applied);
|
ClassDB::bind_method(D_METHOD("son_before_aura_applied", "data"), &Entity::son_before_aura_applied);
|
||||||
ClassDB::bind_method(D_METHOD("son_after_aura_applied", "data"), &Entity::son_after_aura_applied);
|
ClassDB::bind_method(D_METHOD("son_after_aura_applied", "data"), &Entity::son_after_aura_applied);
|
||||||
|
|
||||||
@ -2827,6 +2819,9 @@ void Entity::_bind_methods() {
|
|||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("son_death"), &Entity::son_death);
|
ClassDB::bind_method(D_METHOD("son_death"), &Entity::son_death);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("son_gcd_started"), &Entity::son_gcd_started);
|
||||||
|
ClassDB::bind_method(D_METHOD("son_gcd_finished"), &Entity::son_gcd_finished);
|
||||||
|
|
||||||
//Clientside EventHandlers
|
//Clientside EventHandlers
|
||||||
BIND_VMETHOD(MethodInfo("_con_cast_failed", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_con_cast_failed", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
BIND_VMETHOD(MethodInfo("_con_cast_started", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
BIND_VMETHOD(MethodInfo("_con_cast_started", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
|
||||||
@ -2850,6 +2845,9 @@ void Entity::_bind_methods() {
|
|||||||
BIND_VMETHOD(MethodInfo("_con_heal_dealt", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
BIND_VMETHOD(MethodInfo("_con_heal_dealt", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
||||||
BIND_VMETHOD(MethodInfo("_con_dealt_heal", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
BIND_VMETHOD(MethodInfo("_con_dealt_heal", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
|
||||||
|
|
||||||
|
BIND_VMETHOD(MethodInfo("_con_gcd_started", PropertyInfo(Variant::REAL, "gcd")));
|
||||||
|
BIND_VMETHOD(MethodInfo("_con_gcd_finished"));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("con_cast_failed", "info"), &Entity::con_cast_failed);
|
ClassDB::bind_method(D_METHOD("con_cast_failed", "info"), &Entity::con_cast_failed);
|
||||||
ClassDB::bind_method(D_METHOD("con_cast_started", "info"), &Entity::con_cast_started);
|
ClassDB::bind_method(D_METHOD("con_cast_started", "info"), &Entity::con_cast_started);
|
||||||
ClassDB::bind_method(D_METHOD("con_cast_state_changed", "info"), &Entity::con_cast_state_changed);
|
ClassDB::bind_method(D_METHOD("con_cast_state_changed", "info"), &Entity::con_cast_state_changed);
|
||||||
@ -2872,6 +2870,9 @@ void Entity::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("con_heal_dealt", "info"), &Entity::con_heal_dealt);
|
ClassDB::bind_method(D_METHOD("con_heal_dealt", "info"), &Entity::con_heal_dealt);
|
||||||
ClassDB::bind_method(D_METHOD("con_dealt_heal", "info"), &Entity::con_dealt_heal);
|
ClassDB::bind_method(D_METHOD("con_dealt_heal", "info"), &Entity::con_dealt_heal);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("con_gcd_started"), &Entity::con_gcd_started);
|
||||||
|
ClassDB::bind_method(D_METHOD("con_gcd_finished"), &Entity::con_gcd_finished);
|
||||||
|
|
||||||
//Modifiers/Requesters
|
//Modifiers/Requesters
|
||||||
ClassDB::bind_method(D_METHOD("sapply_passives_damage_receive", "data"), &Entity::sapply_passives_damage_receive);
|
ClassDB::bind_method(D_METHOD("sapply_passives_damage_receive", "data"), &Entity::sapply_passives_damage_receive);
|
||||||
ClassDB::bind_method(D_METHOD("sapply_passives_damage_deal", "data"), &Entity::sapply_passives_damage_deal);
|
ClassDB::bind_method(D_METHOD("sapply_passives_damage_deal", "data"), &Entity::sapply_passives_damage_deal);
|
||||||
@ -2907,6 +2908,7 @@ void Entity::_bind_methods() {
|
|||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("sget_aura_count"), &Entity::sget_aura_count);
|
ClassDB::bind_method(D_METHOD("sget_aura_count"), &Entity::sget_aura_count);
|
||||||
ClassDB::bind_method(D_METHOD("sget_aura", "index"), &Entity::sget_aura);
|
ClassDB::bind_method(D_METHOD("sget_aura", "index"), &Entity::sget_aura);
|
||||||
|
ClassDB::bind_method(D_METHOD("sget_aura_by", "caster", "aura_id"), &Entity::sget_aura_by_bind);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("cget_aura_count"), &Entity::cget_aura_count);
|
ClassDB::bind_method(D_METHOD("cget_aura_count"), &Entity::cget_aura_count);
|
||||||
ClassDB::bind_method(D_METHOD("cget_aura", "index"), &Entity::cget_aura);
|
ClassDB::bind_method(D_METHOD("cget_aura", "index"), &Entity::cget_aura);
|
||||||
@ -2997,7 +2999,6 @@ void Entity::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("set_stat_enum", "stat_id", "entry"), &Entity::set_stat_enum);
|
ClassDB::bind_method(D_METHOD("set_stat_enum", "stat_id", "entry"), &Entity::set_stat_enum);
|
||||||
|
|
||||||
//Resources
|
//Resources
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("gets_resource", "index"), &Entity::gets_resource);
|
ClassDB::bind_method(D_METHOD("gets_resource", "index"), &Entity::gets_resource);
|
||||||
ClassDB::bind_method(D_METHOD("adds_resource", "palyer_resource"), &Entity::adds_resource);
|
ClassDB::bind_method(D_METHOD("adds_resource", "palyer_resource"), &Entity::adds_resource);
|
||||||
ClassDB::bind_method(D_METHOD("gets_resource_count"), &Entity::gets_resource_count);
|
ClassDB::bind_method(D_METHOD("gets_resource_count"), &Entity::gets_resource_count);
|
||||||
@ -3010,9 +3011,9 @@ void Entity::_bind_methods() {
|
|||||||
|
|
||||||
//GCD
|
//GCD
|
||||||
ADD_SIGNAL(MethodInfo("sgcd_started", PropertyInfo(Variant::REAL, "value")));
|
ADD_SIGNAL(MethodInfo("sgcd_started", PropertyInfo(Variant::REAL, "value")));
|
||||||
ADD_SIGNAL(MethodInfo("sgcd_finished", PropertyInfo(Variant::REAL, "value")));
|
ADD_SIGNAL(MethodInfo("sgcd_finished"));
|
||||||
ADD_SIGNAL(MethodInfo("cgcd_started", PropertyInfo(Variant::REAL, "value")));
|
ADD_SIGNAL(MethodInfo("cgcd_started", PropertyInfo(Variant::REAL, "value")));
|
||||||
ADD_SIGNAL(MethodInfo("cgcd_finished", PropertyInfo(Variant::REAL, "value")));
|
ADD_SIGNAL(MethodInfo("cgcd_finished"));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("getc_has_global_cooldown"), &Entity::getc_has_global_cooldown);
|
ClassDB::bind_method(D_METHOD("getc_has_global_cooldown"), &Entity::getc_has_global_cooldown);
|
||||||
ClassDB::bind_method(D_METHOD("gets_has_global_cooldown"), &Entity::gets_has_global_cooldown);
|
ClassDB::bind_method(D_METHOD("gets_has_global_cooldown"), &Entity::gets_has_global_cooldown);
|
||||||
@ -3034,6 +3035,9 @@ void Entity::_bind_methods() {
|
|||||||
|
|
||||||
//Casting System
|
//Casting System
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("sis_casting"), &Entity::sis_casting);
|
||||||
|
ClassDB::bind_method(D_METHOD("cis_casting"), &Entity::cis_casting);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("gets_spell_cast_info"), &Entity::gets_spell_cast_info);
|
ClassDB::bind_method(D_METHOD("gets_spell_cast_info"), &Entity::gets_spell_cast_info);
|
||||||
ClassDB::bind_method(D_METHOD("sets_spell_cast_info", "value"), &Entity::sets_spell_cast_info);
|
ClassDB::bind_method(D_METHOD("sets_spell_cast_info", "value"), &Entity::sets_spell_cast_info);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "sspell_cast_info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"), "sets_spell_cast_info", "gets_spell_cast_info");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "sspell_cast_info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"), "sets_spell_cast_info", "gets_spell_cast_info");
|
||||||
@ -3099,10 +3103,6 @@ void Entity::_bind_methods() {
|
|||||||
|
|
||||||
//// Targeting System ////
|
//// Targeting System ////
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("gets_spell_target"), &Entity::gets_spell_target);
|
|
||||||
ClassDB::bind_method(D_METHOD("sets_spell_target", "target"), &Entity::sets_spell_target);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "sspell_target", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), "sets_spell_target", "gets_spell_target");
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("crequest_target_change", "path"), &Entity::crequest_target_change);
|
ClassDB::bind_method(D_METHOD("crequest_target_change", "path"), &Entity::crequest_target_change);
|
||||||
ClassDB::bind_method(D_METHOD("net_sets_target", "path"), &Entity::net_sets_target);
|
ClassDB::bind_method(D_METHOD("net_sets_target", "path"), &Entity::net_sets_target);
|
||||||
ClassDB::bind_method(D_METHOD("net_setc_target", "path"), &Entity::net_setc_target);
|
ClassDB::bind_method(D_METHOD("net_setc_target", "path"), &Entity::net_setc_target);
|
||||||
|
@ -195,44 +195,6 @@ public:
|
|||||||
void rpc_level_up();
|
void rpc_level_up();
|
||||||
void registers();
|
void registers();
|
||||||
|
|
||||||
//// SpellCastData ////
|
|
||||||
|
|
||||||
bool gets_casting();
|
|
||||||
void sets_casting(bool value);
|
|
||||||
|
|
||||||
int gets_spell_id();
|
|
||||||
void sets_spell_id(int value);
|
|
||||||
|
|
||||||
float gets_current_cast_time();
|
|
||||||
void sets_current_cast_time(float value);
|
|
||||||
|
|
||||||
float gets_cast_time();
|
|
||||||
void sets_cast_time(float value);
|
|
||||||
|
|
||||||
float gets_spell_scale();
|
|
||||||
void sets_spell_scale(float value);
|
|
||||||
|
|
||||||
bool getc_casting();
|
|
||||||
void setc_casting(bool value);
|
|
||||||
|
|
||||||
int getc_spell_id();
|
|
||||||
void setc_spell_id(int value);
|
|
||||||
|
|
||||||
float getc_current_cast_time();
|
|
||||||
void setc_current_cast_time(float value);
|
|
||||||
|
|
||||||
float getc_cast_time();
|
|
||||||
void setc_cast_time(float value);
|
|
||||||
|
|
||||||
String getc_spell_name();
|
|
||||||
void setc_spell_name(String value);
|
|
||||||
|
|
||||||
Entity *gets_spell_target();
|
|
||||||
void sets_spell_target(Node *p_target);
|
|
||||||
|
|
||||||
int gets_target_guid();
|
|
||||||
int gets_spell_cast_game_object_guid();
|
|
||||||
|
|
||||||
//// Stats ////
|
//// Stats ////
|
||||||
|
|
||||||
_FORCE_INLINE_ Ref<Stat> get_health() { return _health; }
|
_FORCE_INLINE_ Ref<Stat> get_health() { return _health; }
|
||||||
@ -326,6 +288,11 @@ public:
|
|||||||
void son_category_cooldown_added(Ref<CategoryCooldown> category_cooldown);
|
void son_category_cooldown_added(Ref<CategoryCooldown> category_cooldown);
|
||||||
void son_category_cooldown_removed(Ref<CategoryCooldown> category_cooldown);
|
void son_category_cooldown_removed(Ref<CategoryCooldown> category_cooldown);
|
||||||
|
|
||||||
|
void son_gcd_started();
|
||||||
|
void son_gcd_finished();
|
||||||
|
void con_gcd_started();
|
||||||
|
void con_gcd_finished();
|
||||||
|
|
||||||
//Clientside EventHandlers
|
//Clientside EventHandlers
|
||||||
void con_cast_failed(Ref<SpellCastInfo> info);
|
void con_cast_failed(Ref<SpellCastInfo> info);
|
||||||
void con_cast_started(Ref<SpellCastInfo> info);
|
void con_cast_started(Ref<SpellCastInfo> info);
|
||||||
@ -385,8 +352,11 @@ public:
|
|||||||
|
|
||||||
void sremove_auras_with_group(int aura_group);
|
void sremove_auras_with_group(int aura_group);
|
||||||
|
|
||||||
|
//NOTE: No reason for shas_aura_by, just query it, and check for null.
|
||||||
int sget_aura_count();
|
int sget_aura_count();
|
||||||
Ref<AuraData> sget_aura(int index);
|
Ref<AuraData> sget_aura(int index);
|
||||||
|
Ref<AuraData> sget_aura_by(Entity *caster, int aura_id);
|
||||||
|
Ref<AuraData> sget_aura_by_bind(Node *caster, int aura_id);
|
||||||
|
|
||||||
int cget_aura_count();
|
int cget_aura_count();
|
||||||
Ref<AuraData> cget_aura(int index);
|
Ref<AuraData> cget_aura(int index);
|
||||||
@ -406,6 +376,9 @@ public:
|
|||||||
|
|
||||||
//// Casting System ////
|
//// Casting System ////
|
||||||
|
|
||||||
|
bool sis_casting();
|
||||||
|
bool cis_casting();
|
||||||
|
|
||||||
Ref<SpellCastInfo> gets_spell_cast_info();
|
Ref<SpellCastInfo> gets_spell_cast_info();
|
||||||
void sets_spell_cast_info(Ref<SpellCastInfo> info);
|
void sets_spell_cast_info(Ref<SpellCastInfo> info);
|
||||||
|
|
||||||
@ -614,21 +587,6 @@ private:
|
|||||||
|
|
||||||
//// SpellCastData ////
|
//// SpellCastData ////
|
||||||
|
|
||||||
bool _s_casting;
|
|
||||||
int _s_spell_id;
|
|
||||||
float _s_current_cast_time;
|
|
||||||
float _s_cast_time;
|
|
||||||
float _s_spell_scale;
|
|
||||||
bool _c_casting;
|
|
||||||
int _c_spell_id;
|
|
||||||
float _c_current_cast_time;
|
|
||||||
float _c_cast_time;
|
|
||||||
String _c_spell_name;
|
|
||||||
Entity *_s_spell_target;
|
|
||||||
Entity *_c_spell_target;
|
|
||||||
int _s_spell_target_guid;
|
|
||||||
int _s_spell_cast_game_object_guid;
|
|
||||||
|
|
||||||
Ref<SpellCastInfo> _s_spell_cast_info;
|
Ref<SpellCastInfo> _s_spell_cast_info;
|
||||||
Ref<SpellCastInfo> _c_spell_cast_info;
|
Ref<SpellCastInfo> _c_spell_cast_info;
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@ Stat::Stat() {
|
|||||||
_c_max = (float)(0);
|
_c_max = (float)(0);
|
||||||
_c_current = (float)(0);
|
_c_current = (float)(0);
|
||||||
|
|
||||||
_disabled = false;
|
|
||||||
_modifier_apply_type = MODIFIER_APPLY_TYPE_STANDARD;
|
_modifier_apply_type = MODIFIER_APPLY_TYPE_STANDARD;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,7 +29,6 @@ Stat::Stat(Stat::StatId id) {
|
|||||||
_c_max = (float)(0);
|
_c_max = (float)(0);
|
||||||
_c_current = (float)(0);
|
_c_current = (float)(0);
|
||||||
|
|
||||||
_disabled = false;
|
|
||||||
_modifier_apply_type = MODIFIER_APPLY_TYPE_STANDARD;
|
_modifier_apply_type = MODIFIER_APPLY_TYPE_STANDARD;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,7 +43,6 @@ Stat::Stat(Stat::StatId id, StatModifierApplyType modifier_apply_type) {
|
|||||||
_c_max = (float)(0);
|
_c_max = (float)(0);
|
||||||
_c_current = (float)(0);
|
_c_current = (float)(0);
|
||||||
|
|
||||||
_disabled = false;
|
|
||||||
_modifier_apply_type = modifier_apply_type;
|
_modifier_apply_type = modifier_apply_type;
|
||||||
_id = id;
|
_id = id;
|
||||||
}
|
}
|
||||||
@ -61,7 +58,6 @@ Stat::Stat(Stat::StatId id, StatModifierApplyType modifier_apply_type, float bas
|
|||||||
_s_current = (float)(0);
|
_s_current = (float)(0);
|
||||||
_c_max = (float)(0);
|
_c_max = (float)(0);
|
||||||
_c_current = (float)(0);
|
_c_current = (float)(0);
|
||||||
_disabled = false;
|
|
||||||
_modifier_apply_type = modifier_apply_type;
|
_modifier_apply_type = modifier_apply_type;
|
||||||
|
|
||||||
_id = id;
|
_id = id;
|
||||||
@ -70,7 +66,6 @@ Stat::Stat(Stat::StatId id, StatModifierApplyType modifier_apply_type, float bas
|
|||||||
_bonus = bonus;
|
_bonus = bonus;
|
||||||
_percent = percent;
|
_percent = percent;
|
||||||
|
|
||||||
_disabled = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Stat::Stat(Stat::StatId id, StatModifierApplyType modifier_apply_type, float base) {
|
Stat::Stat(Stat::StatId id, StatModifierApplyType modifier_apply_type, float base) {
|
||||||
@ -84,14 +79,11 @@ Stat::Stat(Stat::StatId id, StatModifierApplyType modifier_apply_type, float bas
|
|||||||
_c_max = (float)(0);
|
_c_max = (float)(0);
|
||||||
_c_current = (float)(0);
|
_c_current = (float)(0);
|
||||||
|
|
||||||
_disabled = false;
|
|
||||||
_modifier_apply_type = modifier_apply_type;
|
_modifier_apply_type = modifier_apply_type;
|
||||||
_id = id;
|
_id = id;
|
||||||
_base = base;
|
_base = base;
|
||||||
_percent = 100;
|
_percent = 100;
|
||||||
_bonus = 0;
|
_bonus = 0;
|
||||||
|
|
||||||
_disabled = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Stat::~Stat() {
|
Stat::~Stat() {
|
||||||
@ -144,18 +136,8 @@ void Stat::set_dirty(bool value) {
|
|||||||
_dirty = value;
|
_dirty = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Stat::get_disabled() {
|
void Stat::add_modifier(int id, float base_mod, float bonus_mod, float percent_mod, bool apply) {
|
||||||
return _disabled;
|
Ref<StatModifier> statModifier = Ref<StatModifier>(memnew(StatModifier(id, base_mod, bonus_mod, percent_mod)));
|
||||||
}
|
|
||||||
|
|
||||||
void Stat::set_disabled(bool value) {
|
|
||||||
_disabled = value;
|
|
||||||
|
|
||||||
emit_signal("s_changed", this);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Stat::add_modifier(int id, float _max_mod, float percent_mod, bool apply) {
|
|
||||||
Ref<StatModifier> statModifier = Ref<StatModifier>(memnew(StatModifier(id, _max_mod, percent_mod)));
|
|
||||||
|
|
||||||
if (apply) {
|
if (apply) {
|
||||||
apply_modifier(statModifier);
|
apply_modifier(statModifier);
|
||||||
@ -181,10 +163,12 @@ void Stat::remove_modifier(int id, bool apply) {
|
|||||||
|
|
||||||
void Stat::apply_modifier(Ref<StatModifier> modifier) {
|
void Stat::apply_modifier(Ref<StatModifier> modifier) {
|
||||||
if (_modifier_apply_type == MODIFIER_APPLY_TYPE_STANDARD) {
|
if (_modifier_apply_type == MODIFIER_APPLY_TYPE_STANDARD) {
|
||||||
|
_base += modifier->get_base_mod();
|
||||||
_bonus += modifier->get_bonus_mod();
|
_bonus += modifier->get_bonus_mod();
|
||||||
_percent += modifier->get_percent_mod();
|
_percent += modifier->get_percent_mod();
|
||||||
} else {
|
} else {
|
||||||
if (modifier->get_percent_mod() >= (float)0) {
|
if (modifier->get_percent_mod() >= (float)0) {
|
||||||
|
_base += modifier->get_base_mod();
|
||||||
_bonus += modifier->get_bonus_mod();
|
_bonus += modifier->get_bonus_mod();
|
||||||
_percent += modifier->get_percent_mod();
|
_percent += modifier->get_percent_mod();
|
||||||
} else {
|
} else {
|
||||||
@ -211,16 +195,22 @@ void Stat::apply_modifier(Ref<StatModifier> modifier) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
recalculate();
|
||||||
|
emit_signal("s_changed", this);
|
||||||
|
send();
|
||||||
// emit_signal("s_changed", this);
|
// emit_signal("s_changed", this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Stat::de_apply_modifier(Ref<StatModifier> modifier) {
|
void Stat::de_apply_modifier(Ref<StatModifier> modifier) {
|
||||||
if (_modifier_apply_type == MODIFIER_APPLY_TYPE_STANDARD) {
|
if (_modifier_apply_type == MODIFIER_APPLY_TYPE_STANDARD) {
|
||||||
|
_base -= modifier->get_base_mod();
|
||||||
_bonus -= modifier->get_bonus_mod();
|
_bonus -= modifier->get_bonus_mod();
|
||||||
_percent -= modifier->get_percent_mod();
|
_percent -= modifier->get_percent_mod();
|
||||||
} else {
|
} else {
|
||||||
if (modifier->get_percent_mod() >= (float)0) {
|
if (modifier->get_percent_mod() >= (float)0) {
|
||||||
//_bonus -= modifier->get_bonus_mod();
|
_base -= modifier->get_base_mod();
|
||||||
|
_bonus -= modifier->get_bonus_mod();
|
||||||
_percent -= modifier->get_percent_mod();
|
_percent -= modifier->get_percent_mod();
|
||||||
} else {
|
} else {
|
||||||
int num = -1;
|
int num = -1;
|
||||||
@ -242,9 +232,9 @@ void Stat::de_apply_modifier(Ref<StatModifier> modifier) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_modifiers.size() == 0) {
|
|
||||||
recalculate();
|
recalculate();
|
||||||
}
|
emit_signal("s_changed", this);
|
||||||
|
send();
|
||||||
|
|
||||||
// emit_signal("s_changed", this);
|
// emit_signal("s_changed", this);
|
||||||
}
|
}
|
||||||
@ -256,6 +246,7 @@ void Stat::re_apply_modifiers() {
|
|||||||
for (int i = 0; i < _modifiers.size(); i += 1) {
|
for (int i = 0; i < _modifiers.size(); i += 1) {
|
||||||
Ref<StatModifier> mod = _modifiers.get(i);
|
Ref<StatModifier> mod = _modifiers.get(i);
|
||||||
|
|
||||||
|
_base += mod->get_base_mod();
|
||||||
_bonus += mod->get_bonus_mod();
|
_bonus += mod->get_bonus_mod();
|
||||||
_percent += mod->get_percent_mod();
|
_percent += mod->get_percent_mod();
|
||||||
}
|
}
|
||||||
@ -263,9 +254,9 @@ void Stat::re_apply_modifiers() {
|
|||||||
re_apply_modifier_not_negative_stacking_percents();
|
re_apply_modifier_not_negative_stacking_percents();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_modifiers.size() == 0) {
|
|
||||||
recalculate();
|
recalculate();
|
||||||
}
|
emit_signal("s_changed", this);
|
||||||
|
send();
|
||||||
|
|
||||||
// emit_signal("s_changed", this);
|
// emit_signal("s_changed", this);
|
||||||
}
|
}
|
||||||
@ -277,6 +268,7 @@ void Stat::re_apply_modifier_not_negative_stacking_percents() {
|
|||||||
if (_modifiers.get(i)->get_percent_mod() > (float)0) {
|
if (_modifiers.get(i)->get_percent_mod() > (float)0) {
|
||||||
Ref<StatModifier> mod = _modifiers.get(i);
|
Ref<StatModifier> mod = _modifiers.get(i);
|
||||||
|
|
||||||
|
_base += mod->get_base_mod();
|
||||||
_bonus += mod->get_bonus_mod();
|
_bonus += mod->get_bonus_mod();
|
||||||
_percent += mod->get_percent_mod();
|
_percent += mod->get_percent_mod();
|
||||||
}
|
}
|
||||||
@ -298,10 +290,15 @@ void Stat::re_apply_modifier_not_negative_stacking_percents() {
|
|||||||
if (num != -1) {
|
if (num != -1) {
|
||||||
Ref<StatModifier> mod = _modifiers.get(num);
|
Ref<StatModifier> mod = _modifiers.get(num);
|
||||||
|
|
||||||
|
_base += mod->get_base_mod();
|
||||||
_bonus += mod->get_bonus_mod();
|
_bonus += mod->get_bonus_mod();
|
||||||
_percent += mod->get_percent_mod();
|
_percent += mod->get_percent_mod();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
recalculate();
|
||||||
|
emit_signal("s_changed", this);
|
||||||
|
send();
|
||||||
|
|
||||||
// emit_signal("s_changed", this);
|
// emit_signal("s_changed", this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -386,10 +383,6 @@ void Stat::set_percent(float value) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Stat::reset_values() {
|
void Stat::reset_values() {
|
||||||
if (_disabled) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_percent = 100;
|
_percent = 100;
|
||||||
_bonus = 0;
|
_bonus = 0;
|
||||||
_percent = 0;
|
_percent = 0;
|
||||||
@ -401,16 +394,16 @@ void Stat::reset_values() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Stat::recalculate() {
|
void Stat::recalculate() {
|
||||||
if (_disabled) {
|
float diff = _s_current / _s_max;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_s_max = (_percent / (float)100) * (_base + _bonus);
|
_s_max = (_base + _bonus) * (_percent / 100.0);
|
||||||
|
|
||||||
if (_s_current > _s_max) {
|
if (_s_current > _s_max) {
|
||||||
_s_current = _s_max;
|
_s_current = _s_max;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_s_current = _s_max * diff;
|
||||||
|
|
||||||
_dirty = true;
|
_dirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -441,7 +434,6 @@ void Stat::set_values(float base, float bonus, float percent) {
|
|||||||
_base = base;
|
_base = base;
|
||||||
_bonus = bonus;
|
_bonus = bonus;
|
||||||
_percent = percent;
|
_percent = percent;
|
||||||
_disabled = false;
|
|
||||||
|
|
||||||
recalculate();
|
recalculate();
|
||||||
|
|
||||||
@ -472,7 +464,6 @@ void Stat::set(float current, float max, float base, float bonus, float percent)
|
|||||||
_bonus = bonus;
|
_bonus = bonus;
|
||||||
_percent = percent;
|
_percent = percent;
|
||||||
_dirty = true;
|
_dirty = true;
|
||||||
_disabled = false;
|
|
||||||
|
|
||||||
emit_signal("s_changed", this);
|
emit_signal("s_changed", this);
|
||||||
send();
|
send();
|
||||||
@ -493,10 +484,6 @@ void Stat::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("set_dirty", "value"), &Stat::set_dirty);
|
ClassDB::bind_method(D_METHOD("set_dirty", "value"), &Stat::set_dirty);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "is_dirty"), "set_dirty", "get_dirty");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "is_dirty"), "set_dirty", "get_dirty");
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_disabled"), &Stat::get_disabled);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_disabled", "value"), &Stat::set_disabled);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "dirty"), "set_disabled", "get_disabled");
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("gets_current"), &Stat::gets_current);
|
ClassDB::bind_method(D_METHOD("gets_current"), &Stat::gets_current);
|
||||||
ClassDB::bind_method(D_METHOD("sets_current", "value"), &Stat::sets_current);
|
ClassDB::bind_method(D_METHOD("sets_current", "value"), &Stat::sets_current);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "scurrent"), "sets_current", "gets_current");
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "scurrent"), "sets_current", "gets_current");
|
||||||
@ -543,7 +530,7 @@ void Stat::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("re_apply_modifier_not_negative_stacking_percents"), &Stat::re_apply_modifier_not_negative_stacking_percents);
|
ClassDB::bind_method(D_METHOD("re_apply_modifier_not_negative_stacking_percents"), &Stat::re_apply_modifier_not_negative_stacking_percents);
|
||||||
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("add_modifier", "id", "maxMod", "percentMod", "apply"), &Stat::add_modifier);
|
ClassDB::bind_method(D_METHOD("add_modifier", "id", "base_mod", "bonus_mod", "percent_mod", "apply"), &Stat::add_modifier);
|
||||||
ClassDB::bind_method(D_METHOD("remove_modifier", "id", "apply"), &Stat::remove_modifier);
|
ClassDB::bind_method(D_METHOD("remove_modifier", "id", "apply"), &Stat::remove_modifier);
|
||||||
ClassDB::bind_method(D_METHOD("re_apply_modifiers"), &Stat::re_apply_modifiers);
|
ClassDB::bind_method(D_METHOD("re_apply_modifiers"), &Stat::re_apply_modifiers);
|
||||||
|
|
||||||
|
@ -6,46 +6,7 @@
|
|||||||
#include "core/vector.h"
|
#include "core/vector.h"
|
||||||
#include "scene/resources/curve.h"
|
#include "scene/resources/curve.h"
|
||||||
|
|
||||||
class StatModifier : public Reference {
|
#include "stat_modifier.h"
|
||||||
GDCLASS(StatModifier, Reference);
|
|
||||||
|
|
||||||
public:
|
|
||||||
StatModifier() {
|
|
||||||
}
|
|
||||||
|
|
||||||
StatModifier(int i, float maxM, float percentM) {
|
|
||||||
_id = i;
|
|
||||||
_max_mod = maxM;
|
|
||||||
_percent_mod = percentM;
|
|
||||||
}
|
|
||||||
|
|
||||||
int get_id() { return _id; }
|
|
||||||
void set_id(int value) { _id = value; }
|
|
||||||
float get_bonus_mod() { return _max_mod; }
|
|
||||||
void set_bonus_mod(float value) { _max_mod = value; }
|
|
||||||
float get_percent_mod() { return _percent_mod; }
|
|
||||||
void set_percent_mod(float value) { _percent_mod = value; }
|
|
||||||
|
|
||||||
protected:
|
|
||||||
static void _bind_methods() {
|
|
||||||
ClassDB::bind_method(D_METHOD("get_id"), &StatModifier::get_id);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_id", "value"), &StatModifier::set_id);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "id"), "set_id", "get_id");
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_bonus_mod"), &StatModifier::get_bonus_mod);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_bonus_mod", "value"), &StatModifier::set_bonus_mod);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "bonus_mod"), "set_bonus_mod", "get_bonus_mod");
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_percent_mod"), &StatModifier::get_percent_mod);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_percent_mod", "value"), &StatModifier::set_percent_mod);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "percent_mod"), "set_percent_mod", "get_percent_mod");
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
int _id;
|
|
||||||
float _max_mod;
|
|
||||||
float _percent_mod;
|
|
||||||
};
|
|
||||||
|
|
||||||
class Stat : public Reference {
|
class Stat : public Reference {
|
||||||
GDCLASS(Stat, Reference);
|
GDCLASS(Stat, Reference);
|
||||||
@ -128,8 +89,6 @@ public:
|
|||||||
|
|
||||||
bool get_dirty();
|
bool get_dirty();
|
||||||
void set_dirty(bool value);
|
void set_dirty(bool value);
|
||||||
bool get_disabled();
|
|
||||||
void set_disabled(bool value);
|
|
||||||
|
|
||||||
float get_base();
|
float get_base();
|
||||||
void set_base(float value);
|
void set_base(float value);
|
||||||
@ -152,7 +111,7 @@ public:
|
|||||||
void recalculate();
|
void recalculate();
|
||||||
bool iss_current_zero();
|
bool iss_current_zero();
|
||||||
bool isc_current_zero();
|
bool isc_current_zero();
|
||||||
void set(float current, float max, float modCurrent, float modMax, float modPercent);
|
void set(float current, float max, float base, float bonus, float percent);
|
||||||
void set_from_stat(Ref<Stat> other);
|
void set_from_stat(Ref<Stat> other);
|
||||||
|
|
||||||
void set_to_max();
|
void set_to_max();
|
||||||
@ -163,7 +122,7 @@ public:
|
|||||||
void re_apply_modifier_not_negative_stacking_percents();
|
void re_apply_modifier_not_negative_stacking_percents();
|
||||||
|
|
||||||
Vector<Ref<StatModifier> > *get_modifiers();
|
Vector<Ref<StatModifier> > *get_modifiers();
|
||||||
void add_modifier(int id, float maxMod, float percentMod, bool apply = true);
|
void add_modifier(int id, float base_mod, float bonus_mod, float percent_mod, bool apply = true);
|
||||||
void remove_modifier(int id, bool apply = true);
|
void remove_modifier(int id, bool apply = true);
|
||||||
void re_apply_modifiers();
|
void re_apply_modifiers();
|
||||||
int get_modifier_count();
|
int get_modifier_count();
|
||||||
@ -185,7 +144,6 @@ private:
|
|||||||
Vector<Ref<StatModifier> > _modifiers;
|
Vector<Ref<StatModifier> > _modifiers;
|
||||||
|
|
||||||
bool _dirty;
|
bool _dirty;
|
||||||
bool _disabled;
|
|
||||||
|
|
||||||
float _base;
|
float _base;
|
||||||
float _bonus;
|
float _bonus;
|
||||||
|
1
entities/stats/stat_modifier.cpp
Normal file
1
entities/stats/stat_modifier.cpp
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "stat_modifier.h"
|
62
entities/stats/stat_modifier.h
Normal file
62
entities/stats/stat_modifier.h
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
#ifndef STAT_MODIFIER_H
|
||||||
|
#define STAT_MODIFIER_H
|
||||||
|
|
||||||
|
#include "core/reference.h"
|
||||||
|
|
||||||
|
class StatModifier : public Reference {
|
||||||
|
GDCLASS(StatModifier, Reference);
|
||||||
|
|
||||||
|
public:
|
||||||
|
StatModifier() {
|
||||||
|
_id = 0;
|
||||||
|
_base_mod = 0;
|
||||||
|
_bonus_mod = 0;
|
||||||
|
_percent_mod = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
StatModifier(int i, float base_mod, float bonus_mod, float percent_mod) {
|
||||||
|
_id = i;
|
||||||
|
_base_mod = base_mod;
|
||||||
|
_bonus_mod = bonus_mod;
|
||||||
|
_percent_mod = percent_mod;
|
||||||
|
}
|
||||||
|
|
||||||
|
int get_id() { return _id; }
|
||||||
|
void set_id(int value) { _id = value; }
|
||||||
|
|
||||||
|
float get_base_mod() { return _base_mod; }
|
||||||
|
void set_base_mod(float value) { _base_mod = value; }
|
||||||
|
|
||||||
|
float get_bonus_mod() { return _bonus_mod; }
|
||||||
|
void set_bonus_mod(float value) { _bonus_mod = value; }
|
||||||
|
|
||||||
|
float get_percent_mod() { return _percent_mod; }
|
||||||
|
void set_percent_mod(float value) { _percent_mod = value; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
static void _bind_methods() {
|
||||||
|
ClassDB::bind_method(D_METHOD("get_id"), &StatModifier::get_id);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_id", "value"), &StatModifier::set_id);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "id"), "set_id", "get_id");
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_base_mod"), &StatModifier::get_base_mod);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_base_mod", "value"), &StatModifier::set_base_mod);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "base_mod"), "set_base_mod", "get_base_mod");
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_bonus_mod"), &StatModifier::get_bonus_mod);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_bonus_mod", "value"), &StatModifier::set_bonus_mod);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "bonus_mod"), "set_bonus_mod", "get_bonus_mod");
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_percent_mod"), &StatModifier::get_percent_mod);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_percent_mod", "value"), &StatModifier::set_percent_mod);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "percent_mod"), "set_percent_mod", "get_percent_mod");
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
int _id;
|
||||||
|
float _base_mod;
|
||||||
|
float _bonus_mod;
|
||||||
|
float _percent_mod;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -4,6 +4,7 @@
|
|||||||
#include "item_enums.h"
|
#include "item_enums.h"
|
||||||
|
|
||||||
#include "data/aura.h"
|
#include "data/aura.h"
|
||||||
|
#include "data/aura_stat_attribute.h"
|
||||||
#include "data/data_manager.h"
|
#include "data/data_manager.h"
|
||||||
#include "data/character_class.h"
|
#include "data/character_class.h"
|
||||||
#include "data/talent.h"
|
#include "data/talent.h"
|
||||||
@ -20,6 +21,7 @@
|
|||||||
|
|
||||||
#include "data/spell.h"
|
#include "data/spell.h"
|
||||||
#include "entities/stats/stat.h"
|
#include "entities/stats/stat.h"
|
||||||
|
#include "entities/stats/stat_modifier.h"
|
||||||
#include "entities/stats/stat_data.h"
|
#include "entities/stats/stat_data.h"
|
||||||
#include "entities/player_talent.h"
|
#include "entities/player_talent.h"
|
||||||
#include "inventory/bag_slot.h"
|
#include "inventory/bag_slot.h"
|
||||||
@ -77,6 +79,8 @@ void register_entity_spell_system_types() {
|
|||||||
ClassDB::register_class<CharacterClass>();
|
ClassDB::register_class<CharacterClass>();
|
||||||
ClassDB::register_class<Spell>();
|
ClassDB::register_class<Spell>();
|
||||||
ClassDB::register_class<Aura>();
|
ClassDB::register_class<Aura>();
|
||||||
|
ClassDB::register_class<AuraStatAttribute>();
|
||||||
|
|
||||||
ClassDB::register_class<XPData>();
|
ClassDB::register_class<XPData>();
|
||||||
ClassDB::register_class<ItemStatModifier>();
|
ClassDB::register_class<ItemStatModifier>();
|
||||||
ClassDB::register_class<ItemTemplateStatModifier>();
|
ClassDB::register_class<ItemTemplateStatModifier>();
|
||||||
|
Loading…
Reference in New Issue
Block a user