Don't allow the target lists to build up existing entries so as to overload the DB

This commit is contained in:
Emagi 2025-08-16 19:56:19 -04:00
parent 65aa15d70e
commit 9274bc9ced
2 changed files with 18 additions and 5 deletions

View File

@ -128,7 +128,9 @@ struct LuaSpell{
void AddTarget(int32 target_id) {
std::unique_lock lock(targets_mutex);
targets.push_back(target_id);
bool hasTarget = std::find(targets.begin(), targets.end(), target_id) != targets.end();
if(!hasTarget)
targets.push_back(target_id);
}
int32 GetPrimaryTargetID() const {
@ -209,7 +211,18 @@ struct LuaSpell{
void AddCharIDTarget(int32 char_id, int8 value) {
std::unique_lock lock(char_id_targets_mutex);
char_id_targets.insert({char_id, value});
bool exists = false;
auto range = char_id_targets.equal_range(char_id);
for (auto it = range.first; it != range.second; ++it) {
if (it->second == value) {
exists = true;
break;
}
}
if(!exists)
char_id_targets.insert({char_id, value});
}
bool HasNoCharIDTargets() const {

View File

@ -3105,11 +3105,11 @@ void SpellProcess::AddSelfAndPetToCharTargets(LuaSpell* spell, Spawn* caster, bo
int32 charID = player->GetCharacterID();
if(player->HasPet() && player->GetPet())
spell->char_id_targets.insert(make_pair(charID, player->GetPet()->GetPetType()));
spell->AddCharIDTarget(charID, player->GetPet()->GetPetType());
if(player->HasPet() && player->GetCharmedPet())
spell->char_id_targets.insert(make_pair(charID, player->GetPet()->GetPetType()));
spell->AddCharIDTarget(charID, player->GetPet()->GetPetType());
if(!onlyPet)
spell->char_id_targets.insert(make_pair(charID, 0x00));
spell->AddCharIDTarget(charID, 0x00);
}
void SpellProcess::DeleteActiveSpell(LuaSpell* spell, bool skipRemoveCurrent) {