mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-17 03:08:26 +00:00
Updated swarm pet AI to be consistent with live.
*OLD AI: Swarm pet would lock on to target until target died, then depop as soon as target died. *NEW AI: Swarm pet will attack cast on target, NOT perma locked it can change targets if attacked by something else that generate more hate. When target dies swarm pet will follow owner, if owner is attacked by something else the swarm pet will attack it (until duration timer despawns the pet). Updated perl quest function: MakeTempPet(Tspell_id, name=nullptr, duration=0, target=nullptr, sticktarg=0) Implemented perl quest function: Mob::TypesTempPet(npctypesid, name=nullptr, duration=0, follow=0, target=nullptr, sticktarg=0) Note: 'sticktarg' field will cause the swarm pet to use the OLD AI Rule to use OLD AI only - default is disabled. Optional SQL: utils/sql/git/optional/2014_11_15_SwarmPetTargetLock.sql
This commit is contained in:
@@ -3622,6 +3622,42 @@ void EntityList::DestroyTempPets(Mob *owner)
|
||||
}
|
||||
}
|
||||
|
||||
int16 EntityList::CountTempPets(Mob *owner)
|
||||
{
|
||||
int16 count = 0;
|
||||
auto it = npc_list.begin();
|
||||
while (it != npc_list.end()) {
|
||||
NPC* n = it->second;
|
||||
if (n->GetSwarmInfo()) {
|
||||
if (n->GetSwarmInfo()->owner_id == owner->GetID()) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
++it;
|
||||
}
|
||||
|
||||
owner->SetTempPetCount(count);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
void EntityList::AddTempPetsToHateList(Mob *owner, Mob* other, bool bFrenzy)
|
||||
{
|
||||
if (!other || !owner)
|
||||
return;
|
||||
|
||||
auto it = npc_list.begin();
|
||||
while (it != npc_list.end()) {
|
||||
NPC* n = it->second;
|
||||
if (n->GetSwarmInfo()) {
|
||||
if (n->GetSwarmInfo()->owner_id == owner->GetID()) {
|
||||
n->CastToNPC()->hate_list.Add(other, 0, 0, bFrenzy);
|
||||
}
|
||||
}
|
||||
++it;
|
||||
}
|
||||
}
|
||||
|
||||
bool Entity::CheckCoordLosNoZLeaps(float cur_x, float cur_y, float cur_z,
|
||||
float trg_x, float trg_y, float trg_z, float perwalk)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user