mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +00:00
[7666] For heroic mode creature use AIName from normal mode version in same way as done for ScriptName.
Also at creature templates loading check that AIName/ScriptName not set for heroic mode creature versions.
This commit is contained in:
parent
1ebf1a5ba4
commit
721e005b84
6 changed files with 25 additions and 9 deletions
|
|
@ -1993,12 +1993,17 @@ uint32 Creature::getLevelForTarget( Unit const* target ) const
|
||||||
return level;
|
return level;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Creature::GetScriptName()
|
std::string Creature::GetAIName() const
|
||||||
|
{
|
||||||
|
return ObjectMgr::GetCreatureTemplate(GetEntry())->AIName;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Creature::GetScriptName() const
|
||||||
{
|
{
|
||||||
return objmgr.GetScriptName(GetScriptId());
|
return objmgr.GetScriptName(GetScriptId());
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 Creature::GetScriptId()
|
uint32 Creature::GetScriptId() const
|
||||||
{
|
{
|
||||||
return ObjectMgr::GetCreatureTemplate(GetEntry())->ScriptID;
|
return ObjectMgr::GetCreatureTemplate(GetEntry())->ScriptID;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -532,8 +532,9 @@ class MANGOS_DLL_SPEC Creature : public Unit
|
||||||
CreatureInfo const *GetCreatureInfo() const { return m_creatureInfo; }
|
CreatureInfo const *GetCreatureInfo() const { return m_creatureInfo; }
|
||||||
CreatureDataAddon const* GetCreatureAddon() const;
|
CreatureDataAddon const* GetCreatureAddon() const;
|
||||||
|
|
||||||
std::string GetScriptName();
|
std::string GetAIName() const;
|
||||||
uint32 GetScriptId();
|
std::string GetScriptName() const;
|
||||||
|
uint32 GetScriptId() const;
|
||||||
|
|
||||||
void prepareGossipMenu( Player *pPlayer, uint32 gossipid = 0 );
|
void prepareGossipMenu( Player *pPlayer, uint32 gossipid = 0 );
|
||||||
void sendPreparedGossip( Player* player );
|
void sendPreparedGossip( Player* player );
|
||||||
|
|
|
||||||
|
|
@ -38,12 +38,10 @@ namespace FactorySelector
|
||||||
return scriptedAI;
|
return scriptedAI;
|
||||||
|
|
||||||
CreatureAIRegistry &ai_registry(CreatureAIRepository::Instance());
|
CreatureAIRegistry &ai_registry(CreatureAIRepository::Instance());
|
||||||
assert( creature->GetCreatureInfo() != NULL );
|
|
||||||
CreatureInfo const *cinfo=creature->GetCreatureInfo();
|
|
||||||
|
|
||||||
const CreatureAICreator *ai_factory = NULL;
|
const CreatureAICreator *ai_factory = NULL;
|
||||||
|
|
||||||
std::string ainame=cinfo->AIName;
|
std::string ainame=creature->GetAIName();
|
||||||
|
|
||||||
// select by NPC flags _first_ - otherwise EventAI might be choosen for pets/totems
|
// 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
|
// excplicit check for isControlled() and owner type to allow guardian, mini-pets and pets controlled by NPCs to be scripted by EventAI
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
|
|
||||||
int CreatureEventAI::Permissible(const Creature *creature)
|
int CreatureEventAI::Permissible(const Creature *creature)
|
||||||
{
|
{
|
||||||
if( creature->GetCreatureInfo()->AIName == "EventAI" )
|
if( creature->GetAIName() == "EventAI" )
|
||||||
return PERMIT_BASE_SPECIAL;
|
return PERMIT_BASE_SPECIAL;
|
||||||
return PERMIT_BASE_NO;
|
return PERMIT_BASE_NO;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -528,6 +528,18 @@ void ObjectMgr::LoadCreatureTemplates()
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(heroicInfo->AIName && *heroicInfo->AIName)
|
||||||
|
{
|
||||||
|
sLog.outErrorDb("Heroic mode creature (Entry: %u) has `AIName`, but in any case will used normal mode creature (Entry: %u) AIName.",cInfo->HeroicEntry,i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(heroicInfo->ScriptID)
|
||||||
|
{
|
||||||
|
sLog.outErrorDb("Heroic mode creature (Entry: %u) has `ScriptName`, but in any case will used normal mode creature (Entry: %u) ScriptName.",cInfo->HeroicEntry,i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
hasHeroicEntries.insert(i);
|
hasHeroicEntries.insert(i);
|
||||||
heroicEntries.insert(cInfo->HeroicEntry);
|
heroicEntries.insert(cInfo->HeroicEntry);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "7665"
|
#define REVISION_NR "7666"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue