[Bug Fix] Clear Ramp when Clearing hate (#3892)

* [Bug Fix] Clear Ramp when Clearing hate

When clearing a client from the hatelist, also clear them from ramp

* Add additional calls missed

* requested changes

* extra tabs
This commit is contained in:
Fryguy
2024-01-07 15:27:12 -05:00
committed by GitHub
parent fc8ace91cb
commit 84b8bdd2b4
6 changed files with 68 additions and 9 deletions
+26 -8
View File
@@ -1491,18 +1491,21 @@ void EntityList::RemoveFromTargets(Mob *mob, bool RemoveFromXTargets)
Mob *m = it->second;
++it;
if (!m)
if (!m) {
continue;
}
if (RemoveFromXTargets && mob) {
if (m->IsClient() && (mob->CheckAggro(m) || mob->IsOnFeignMemory(m)))
if (m->IsClient() && (mob->CheckAggro(m) || mob->IsOnFeignMemory(m))) {
m->CastToClient()->RemoveXTarget(mob, false);
// FadingMemories calls this function passing the client.
else if (mob->IsClient() && (m->CheckAggro(mob) || m->IsOnFeignMemory(mob)))
} else if (mob->IsClient() && (m->CheckAggro(mob) || m->IsOnFeignMemory(mob))) {
mob->CastToClient()->RemoveXTarget(m, false);
}
}
m->RemoveFromHateList(mob);
m->RemoveFromRampageList(mob);
}
}
@@ -1515,20 +1518,24 @@ void EntityList::RemoveFromTargetsFadingMemories(Mob *spell_target, bool RemoveF
continue;
}
if (max_level && mob->GetLevel() > max_level)
if (max_level && mob->GetLevel() > max_level) {
continue;
}
if (mob->GetSpecialAbility(IMMUNE_FADING_MEMORIES))
if (mob->GetSpecialAbility(IMMUNE_FADING_MEMORIES)) {
continue;
}
if (RemoveFromXTargets && spell_target) {
if (mob->IsClient() && (spell_target->CheckAggro(mob) || spell_target->IsOnFeignMemory(mob)))
if (mob->IsClient() && (spell_target->CheckAggro(mob) || spell_target->IsOnFeignMemory(mob))) {
mob->CastToClient()->RemoveXTarget(spell_target, false);
else if (spell_target->IsClient() && (mob->CheckAggro(spell_target) || mob->IsOnFeignMemory(spell_target)))
} else if (spell_target->IsClient() && (mob->CheckAggro(spell_target) || mob->IsOnFeignMemory(spell_target))) {
spell_target->CastToClient()->RemoveXTarget(mob, false);
}
}
mob->RemoveFromHateList(spell_target);
mob->RemoveFromRampageList(spell_target);
}
}
@@ -3188,8 +3195,10 @@ void EntityList::RemoveFromHateLists(Mob *mob, bool settoone)
if (it->second->CheckAggro(mob)) {
if (!settoone) {
it->second->RemoveFromHateList(mob);
if (mob->IsClient())
it->second->RemoveFromRampageList(mob);
if (mob->IsClient()) {
mob->CastToClient()->RemoveXTarget(it->second, false); // gotta do book keeping
}
} else {
it->second->SetHateAmountOnEnt(mob, 1);
}
@@ -3548,8 +3557,11 @@ void EntityList::ClearAggro(Mob* targ)
if (c) {
c->RemoveXTarget(it->second, false);
}
it->second->RemoveFromHateList(targ);
it->second->RemoveFromRampageList(targ, true);
}
if (c && it->second->IsOnFeignMemory(c)) {
it->second->RemoveFromFeignMemory(c); //just in case we feigned
c->RemoveXTarget(it->second, false);
@@ -3573,6 +3585,7 @@ void EntityList::ClearWaterAggro(Mob* targ)
c->RemoveXTarget(it->second, false);
}
it->second->RemoveFromHateList(targ);
it->second->RemoveFromRampageList(targ);
}
if (c && it->second->IsOnFeignMemory(c)) {
it->second->RemoveFromFeignMemory(c); //just in case we feigned
@@ -3618,6 +3631,11 @@ void EntityList::ClearFeignAggro(Mob *targ)
}
it->second->RemoveFromHateList(targ);
if (it->second->GetSpecialAbility(SPECATK_RAMPAGE)) {
it->second->RemoveFromRampageList(targ, true);
}
if (targ->IsClient()) {
if (it->second->GetLevel() >= 35 && zone->random.Roll(60)) {
it->second->AddFeignMemory(targ);