mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 18:52:22 +00:00
Merge pull request #361 from KayenEQ/Development
Implemented pet type 5 (petTargetLock)
This commit is contained in:
@@ -1508,6 +1508,9 @@ bool Client::Death(Mob* killerMob, int32 damage, uint16 spell, SkillUseTypes att
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (killerMob && killerMob->IsPet() && killerMob->GetPetType() == petTargetLock && killerMob->GetID() != GetID())
|
||||
killerMob->Kill();
|
||||
}
|
||||
|
||||
entity_list.RemoveFromTargets(this);
|
||||
@@ -2380,6 +2383,9 @@ bool NPC::Death(Mob* killerMob, int32 damage, uint16 spell, SkillUseTypes attack
|
||||
}
|
||||
}
|
||||
|
||||
if (killerMob && killerMob->IsPet() && killerMob->GetPetType() == petTargetLock && killerMob->GetID() != GetID())
|
||||
killerMob->Kill();
|
||||
|
||||
WipeHateList();
|
||||
p_depop = true;
|
||||
if(killerMob && killerMob->GetTarget() == this) //we can kill things without having them targeted
|
||||
|
||||
@@ -9862,6 +9862,9 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app)
|
||||
return;
|
||||
}
|
||||
|
||||
if (mypet->GetPetType() == petTargetLock && (pet->command != PET_HEALTHREPORT && pet->command != PET_GETLOST))
|
||||
return;
|
||||
|
||||
if (mypet->GetPetType() == petAnimation && (pet->command != PET_HEALTHREPORT && pet->command != PET_GETLOST) && !GetAA(aaAnimationEmpathy))
|
||||
return;
|
||||
|
||||
|
||||
+1
-1
@@ -505,7 +505,7 @@ typedef enum {
|
||||
petOther,
|
||||
petCharmed,
|
||||
petNPCFollow,
|
||||
petHatelist //remain active as long something is on the hatelist. Don't listen to any commands
|
||||
petTargetLock //remain active as long something is on the hatelist. Don't listen to any commands
|
||||
} PetType;
|
||||
|
||||
typedef enum {
|
||||
|
||||
@@ -675,6 +675,7 @@ public:
|
||||
bool IsFamiliar() const { return(typeofpet == petFamiliar); }
|
||||
bool IsAnimation() const { return(typeofpet == petAnimation); }
|
||||
bool IsCharmed() const { return(typeofpet == petCharmed); }
|
||||
bool IsTargetLockPet() const { return(typeofpet == petTargetLock); }
|
||||
void SetOwnerID(uint16 NewOwnerID);
|
||||
inline uint16 GetOwnerID() const { return ownerid; }
|
||||
inline virtual bool HasOwner() { if(GetOwnerID()==0){return false;} return( entity_list.GetMob(GetOwnerID()) != 0); }
|
||||
|
||||
@@ -426,6 +426,19 @@ void Mob::MakePoweredPet(uint16 spell_id, const char* pettype, int16 petpower,
|
||||
entity_list.AddNPC(npc, true, true);
|
||||
SetPetID(npc->GetID());
|
||||
// We need to handle PetType 5 (petHatelist), add the current target to the hatelist of the pet
|
||||
|
||||
|
||||
if (record.petcontrol == petTargetLock)
|
||||
{
|
||||
Mob* target = GetTarget();
|
||||
|
||||
if (target){
|
||||
npc->AddToHateList(target, 1);
|
||||
npc->SetSpecialAbility(IMMUNE_AGGRO, 1);
|
||||
}
|
||||
else
|
||||
npc->Kill(); //On live casts spell 892 Unsummon (Kayen - Too limiting to use that for emu since pet can have more than 20k HP)
|
||||
}
|
||||
}
|
||||
/* This is why the pets ghost - pets were being spawned too far away from its npc owner and some
|
||||
into walls or objects (+10), this sometimes creates the "ghost" effect. I changed to +2 (as close as I
|
||||
|
||||
Reference in New Issue
Block a user