mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 19:37:02 +00:00
[7655] Fixed choosing AI for pets
This commit is contained in:
parent
db429d2a20
commit
db7da450cd
2 changed files with 13 additions and 13 deletions
|
|
@ -45,25 +45,25 @@ namespace FactorySelector
|
||||||
|
|
||||||
std::string ainame=cinfo->AIName;
|
std::string ainame=cinfo->AIName;
|
||||||
|
|
||||||
|
// select by NPC flags _first_ - otherwise EventAI might be choosen for pets/totems
|
||||||
|
// excplicit check for isControlled() and owner type to allow guardian, mini-pets and pets controlled by NPCs to be scripted by EventAI
|
||||||
|
Unit *owner=NULL;
|
||||||
|
if(creature->isPet() && ((Pet*)creature)->isControlled() && (owner=creature->GetOwner()) && owner->GetTypeId()==TYPEID_PLAYER || creature->isCharmed())
|
||||||
|
ai_factory = ai_registry.GetRegistryItem("PetAI");
|
||||||
|
else if(creature->isTotem())
|
||||||
|
ai_factory = ai_registry.GetRegistryItem("TotemAI");
|
||||||
|
|
||||||
// select by script name
|
// select by script name
|
||||||
if( !ainame.empty())
|
if( !ai_factory && !ainame.empty())
|
||||||
ai_factory = ai_registry.GetRegistryItem( ainame.c_str() );
|
ai_factory = ai_registry.GetRegistryItem( ainame.c_str() );
|
||||||
|
|
||||||
// select by NPC flags
|
if(!ai_factory && creature->isGuard() )
|
||||||
if(!ai_factory)
|
ai_factory = ai_registry.GetRegistryItem("GuardAI");
|
||||||
{
|
|
||||||
if( creature->isGuard() )
|
|
||||||
ai_factory = ai_registry.GetRegistryItem("GuardAI");
|
|
||||||
else if(creature->isPet() || creature->isCharmed())
|
|
||||||
ai_factory = ai_registry.GetRegistryItem("PetAI");
|
|
||||||
else if(creature->isTotem())
|
|
||||||
ai_factory = ai_registry.GetRegistryItem("TotemAI");
|
|
||||||
}
|
|
||||||
|
|
||||||
// select by permit check
|
// select by permit check
|
||||||
if(!ai_factory)
|
if(!ai_factory)
|
||||||
{
|
{
|
||||||
int best_val = -1;
|
int best_val = PERMIT_BASE_NO;
|
||||||
typedef CreatureAIRegistry::RegistryMapType RMT;
|
typedef CreatureAIRegistry::RegistryMapType RMT;
|
||||||
RMT const &l = ai_registry.GetRegisteredItems();
|
RMT const &l = ai_registry.GetRegisteredItems();
|
||||||
for( RMT::const_iterator iter = l.begin(); iter != l.end(); ++iter)
|
for( RMT::const_iterator iter = l.begin(); iter != l.end(); ++iter)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "7654"
|
#define REVISION_NR "7655"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue