Forgot 2 changes for aggro behavior:
aggro.cpp
Mob::CheckWillAggro()
Code:
if
(
//old InZone check taken care of above by !mob->CastToClient()->Connected()
(
( GetINT() <= 75 )
||( mob->IsClient() && mob->CastToClient()->IsSitting() )
||( mob->GetLevelCon(GetLevel()) != CON_GRAY )
)
aggro.cpp
EntityList::GetHatedCount()
Code:
for(iterator.Reset(); iterator.MoreElements(); iterator.Advance()) {
NPC* mob = iterator.GetData();
if(!mob || (mob == exclude)) continue;
if(!mob->IsEngaged()) continue;
if(mob->IsFeared() || mob->IsMezzed()) continue;
if(attacker->GetLevelCon(mob->GetLevel()) == CON_GRAY) continue;
if(!mob->CheckAggro(attacker)) continue;
float AggroRange = mob->GetAggroRange();
// Square it because we will be using DistNoRoot
AggroRange = AggroRange * AggroRange;
if(mob->DistNoRoot(*attacker) > AggroRange) continue;
Count++;
}
aggro.cpp
EntityList::AIYellForHelp()
Code:
//if they are in range, make sure we are not green...
//then jump in if they are our friend
if(attacker->GetLevelCon(mob->GetLevel()) != CON_GRAY)
{
bool useprimfaction = false;
if(mob->GetPrimaryFaction() == sender->CastToNPC()->GetPrimaryFaction())
{
const NPCFactionList *cf = database.GetNPCFactionEntry(mob->GetNPCFactionID());
if(cf){
if(cf->assistprimaryfaction != 0)
useprimfaction = true;
}
}