diff --git a/zone/npc.cpp b/zone/npc.cpp index 2b1af6de9..dbbd3772d 100644 --- a/zone/npc.cpp +++ b/zone/npc.cpp @@ -2632,7 +2632,16 @@ FACTION_VALUE NPC::CheckNPCFactionAlly(int32 other_faction) { return FACTION_INDIFFERENT; } } - return FACTION_INDIFFERENT; + + // I believe that the assumption is, barring no entry in npc_faction_entries + // that two npcs on like faction con ally to each other. This catches cases + // where an npc is on a faction but has no hits (hence no entry in + // npc_faction_entries). + + if (GetPrimaryFaction() == other_faction) + return FACTION_ALLY; + else + return FACTION_INDIFFERENT; } bool NPC::IsFactionListAlly(uint32 other_faction) { @@ -2820,4 +2829,4 @@ void NPC::ModifyStatsOnCharm(bool bRemoved) // the rest of the stats aren't cached, so lets just do these two instead of full CalcBonuses() SetAttackTimer(); CalcAC(); -} \ No newline at end of file +}