Added xp and level based events.

This commit is contained in:
Relintai 2019-09-12 13:26:52 +02:00
parent d50a8748f6
commit 2c8becc27a
6 changed files with 459 additions and 206 deletions

View File

@ -667,6 +667,20 @@ void Aura::son_physics_process(Ref<AuraData> data) {
call("_son_gcd_finished", data);
}
void Aura::son_xp_gained(Ref<AuraData> data, int value) {
ERR_FAIL_COND(!data.is_valid());
if (has_method("_son_xp_gained"))
call("_son_xp_gained", data, value);
}
void Aura::son_level_up(Ref<AuraData> data, int value) {
ERR_FAIL_COND(!data.is_valid());
if (has_method("_son_level_up"))
call("_son_level_up", data, value);
}
void Aura::con_cast_failed(Ref<AuraData> data, Ref<SpellCastInfo> info) {
if (has_method("_con_cast_failed"))
call("_con_cast_failed", data, info);
@ -776,6 +790,20 @@ void Aura::con_gcd_finished(Ref<AuraData> data) {
call("_con_gcd_finished", data);
}
void Aura::con_xp_gained(Ref<AuraData> data, int value) {
ERR_FAIL_COND(!data.is_valid());
if (has_method("_con_xp_gained"))
call("_con_xp_gained", data, value);
}
void Aura::con_level_up(Ref<AuraData> data, int value) {
ERR_FAIL_COND(!data.is_valid());
if (has_method("_con_level_up"))
call("_con_level_up", data, value);
}
void Aura::setup_aura_data(Ref<AuraData> data, Ref<AuraApplyInfo> info) {
ERR_FAIL_COND(!data.is_valid() || !info.is_valid());
@ -1066,6 +1094,11 @@ void Aura::_bind_methods() {
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);
ClassDB::bind_method(D_METHOD("son_physics_process", "data"), &Aura::son_physics_process);
ClassDB::bind_method(D_METHOD("son_xp_gained", "data", "value"), &Aura::son_xp_gained);
ClassDB::bind_method(D_METHOD("son_level_up", "data", "value"), &Aura::son_level_up);
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")));
@ -1104,6 +1137,11 @@ void Aura::_bind_methods() {
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")));
BIND_VMETHOD(MethodInfo("_son_physics_process", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
BIND_VMETHOD(MethodInfo("_son_xp_gained", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::INT, "value")));
BIND_VMETHOD(MethodInfo("_son_level_up", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::INT, "value")));
//Clientside Event Handlers
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);
@ -1129,6 +1167,9 @@ void Aura::_bind_methods() {
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);
ClassDB::bind_method(D_METHOD("con_xp_gained", "data", "value"), &Aura::con_xp_gained);
ClassDB::bind_method(D_METHOD("con_level_up", "data", "value"), &Aura::con_level_up);
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")));
@ -1154,7 +1195,10 @@ void Aura::_bind_methods() {
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")));
BIND_VMETHOD(MethodInfo("_con_xp_gained", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::INT, "value")));
BIND_VMETHOD(MethodInfo("_con_level_up", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::INT, "value")));
//Calculations / Queries
ClassDB::bind_method(D_METHOD("setup_aura_data", "data", "info"), &Aura::setup_aura_data);

View File

@ -256,6 +256,9 @@ public:
void son_gcd_finished(Ref<AuraData> data);
void son_physics_process(Ref<AuraData> data);
void son_xp_gained(Ref<AuraData> data, int value);
void son_level_up(Ref<AuraData> data, int value);
//Clientside Event Handlers
void con_cast_failed(Ref<AuraData> data, Ref<SpellCastInfo> info);
@ -282,7 +285,10 @@ public:
void con_gcd_started(Ref<AuraData> data, float gcd);
void con_gcd_finished(Ref<AuraData> data);
void con_xp_gained(Ref<AuraData> data, int value);
void con_level_up(Ref<AuraData> data, int value);
//Calculations / Queries
void setup_aura_data(Ref<AuraData> data, Ref<AuraApplyInfo> info);

View File

@ -702,6 +702,40 @@ void EntityData::son_gcd_finished_bind(Node *entity) {
son_gcd_finished(e);
}
void EntityData::son_xp_gained(Entity *entity, int value) {
if (has_method("_son_xp_gained"))
call("_son_xp_gained", entity, value);
else if (_inherits.is_valid())
_inherits->son_xp_gained(entity, value);
}
void EntityData::son_xp_gained_bind(Node *entity, int value) {
ERR_FAIL_COND(!ObjectDB::instance_validate(entity));
Entity *e = Object::cast_to<Entity>(entity);
ERR_FAIL_COND(e == NULL);
son_xp_gained(e, value);
}
void EntityData::son_level_up(Entity *entity, int value) {
if (has_method("_son_level_up"))
call("_son_level_up", entity);
else if (_inherits.is_valid())
_inherits->son_level_up(entity, value);
}
void EntityData::son_level_up_bind(Node *entity, int value) {
ERR_FAIL_COND(!ObjectDB::instance_validate(entity));
Entity *e = Object::cast_to<Entity>(entity);
ERR_FAIL_COND(e == NULL);
son_level_up(e, value);
}
//Clientside Event Handlers
void EntityData::con_cast_failed(Ref<SpellCastInfo> info) {
ERR_FAIL_COND(!info.is_valid());
@ -890,6 +924,38 @@ void EntityData::con_gcd_finished_bind(Node *entity) {
con_gcd_finished(e);
}
void EntityData::con_xp_gained(Entity *entity, int value) {
if (has_method("_con_xp_gained"))
call("_con_xp_gained", entity, value);
else if (_inherits.is_valid())
_inherits->con_xp_gained(entity, value);
}
void EntityData::con_xp_gained_bind(Node *entity, int value) {
ERR_FAIL_COND(!ObjectDB::instance_validate(entity));
Entity *e = Object::cast_to<Entity>(entity);
ERR_FAIL_COND(e == NULL);
con_xp_gained(e, value);
}
void EntityData::con_level_up(Entity *entity, int value) {
if (has_method("_con_level_up"))
call("_con_level_up", entity);
else if (_inherits.is_valid())
_inherits->con_level_up(entity, value);
}
void EntityData::con_level_up_bind(Node *entity, int value) {
ERR_FAIL_COND(!ObjectDB::instance_validate(entity));
Entity *e = Object::cast_to<Entity>(entity);
ERR_FAIL_COND(e == NULL);
con_level_up(e, value);
}
void EntityData::sai_follow(Entity *entity) {
ERR_FAIL_COND(entity == NULL);
@ -1011,6 +1077,9 @@ void EntityData::_bind_methods() {
ClassDB::bind_method(D_METHOD("son_gcd_started", "entity", "gcd"), &EntityData::son_gcd_started_bind);
ClassDB::bind_method(D_METHOD("son_gcd_finished", "entity"), &EntityData::son_gcd_finished_bind);
ClassDB::bind_method(D_METHOD("son_xp_gained", "entity", "value"), &EntityData::son_xp_gained_bind);
ClassDB::bind_method(D_METHOD("son_level_up", "entity", "value"), &EntityData::son_level_up_bind);
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_cast_started", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
@ -1050,6 +1119,9 @@ void EntityData::_bind_methods() {
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")));
BIND_VMETHOD(MethodInfo("_son_xp_gained", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value")));
BIND_VMETHOD(MethodInfo("_son_level_up", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value")));
BIND_VMETHOD(MethodInfo("_setup_resources", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity")));
//Clientside Event Handlers
@ -1073,6 +1145,9 @@ void EntityData::_bind_methods() {
ClassDB::bind_method(D_METHOD("con_gcd_started", "entity", "gcd"), &EntityData::con_gcd_started_bind);
ClassDB::bind_method(D_METHOD("con_gcd_finished", "entity"), &EntityData::con_gcd_finished_bind);
ClassDB::bind_method(D_METHOD("con_xp_gained", "entity", "value"), &EntityData::con_xp_gained_bind);
ClassDB::bind_method(D_METHOD("con_level_up", "entity", "value"), &EntityData::con_level_up_bind);
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_state_changed", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
@ -1093,6 +1168,9 @@ void EntityData::_bind_methods() {
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")));
BIND_VMETHOD(MethodInfo("_con_xp_gained", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value")));
BIND_VMETHOD(MethodInfo("_con_level_up", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value")));
ClassDB::bind_method(D_METHOD("sai_follow", "entity"), &EntityData::sai_follow_bind);
ClassDB::bind_method(D_METHOD("sai_rest", "entity"), &EntityData::sai_rest_bind);
ClassDB::bind_method(D_METHOD("sai_regenerate", "entity"), &EntityData::sai_regenerate_bind);

View File

@ -200,7 +200,12 @@ public:
void son_gcd_finished(Entity *entity);
void son_gcd_started_bind(Node *entity, float gcd);
void son_gcd_finished_bind(Node *entity);
void son_xp_gained(Entity *entity, int value);
void son_xp_gained_bind(Node *entity, int value);
void son_level_up(Entity *entity, int value);
void son_level_up_bind(Node *entity, int value);
//Clientside Event Handlers
void con_cast_failed(Ref<SpellCastInfo> info);
void con_cast_started(Ref<SpellCastInfo> info);
@ -229,7 +234,12 @@ public:
void con_gcd_finished(Entity *entity);
void con_gcd_started_bind(Node *entity, float gcd);
void con_gcd_finished_bind(Node *entity);
void con_xp_gained(Entity *entity, int value);
void con_xp_gained_bind(Node *entity, int value);
void con_level_up(Entity *entity, int value);
void con_level_up_bind(Node *entity, int value);
// AI //
void sai_follow(Entity *entity);
void sai_rest(Entity *entity);

View File

@ -173,7 +173,6 @@ void Entity::setc_xp(int value) {
_c_xp = value;
}
int Entity::gets_money() {
return _s_money;
}
@ -190,7 +189,6 @@ void Entity::setc_money(int value) {
_c_money = value;
}
Ref<EntityData> Entity::getc_entity_data() {
return _c_entity_data;
}
@ -208,7 +206,7 @@ Ref<EntityData> Entity::gets_entity_data() {
void Entity::sets_entity_data(Ref<EntityData> value) {
_s_entity_data = value;
setup();
setup();
emit_signal("sentity_data_changed", value);
@ -216,27 +214,26 @@ void Entity::sets_entity_data(Ref<EntityData> value) {
}
void Entity::setup() {
if (has_method("_setup")) {
call("_setup");
}
if (has_method("_setup")) {
call("_setup");
}
}
void Entity::_setup() {
if (_s_entity_data.is_valid()) {
if (_s_entity_data.is_valid()) {
_s_entity_data->setup_resources(this);
sinitialize_stats();
sets_entity_data_id(_s_entity_data->get_id());
sets_entity_type(_s_entity_data->get_entity_type());
sets_immunity_flags(_s_entity_data->get_immunity_flags());
sets_entity_flags(_s_entity_data->get_entity_flags());
sets_entity_type(_s_entity_data->get_entity_type());
sets_immunity_flags(_s_entity_data->get_immunity_flags());
sets_entity_flags(_s_entity_data->get_entity_flags());
if (_s_entity_controller == EntityEnums::ENITIY_CONTROLLER_NONE)
sets_entity_controller(_s_entity_data->get_entity_controller());
sets_player_name(_s_entity_data->get_entity_name());
sets_money(_s_entity_data->get_money());
sets_player_name(_s_entity_data->get_entity_name());
sets_money(_s_entity_data->get_money());
}
if (!Engine::get_singleton()->is_editor_hint())
@ -263,9 +260,9 @@ Entity::Entity() {
_c_xp = 0;
_s_send_flag = 0;
_c_money = 0;
_s_money = 0;
_c_money = 0;
_s_money = 0;
_s_player_name = "";
_c_player_name = "";
@ -295,13 +292,13 @@ Entity::Entity() {
_s_entity_type = EntityEnums::ENITIY_TYPE_NONE;
_c_entity_type = EntityEnums::ENITIY_TYPE_NONE;
_s_immunity_flags = 0;
_s_entity_flags = 0;
_c_entity_flags = 0;
_s_entity_controller = EntityEnums::ENITIY_CONTROLLER_NONE;
_s_immunity_flags = 0;
_s_entity_flags = 0;
_c_entity_flags = 0;
_s_entity_controller = EntityEnums::ENITIY_CONTROLLER_NONE;
_s_target = NULL;
_c_target = NULL;
@ -428,19 +425,19 @@ Entity::Entity() {
}
Entity::~Entity() {
//Ref<EntityData> _s_entity_data;
//Ref<EntityData> _s_entity_data;
//Ref<EntityData> _c_entity_data;
_s_resources.clear();
_s_resources.clear();
_c_resources.clear();
//Ref<SpellCastInfo> _s_spell_cast_info;
//Ref<SpellCastInfo> _s_spell_cast_info;
//Ref<SpellCastInfo> _c_spell_cast_info;
_s_auras.clear();
_s_auras.clear();
_c_auras.clear();
_s_cooldowns.clear();
_s_cooldowns.clear();
_c_cooldowns.clear();
_s_cooldown_map.clear();
@ -448,8 +445,8 @@ Entity::~Entity() {
_s_category_cooldowns.clear();
_c_category_cooldowns.clear();
_s_data.clear();
_s_data.clear();
_c_data.clear();
}
@ -754,21 +751,21 @@ void Entity::stake_damage(Ref<SpellDamageInfo> info) {
}
son_before_damage_hit(info);
if (info->get_immune()) {
SEND_RPC(rpc("con_damage_dealt", info), con_damage_dealt(info));
return;
}
if (info->get_immune()) {
SEND_RPC(rpc("con_damage_dealt", info), con_damage_dealt(info));
return;
}
//send it through the passive damage reductions pipeline
sapply_passives_damage_receive(info);
//send it through the onbeforehit handler
son_before_damage(info);
//send it throug the onhit pipeliine
son_hit(info);
son_damage_receive(info);
int h = get_health()->gets_current() - info->get_damage();
@ -824,17 +821,17 @@ void Entity::stake_heal(Ref<SpellHealInfo> info) {
if (gets_is_dead()) {
return;
}
son_before_heal_hit(info);
if (info->get_immune()) {
SEND_RPC(rpc("con_heal_dealt", info), con_heal_dealt(info));
return;
}
SEND_RPC(rpc("con_heal_dealt", info), con_heal_dealt(info));
return;
}
//send it through the passive damage reductions pipeline
sapply_passives_heal_receive(info);
//send it through the onbeforehit handler
son_before_heal(info);
@ -871,23 +868,50 @@ void Entity::sdeal_heal_to(Ref<SpellHealInfo> info) {
//Interactions
bool Entity::cans_interact() {
if (!_s_entity_data.is_valid()) {
return false;
}
return _s_entity_data->cans_interact(this);
if (!_s_entity_data.is_valid()) {
return false;
}
return _s_entity_data->cans_interact(this);
}
void Entity::sinteract() {
if (!cans_interact()) {
return;
}
_s_entity_data->sinteract(this);
if (!cans_interact()) {
return;
}
_s_entity_data->sinteract(this);
}
void Entity::crequest_interact() {
sinteract();
sinteract();
}
//XP Operations
void Entity::adds_xp(int value) {
_s_xp += value;
son_xp_gained(value);
SEND_RPC(rpc("addc_xp", value), addc_xp(value));
}
void Entity::addc_xp(int value) {
_c_xp += value;
con_xp_gained(value);
}
void Entity::s_levelup(int value) {
_s_level += value;
son_level_up(value);
SEND_RPC(rpc("c_levelup", value), c_levelup(value));
}
void Entity::c_levelup(int value) {
_s_level += value;
con_level_up(value);
}
void Entity::resurrect() {
@ -1467,6 +1491,36 @@ void Entity::son_physics_process() {
}
}
void Entity::son_xp_gained(int value) {
if (_s_entity_data.is_valid()) {
_s_entity_data->son_xp_gained(this, value);
}
if (has_method("_son_xp_gained"))
call("_son_xp_gained", value);
for (int i = 0; i < _s_auras.size(); ++i) {
Ref<AuraData> ad = _s_auras.get(i);
ad->get_aura()->son_xp_gained(ad, value);
}
}
void Entity::son_level_up(int value) {
if (_s_entity_data.is_valid()) {
_s_entity_data->son_level_up(this, _s_level);
}
if (has_method("_son_level_up"))
call("_son_level_up", _s_level);
for (int i = 0; i < _s_auras.size(); ++i) {
Ref<AuraData> ad = _s_auras.get(i);
ad->get_aura()->son_level_up(ad, _s_level);
}
}
void Entity::sadd_aura(Ref<AuraData> aura) {
ERR_FAIL_COND(!aura.is_valid());
@ -2058,6 +2112,36 @@ void Entity::con_dealt_heal(Ref<SpellHealInfo> info) {
emit_signal("con_dealt_heal", this, info);
}
void Entity::con_xp_gained(int value) {
if (_s_entity_data.is_valid()) {
_s_entity_data->con_xp_gained(this, value);
}
if (has_method("_con_xp_gained"))
call("_con_xp_gained", value);
for (int i = 0; i < _s_auras.size(); ++i) {
Ref<AuraData> ad = _s_auras.get(i);
ad->get_aura()->con_xp_gained(ad, value);
}
}
void Entity::con_level_up(int value) {
if (_s_entity_data.is_valid()) {
_s_entity_data->con_level_up(this, value);
}
if (has_method("_con_level_up"))
call("_con_level_up", value);
for (int i = 0; i < _s_auras.size(); ++i) {
Ref<AuraData> ad = _s_auras.get(i);
ad->get_aura()->con_level_up(ad, value);
}
}
//// Casting System ////
void Entity::sstart_casting(Ref<SpellCastInfo> info) {
@ -2700,44 +2784,41 @@ void Entity::creceive_rank(int talentID, int rank) {
// return NULL;
//}
//// DATA ////
void Entity::adds_data(Ref<EntityDataContainer> data) {
_s_data.push_back(data);
}
void Entity::removes_data(int index) {
ERR_FAIL_INDEX(index, _s_data.size());
_s_data.remove(index);
ERR_FAIL_INDEX(index, _s_data.size());
_s_data.remove(index);
}
Ref<EntityDataContainer> Entity::gets_data(int index) {
ERR_FAIL_INDEX_V(index, _s_data.size(), Ref<EntityDataContainer>());
return _s_data.get(index);
return _s_data.get(index);
}
int Entity::gets_data_count() {
return _s_data.size();
}
void Entity::addc_data(Ref<EntityDataContainer> data) {
_c_data.push_back(data);
}
void Entity::removec_data(int index) {
ERR_FAIL_INDEX(index, _c_data.size());
_c_data.remove(index);
ERR_FAIL_INDEX(index, _c_data.size());
_c_data.remove(index);
}
Ref<EntityDataContainer> Entity::getc_data(int index) {
ERR_FAIL_INDEX_V(index, _c_data.size(),Ref<EntityDataContainer>());
return _c_data.get(index);
ERR_FAIL_INDEX_V(index, _c_data.size(), Ref<EntityDataContainer>());
return _c_data.get(index);
}
int Entity::getc_data_count() {
return _c_data.size();
}
void Entity::loaded() {
//sendstate = true;
}
@ -2912,9 +2993,9 @@ void Entity::_notification(int p_what) {
case NOTIFICATION_PROCESS: {
update(get_process_delta_time());
} break;
case NOTIFICATION_PHYSICS_PROCESS: {
son_physics_process();
}break;
case NOTIFICATION_PHYSICS_PROCESS: {
son_physics_process();
} break;
case NOTIFICATION_EXIT_TREE: {
} break;
@ -2944,7 +3025,7 @@ void Entity::_bind_methods() {
ADD_SIGNAL(MethodInfo("sdied", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity")));
ADD_SIGNAL(MethodInfo("cdied", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity")));
//SpellCastSignals
ADD_SIGNAL(MethodInfo("scast_started", PropertyInfo(Variant::OBJECT, "spell_cast_info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
ADD_SIGNAL(MethodInfo("scast_failed", PropertyInfo(Variant::OBJECT, "spell_cast_info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
@ -2971,13 +3052,19 @@ void Entity::_bind_methods() {
ADD_SIGNAL(MethodInfo("caura_removed_expired", PropertyInfo(Variant::OBJECT, "aura_data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
//ADD_SIGNAL(MethodInfo("caura_refreshed", PropertyInfo(Variant::OBJECT, "aura_data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData")));
//setup
BIND_VMETHOD(MethodInfo("_setup", PropertyInfo(Variant::OBJECT, "entity_data", PROPERTY_HINT_RESOURCE_TYPE, "EntityData")));
ClassDB::bind_method(D_METHOD("setup"), &Entity::setup);
ClassDB::bind_method(D_METHOD("_setup"), &Entity::_setup);
//binds
ADD_SIGNAL(MethodInfo("son_xp_gained", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value")));
ADD_SIGNAL(MethodInfo("son_level_up", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value")));
ADD_SIGNAL(MethodInfo("con_xp_gained", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value")));
ADD_SIGNAL(MethodInfo("con_level_up", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value")));
//setup
BIND_VMETHOD(MethodInfo("_setup", PropertyInfo(Variant::OBJECT, "entity_data", PROPERTY_HINT_RESOURCE_TYPE, "EntityData")));
ClassDB::bind_method(D_METHOD("setup"), &Entity::setup);
ClassDB::bind_method(D_METHOD("_setup"), &Entity::_setup);
//binds
ClassDB::bind_method(D_METHOD("sdie"), &Entity::sdie);
ClassDB::bind_method(D_METHOD("cdie"), &Entity::cdie);
@ -2992,7 +3079,7 @@ void Entity::_bind_methods() {
BIND_VMETHOD(MethodInfo("_son_cast_finished", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
BIND_VMETHOD(MethodInfo("_son_cast_finished_target", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo")));
BIND_VMETHOD(MethodInfo("_son_before_damage_hit", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
BIND_VMETHOD(MethodInfo("_son_before_damage_hit", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
BIND_VMETHOD(MethodInfo("_son_hit", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
BIND_VMETHOD(MethodInfo("_son_before_damage", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
@ -3000,7 +3087,7 @@ void Entity::_bind_methods() {
BIND_VMETHOD(MethodInfo("_son_dealt_damage", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
BIND_VMETHOD(MethodInfo("_son_damage_dealt", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo")));
BIND_VMETHOD(MethodInfo("_son_before_heal_hit", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
BIND_VMETHOD(MethodInfo("_son_before_heal_hit", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
BIND_VMETHOD(MethodInfo("_son_before_heal", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
BIND_VMETHOD(MethodInfo("_son_heal_receive", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
BIND_VMETHOD(MethodInfo("_son_dealt_heal", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo")));
@ -3014,17 +3101,20 @@ void Entity::_bind_methods() {
BIND_VMETHOD(MethodInfo("_son_gcd_started", PropertyInfo(Variant::REAL, "gcd")));
BIND_VMETHOD(MethodInfo("_son_gcd_finished"));
BIND_VMETHOD(MethodInfo("_son_xp_gained", PropertyInfo(Variant::INT, "value")));
BIND_VMETHOD(MethodInfo("_son_level_up", PropertyInfo(Variant::INT, "value")));
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_before_damage_hit", "data"), &Entity::son_before_damage_hit);
ClassDB::bind_method(D_METHOD("son_before_damage_hit", "data"), &Entity::son_before_damage_hit);
ClassDB::bind_method(D_METHOD("son_hit", "data"), &Entity::son_hit);
ClassDB::bind_method(D_METHOD("son_before_damage", "data"), &Entity::son_before_damage);
ClassDB::bind_method(D_METHOD("son_damage_receive", "data"), &Entity::son_damage_receive);
ClassDB::bind_method(D_METHOD("son_dealt_damage", "data"), &Entity::son_dealt_damage);
ClassDB::bind_method(D_METHOD("son_damage_dealt", "data"), &Entity::son_damage_dealt);
ClassDB::bind_method(D_METHOD("son_before_heal_hit", "data"), &Entity::son_before_heal_hit);
ClassDB::bind_method(D_METHOD("son_before_heal_hit", "data"), &Entity::son_before_heal_hit);
ClassDB::bind_method(D_METHOD("son_before_heal", "data"), &Entity::son_before_heal);
ClassDB::bind_method(D_METHOD("son_heal_receive", "data"), &Entity::son_heal_receive);
ClassDB::bind_method(D_METHOD("son_dealt_heal", "data"), &Entity::son_dealt_heal);
@ -3042,6 +3132,10 @@ void Entity::_bind_methods() {
ClassDB::bind_method(D_METHOD("son_gcd_started"), &Entity::son_gcd_started);
ClassDB::bind_method(D_METHOD("son_gcd_finished"), &Entity::son_gcd_finished);
ClassDB::bind_method(D_METHOD("son_xp_gained", "value"), &Entity::son_xp_gained);
ClassDB::bind_method(D_METHOD("son_level_up", "value"), &Entity::son_level_up);
//Clientside EventHandlers
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")));
@ -3068,6 +3162,9 @@ void Entity::_bind_methods() {
BIND_VMETHOD(MethodInfo("_con_gcd_started", PropertyInfo(Variant::REAL, "gcd")));
BIND_VMETHOD(MethodInfo("_con_gcd_finished"));
BIND_VMETHOD(MethodInfo("_con_xp_gained", PropertyInfo(Variant::INT, "value")));
BIND_VMETHOD(MethodInfo("_con_level_up", PropertyInfo(Variant::INT, "value")));
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_state_changed", "info"), &Entity::con_cast_state_changed);
@ -3093,6 +3190,9 @@ void Entity::_bind_methods() {
ClassDB::bind_method(D_METHOD("con_gcd_started"), &Entity::con_gcd_started);
ClassDB::bind_method(D_METHOD("con_gcd_finished"), &Entity::con_gcd_finished);
ClassDB::bind_method(D_METHOD("con_xp_gained", "value"), &Entity::con_xp_gained);
ClassDB::bind_method(D_METHOD("con_level_up", "value"), &Entity::con_level_up);
//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_deal", "data"), &Entity::sapply_passives_damage_deal);
@ -3108,11 +3208,17 @@ void Entity::_bind_methods() {
//Heal Operations
ClassDB::bind_method(D_METHOD("stake_heal", "data"), &Entity::stake_heal);
ClassDB::bind_method(D_METHOD("sdeal_heal_to", "data"), &Entity::sdeal_heal_to);
//Interactions
ClassDB::bind_method(D_METHOD("cans_interact"), &Entity::cans_interact);
ClassDB::bind_method(D_METHOD("sinteract"), &Entity::sinteract);
ClassDB::bind_method(D_METHOD("crequest_interact"), &Entity::crequest_interact);
//Interactions
ClassDB::bind_method(D_METHOD("cans_interact"), &Entity::cans_interact);
ClassDB::bind_method(D_METHOD("sinteract"), &Entity::sinteract);
ClassDB::bind_method(D_METHOD("crequest_interact"), &Entity::crequest_interact);
//XP Operations
ClassDB::bind_method(D_METHOD("adds_xp", "value"), &Entity::adds_xp);
ClassDB::bind_method(D_METHOD("addc_xp", "value"), &Entity::addc_xp);
ClassDB::bind_method(D_METHOD("s_levelup", "value"), &Entity::s_levelup);
ClassDB::bind_method(D_METHOD("c_levelup", "value"), &Entity::c_levelup);
//Aura Manipulation
ClassDB::bind_method(D_METHOD("sadd_aura", "aura"), &Entity::sadd_aura);
@ -3163,20 +3269,20 @@ void Entity::_bind_methods() {
ClassDB::bind_method(D_METHOD("getc_entity_type"), &Entity::getc_entity_type);
ClassDB::bind_method(D_METHOD("setc_entity_type", "value"), &Entity::sets_entity_type);
ADD_PROPERTY(PropertyInfo(Variant::INT, "centity_type", PROPERTY_HINT_ENUM, EntityEnums::BINDING_STRING_ENTITY_TYPES), "setc_entity_type", "getc_entity_type");
ClassDB::bind_method(D_METHOD("gets_immunity_flags"), &Entity::gets_immunity_flags);
ClassDB::bind_method(D_METHOD("gets_immunity_flags"), &Entity::gets_immunity_flags);
ClassDB::bind_method(D_METHOD("sets_immunity_flags", "value"), &Entity::sets_immunity_flags);
ADD_PROPERTY(PropertyInfo(Variant::INT, "simmunity_flags", PROPERTY_HINT_FLAGS, EntityEnums::BINDING_STRING_ENTITY_IMMUNITY_FLAGS), "sets_immunity_flags", "gets_immunity_flags");
ClassDB::bind_method(D_METHOD("gets_entity_flags"), &Entity::gets_entity_flags);
ClassDB::bind_method(D_METHOD("gets_entity_flags"), &Entity::gets_entity_flags);
ClassDB::bind_method(D_METHOD("sets_entity_flags", "value"), &Entity::sets_entity_flags);
ADD_PROPERTY(PropertyInfo(Variant::INT, "sentity_flags", PROPERTY_HINT_FLAGS, EntityEnums::BINDING_STRING_ENTITY_FLAGS), "sets_entity_flags", "gets_entity_flags");
ClassDB::bind_method(D_METHOD("getc_entity_flags"), &Entity::getc_entity_flags);
ClassDB::bind_method(D_METHOD("getc_entity_flags"), &Entity::getc_entity_flags);
ClassDB::bind_method(D_METHOD("setc_entity_flags", "value"), &Entity::setc_entity_flags);
ADD_PROPERTY(PropertyInfo(Variant::INT, "centity_flags", PROPERTY_HINT_FLAGS, EntityEnums::BINDING_STRING_ENTITY_FLAGS), "setc_entity_flags", "getc_entity_flags");
ClassDB::bind_method(D_METHOD("gets_entity_controller"), &Entity::gets_entity_controller);
ClassDB::bind_method(D_METHOD("gets_entity_controller"), &Entity::gets_entity_controller);
ClassDB::bind_method(D_METHOD("sets_entity_controller", "value"), &Entity::sets_entity_controller);
ADD_PROPERTY(PropertyInfo(Variant::INT, "sentity_controller", PROPERTY_HINT_ENUM, EntityEnums::BINDING_STRING_ENTITY_CONTOLLER), "sets_entity_controller", "gets_entity_controller");
@ -3203,12 +3309,12 @@ void Entity::_bind_methods() {
ClassDB::bind_method(D_METHOD("getc_xp"), &Entity::getc_xp);
ClassDB::bind_method(D_METHOD("setc_xp", "value"), &Entity::setc_xp);
ADD_PROPERTY(PropertyInfo(Variant::STRING, "c_xp"), "setc_xp", "getc_xp");
ClassDB::bind_method(D_METHOD("gets_money"), &Entity::gets_money);
ClassDB::bind_method(D_METHOD("gets_money"), &Entity::gets_money);
ClassDB::bind_method(D_METHOD("sets_money", "value"), &Entity::sets_money);
ADD_PROPERTY(PropertyInfo(Variant::INT, "smoney"), "sets_money", "gets_money");
ClassDB::bind_method(D_METHOD("getc_money"), &Entity::getc_money);
ClassDB::bind_method(D_METHOD("getc_money"), &Entity::getc_money);
ClassDB::bind_method(D_METHOD("setc_money", "value"), &Entity::setc_money);
ADD_PROPERTY(PropertyInfo(Variant::INT, "cmoney"), "setc_money", "getc_money");
@ -3274,18 +3380,18 @@ void Entity::_bind_methods() {
ClassDB::bind_method(D_METHOD("gets_global_cooldown"), &Entity::gets_global_cooldown);
ClassDB::bind_method(D_METHOD("sstart_global_cooldown", "value"), &Entity::sstart_global_cooldown);
ClassDB::bind_method(D_METHOD("cstart_global_cooldown", "value"), &Entity::cstart_global_cooldown);
//Data
ClassDB::bind_method(D_METHOD("adds_data", "data"), &Entity::adds_data);
ClassDB::bind_method(D_METHOD("removes_data", "index"), &Entity::removes_data);
ClassDB::bind_method(D_METHOD("gets_data", "index"), &Entity::gets_data);
ClassDB::bind_method(D_METHOD("gets_data_count"), &Entity::gets_data_count);
ClassDB::bind_method(D_METHOD("addc_data", "data"), &Entity::addc_data);
ClassDB::bind_method(D_METHOD("removec_data", "index"), &Entity::removec_data);
ClassDB::bind_method(D_METHOD("getc_data", "index"), &Entity::getc_data);
ClassDB::bind_method(D_METHOD("getc_data_count"), &Entity::getc_data_count);
//Data
ClassDB::bind_method(D_METHOD("adds_data", "data"), &Entity::adds_data);
ClassDB::bind_method(D_METHOD("removes_data", "index"), &Entity::removes_data);
ClassDB::bind_method(D_METHOD("gets_data", "index"), &Entity::gets_data);
ClassDB::bind_method(D_METHOD("gets_data_count"), &Entity::gets_data_count);
ClassDB::bind_method(D_METHOD("addc_data", "data"), &Entity::addc_data);
ClassDB::bind_method(D_METHOD("removec_data", "index"), &Entity::removec_data);
ClassDB::bind_method(D_METHOD("getc_data", "index"), &Entity::getc_data);
ClassDB::bind_method(D_METHOD("getc_data_count"), &Entity::getc_data_count);
//States
ADD_SIGNAL(MethodInfo("sstate_changed", PropertyInfo(Variant::INT, "value")));
ADD_SIGNAL(MethodInfo("cstate_changed", PropertyInfo(Variant::INT, "value")));

View File

@ -9,16 +9,15 @@
#include "scene/3d/physics_body.h"
#endif
#include "./data/entity_data.h"
#include "../data/craft_data_attribute.h"
#include "../data/item_instance.h"
#include "../data/spell.h"
#include "../data/xp_data.h"
#include "./data/entity_data.h"
#include "core/hash_map.h"
#include "core/object.h"
#include "core/ustring.h"
#include "core/vector.h"
#include "../data/item_instance.h"
#include "entity_resource.h"
@ -33,8 +32,8 @@
#include "../utility/entity_create_info.h"
#include "../utility/cooldown.h"
#include "../utility/category_cooldown.h"
#include "../utility/cooldown.h"
#include "../inventory/bag.h"
@ -80,31 +79,30 @@ enum PlayerSendFlags {
#define SET_RPC_PUPPETSYNC(p_method_name) rpc_config(p_method_name, MultiplayerAPI::RPC_MODE_PUPPETSYNC);
// f.e. SEND_RPC(rpc("method", arg), method(arg))
#define SEND_RPC(rpc_func, normal_func) \
if (is_inside_tree() && get_tree()->has_network_peer() && get_tree()->get_network_peer()->get_connection_status() == NetworkedMultiplayerPeer::CONNECTION_CONNECTED) { \
rpc_func;\
}\
#define SEND_RPC(rpc_func, normal_func) \
if (is_inside_tree() && get_tree()->has_network_peer() && get_tree()->get_network_peer()->get_connection_status() == NetworkedMultiplayerPeer::CONNECTION_CONNECTED) { \
rpc_func; \
} \
normal_func;
// f.e. SEND_RPC_TO_SERVER(rpc_id(1, "method", arg), method(arg))
#define SEND_RPC_TO_SERVER(rpc_func, normal_func) \
#define SEND_RPC_TO_SERVER(rpc_func, normal_func) \
if (is_inside_tree() && get_tree()->has_network_peer() && get_tree()->get_network_peer()->get_connection_status() == NetworkedMultiplayerPeer::CONNECTION_CONNECTED) { \
if (get_tree()->is_network_server())\
normal_func;\
else \
rpc_func;\
} else {\
normal_func;\
if (get_tree()->is_network_server()) \
normal_func; \
else \
rpc_func; \
} else { \
normal_func; \
}
// f.e. SEND_RSET(rset("property", "value"), property, value)
#define SEND_RSET(rset_func, variable, value) \
if (is_inside_tree() && get_tree()->has_network_peer() && get_tree()->get_network_peer()->get_connection_status() == NetworkedMultiplayerPeer::CONNECTION_CONNECTED) { \
rset_func;\
}\
variable = value;
#define SEND_RSET(rset_func, variable, value) \
if (is_inside_tree() && get_tree()->has_network_peer() && get_tree()->get_network_peer()->get_connection_status() == NetworkedMultiplayerPeer::CONNECTION_CONNECTED) { \
rset_func; \
} \
variable = value;
#ifdef ENTITIES_2D
class Entity : public KinematicBody2D {
GDCLASS(Entity, KinematicBody2D);
@ -145,17 +143,17 @@ public:
EntityEnums::EntityType getc_entity_type();
void setc_entity_type(EntityEnums::EntityType value);
int gets_immunity_flags();
int gets_immunity_flags();
void sets_immunity_flags(int value);
int gets_entity_flags();
int gets_entity_flags();
void sets_entity_flags(int value);
int getc_entity_flags();
void setc_entity_flags(int value);
EntityEnums::EntityController gets_entity_controller();
EntityEnums::EntityController gets_entity_controller();
void sets_entity_controller(EntityEnums::EntityController value);
String gets_player_name();
@ -181,8 +179,8 @@ public:
int getc_xp();
void setc_xp(int value);
int gets_money();
int gets_money();
void sets_money(int value);
int getc_money();
@ -230,9 +228,9 @@ public:
Ref<Stat> get_stat_enum(Stat::StatId stat_id);
void set_stat_enum(Stat::StatId stat_id, Ref<Stat> entry);
void sdie();
void cdie();
void sdie();
void cdie();
void ons_stat_changed(Ref<Stat> stat);
void onc_stat_changed(Ref<Stat> stat);
@ -276,15 +274,15 @@ public:
//EventHandlers
void son_before_aura_applied(Ref<AuraData> data);
void son_after_aura_applied(Ref<AuraData> data);
void son_before_damage_hit(Ref<SpellDamageInfo> info);
void son_hit(Ref<SpellDamageInfo> info);
void son_hit(Ref<SpellDamageInfo> info);
void son_before_damage(Ref<SpellDamageInfo> info);
void son_damage_receive(Ref<SpellDamageInfo> info);
void son_dealt_damage(Ref<SpellDamageInfo> info);
void son_damage_dealt(Ref<SpellDamageInfo> info);
void son_before_heal_hit(Ref<SpellHealInfo> info);
void son_before_heal_hit(Ref<SpellHealInfo> info);
void son_before_heal(Ref<SpellHealInfo> info);
void son_heal_receive(Ref<SpellHealInfo> info);
void son_dealt_heal(Ref<SpellHealInfo> info);
@ -296,52 +294,58 @@ public:
void son_cast_finished(Ref<SpellCastInfo> info);
void son_cast_started(Ref<SpellCastInfo> info);
void son_cast_failed(Ref<SpellCastInfo> info);
void son_death();
void son_death();
void son_cooldown_added(Ref<Cooldown> cooldown);
void son_cooldown_removed(Ref<Cooldown> cooldown);
void son_category_cooldown_added(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();
void son_physics_process();
void son_physics_process();
void son_xp_gained(int value);
void son_level_up(int value);
//Clientside EventHandlers
void con_cast_failed(Ref<SpellCastInfo> info);
void con_cast_started(Ref<SpellCastInfo> info);
void con_cast_state_changed(Ref<SpellCastInfo> info);
void con_cast_finished(Ref<SpellCastInfo> info);
void con_spell_cast_success(Ref<SpellCastInfo> info);
void con_death();
void con_death();
void con_cooldown_added(Ref<Cooldown> cooldown);
void con_cooldown_removed(Ref<Cooldown> cooldown);
void con_category_cooldown_added(Ref<CategoryCooldown> category_cooldown);
void con_category_cooldown_removed(Ref<CategoryCooldown> category_cooldown);
void con_aura_added(Ref<AuraData> data);
void con_aura_removed(Ref<AuraData> data);
void con_aura_refresh(Ref<AuraData> data);
void con_damage_dealt(Ref<SpellDamageInfo> info);
void con_dealt_damage(Ref<SpellDamageInfo> info);
void con_heal_dealt(Ref<SpellHealInfo> info);
void con_dealt_heal(Ref<SpellHealInfo> info);
void con_xp_gained(int value);
void con_level_up(int value);
//Modifiers/Requesters
void sapply_passives_damage_receive(Ref<SpellDamageInfo> info);
void sapply_passives_damage_deal(Ref<SpellDamageInfo> info);
void sapply_passives_heal_receive(Ref<SpellHealInfo> info);
void sapply_passives_heal_deal(Ref<SpellHealInfo> info);
//Spell operations
void scast_spell(int spell_id);
void crequest_spell_cast(int spell_id);
@ -353,12 +357,18 @@ public:
//Heal Operations
void stake_heal(Ref<SpellHealInfo> info);
void sdeal_heal_to(Ref<SpellHealInfo> info);
//Interactions
bool cans_interact();
void sinteract();
//Interactions
bool cans_interact();
void sinteract();
void crequest_interact();
//XP Operations
void adds_xp(int value);
void addc_xp(int value);
void s_levelup(int value);
void c_levelup(int value);
//Aura Manipulation
void sadd_aura(Ref<AuraData> aura);
void sremove_aura(Ref<AuraData> aura);
@ -375,22 +385,22 @@ public:
void caura_refreshed(Ref<AuraData> aura);
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();
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();
Ref<AuraData> cget_aura(int index);
//Hooks
void moved();
//Update
void update_auras(float delta);
//Old stuff, remove or update
void resurrect();
void creceive_resurrect();
@ -399,7 +409,7 @@ public:
bool getc_is_dead();
//// Casting System ////
bool sis_casting();
bool cis_casting();
@ -445,7 +455,7 @@ public:
//Category Cooldowns
Vector<Ref<CategoryCooldown> > gets_category_cooldowns();
Vector<Ref<CategoryCooldown> > getc_category_cooldowns();
bool hass_category_cooldown(int category_id);
void adds_category_cooldown(int category_id, float value);
void removes_category_cooldown(int category_id);
@ -482,26 +492,25 @@ public:
void creceive_rank(int talentID, int rank);
//PlayerTalent *sget_talent(int id, bool create = false);
//PlayerTalent *cget_talent(int id, bool create = false);
//// Data ////
//// Data ////
void adds_data(Ref<EntityDataContainer> data);
void removes_data(int index);
Ref<EntityDataContainer> gets_data(int index);
int gets_data_count();
void addc_data(Ref<EntityDataContainer> data);
void addc_data(Ref<EntityDataContainer> data);
void removec_data(int index);
Ref<EntityDataContainer> getc_data(int index);
int getc_data_count();
void loaded();
String random_name();
void setup();
void _setup();
void setup();
void _setup();
Entity();
~Entity();
@ -537,9 +546,9 @@ private:
int _s_xp;
int _c_xp;
int _s_money;
int _c_money;
int _s_money;
int _c_money;
Ref<EntityData> _s_entity_data;
Ref<EntityData> _c_entity_data;
@ -611,14 +620,14 @@ private:
EntityEnums::EntityType _s_entity_type;
EntityEnums::EntityType _c_entity_type;
int _s_immunity_flags;
int _s_entity_flags;
int _c_entity_flags;
EntityEnums::EntityController _s_entity_controller;
int _s_immunity_flags;
int _s_entity_flags;
int _c_entity_flags;
EntityEnums::EntityController _s_entity_controller;
//// Cooldowns ////
Vector<Ref<Cooldown> > _s_cooldowns;
Vector<Ref<Cooldown> > _c_cooldowns;
@ -628,9 +637,9 @@ private:
Vector<Ref<CategoryCooldown> > _s_category_cooldowns;
Vector<Ref<CategoryCooldown> > _c_category_cooldowns;
int _s_active_category_cooldowns;
int _c_active_category_cooldowns;
int _s_active_category_cooldowns;
int _c_active_category_cooldowns;
//// targetComponent ////
@ -642,9 +651,9 @@ private:
//Vector<Ref<PlayerTalent> > _s_talents;
//Vector<Ref<PlayerTalent> > _c_talents;
//// Data ////
Vector<Ref<EntityDataContainer> > _s_data;
//// Data ////
Vector<Ref<EntityDataContainer> > _s_data;
Vector<Ref<EntityDataContainer> > _c_data;
};