diff --git a/entities/entity.cpp b/entities/entity.cpp index cff1960..b18db6e 100644 --- a/entities/entity.cpp +++ b/entities/entity.cpp @@ -1399,11 +1399,14 @@ void Entity::saura_refreshed(Ref aura) { SEND_RPC(rpc("caura_refreshed", aura), caura_refreshed(aura)); } -void Entity::cadd_aura(Ref data) { - ERR_FAIL_COND(!data.is_valid()); +void Entity::cadd_aura(Ref aura) { + ERR_FAIL_COND(!aura.is_valid()); - _c_auras.push_back(data); - emit_signal("caura_added", data); + _c_auras.push_back(aura); + + aura->get_aura()->con_aura_added(aura); + + emit_signal("caura_added", aura); } void Entity::cremove_aura(Ref aura) { @@ -1425,6 +1428,8 @@ void Entity::cremove_aura(Ref aura) { } if (removed) { + aura->get_aura()->con_aura_removed(aura); + if (_s_character_class.is_valid()) { _s_character_class->con_aura_removed(aura); } @@ -1439,6 +1444,8 @@ void Entity::cremove_aura(Ref aura) { void Entity::cremove_aura_exact(Ref aura) { ERR_FAIL_COND(!aura.is_valid()); + aura->get_aura()->con_aura_removed(aura); + for (int i = 0; i < _c_auras.size(); i++) { if (_c_auras.get(i) == aura) { _c_auras.remove(i); @@ -1459,6 +1466,8 @@ void Entity::cremove_aura_exact(Ref aura) { void Entity::cremove_aura_dispelled(Ref aura) { ERR_FAIL_COND(!aura.is_valid()); + aura->get_aura()->con_aura_removed(aura); + for (int i = 0; i < _c_auras.size(); i++) { if (_c_auras.get(i) == aura) { _c_auras.remove(i); @@ -1488,6 +1497,8 @@ void Entity::caura_refreshed(Ref aura) { void Entity::cremove_aura_expired(Ref aura) { ERR_FAIL_COND(!aura.is_valid()); + aura->get_aura()->con_aura_removed(aura); + for (int i = 0; i < _c_auras.size(); i++) { if (_c_auras.get(i) == aura) { _c_auras.remove(i);