Don't allow the target lists to build up existing entries so as to overload the DB
This commit is contained in:
parent
65aa15d70e
commit
9274bc9ced
@ -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 {
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user