mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 01:11:29 +00:00
Merge pull request #361 from KayenEQ/Development
Implemented pet type 5 (petTargetLock)
This commit is contained in:
commit
ff8a19b1cb
50
utils/sql/git/optional/2015_02_15_UpdatePetTypes.sql
Normal file
50
utils/sql/git/optional/2015_02_15_UpdatePetTypes.sql
Normal file
@ -0,0 +1,50 @@
|
||||
-- Updates live pets who should be type (5) - Pet locks onto target until dead.
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "WizSwarmSword99Rk3";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "WizSwarmSword99Rk2";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "WizSwarmSword99Rk1";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "WizSwarmSword94Rk3";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "WizSwarmSword94Rk2";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "WizSwarmSword94Rk1";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "WizSwarmSword89Rk3";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "WizSwarmSword89Rk2";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "WizSwarmSword89Rk1";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "wizard_sword_84_Rk3";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "wizard_sword_84_Rk2";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "wizard_sword_84_Rk1";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "wizard_sword_79_Rk3";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "wizard_sword_79_Rk2";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "wizard_sword_79_Rk1";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "wizard_sword_74_";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "wizard_sword_67_";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "SumSword";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "SUMHammer4";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "SUMHammer3";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "SUMHammer2";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "SUMHammer1";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "SumHammer";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "Burnout";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "SumSword";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "SumHammer";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_67_";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_73_";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_73_Rk1";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_73_Rk2";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_73_Rk3";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_78_Rk1";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_78_Rk2";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_78_Rk3";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_83_Rk1";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_83_Rk2";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_83_Rk3";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "wizard_sword_84_Rk1";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "wizard_sword_84_Rk2";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "wizard_sword_84_Rk3";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_88_Rk1";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_88_Rk2";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_88_Rk3";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_94_Rk1";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_94_Rk2";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_94_Rk3";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_99_Rk1";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_99_Rk2";
|
||||
UPDATE pets SET petcontrol = 5 WHERE type LIKE "cleric_hammer_99_Rk3";
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user