mirror of
https://github.com/EQEmu/Server.git
synced 2026-01-29 15:43:51 +00:00
Fix NPC swarm pets despawning on owner death
Fix NPC swarm pets IsAttackAllowed logic
This commit is contained in:
parent
3d5f99e14a
commit
822a1b1003
@ -513,6 +513,14 @@ bool Mob::IsAttackAllowed(Mob *target, bool isSpellAttack)
|
||||
else if(our_owner && our_owner == target)
|
||||
return false;
|
||||
|
||||
// invalidate for swarm pets for later on if their owner is a corpse
|
||||
if (IsNPC() && CastToNPC()->GetSwarmInfo() && our_owner &&
|
||||
our_owner->IsCorpse() && !our_owner->IsPlayerCorpse())
|
||||
our_owner = nullptr;
|
||||
if (target->IsNPC() && target->CastToNPC()->GetSwarmInfo() && target_owner &&
|
||||
target_owner->IsCorpse() && !target_owner->IsPlayerCorpse())
|
||||
target_owner = nullptr;
|
||||
|
||||
//cannot hurt untargetable mobs
|
||||
bodyType bt = target->GetBodyType();
|
||||
|
||||
|
||||
@ -123,21 +123,12 @@ void NPC::SpellProcess()
|
||||
{
|
||||
Mob::SpellProcess();
|
||||
|
||||
if(GetSwarmInfo()){
|
||||
Mob *swp_o = GetSwarmInfo()->GetOwner();
|
||||
if(!swp_o)
|
||||
{
|
||||
if (GetSwarmInfo()) {
|
||||
if (GetSwarmInfo()->duration->Check(false))
|
||||
Depop();
|
||||
}
|
||||
|
||||
if(GetSwarmInfo()->duration->Check(false))
|
||||
{
|
||||
Depop();
|
||||
}
|
||||
|
||||
Mob *targMob = entity_list.GetMob(GetSwarmInfo()->target);
|
||||
if(GetSwarmInfo()->target != 0)
|
||||
{
|
||||
if (GetSwarmInfo()->target != 0) {
|
||||
if(!targMob || (targMob && targMob->IsCorpse()))
|
||||
Depop();
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user