Skip to content

Commit b7052e9

Browse files
authored
Merge pull request #8 from swgemu/featureAi-factionAggro
[fixed] Issue with Ai adding defenders - Thanks Miz
2 parents 5e363f0 + 925239c commit b7052e9

1 file changed

Lines changed: 16 additions & 7 deletions

File tree

MMOCoreORB/src/server/zone/objects/creature/ai/AiAgentImplementation.cpp

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1198,11 +1198,16 @@ void AiAgentImplementation::leash() {
11981198
}
11991199

12001200
void AiAgentImplementation::setDefender(SceneObject* defender) {
1201+
if (defender == nullptr)
1202+
return;
1203+
12011204
CreatureObjectImplementation::setDefender(defender);
12021205

12031206
if (isRetreating())
12041207
homeLocation.setReached(true);
12051208

1209+
setFollowObject(defender);
1210+
setFollowState(AiAgent::FOLLOWING);
12061211
activateRecovery();
12071212
}
12081213

@@ -1212,14 +1217,18 @@ void AiAgentImplementation::queueDizzyFallEvent() {
12121217
}
12131218

12141219
void AiAgentImplementation::addDefender(SceneObject* defender) {
1215-
if ((defenderList.size() == 0 || getFollowObject().get() == nullptr) && defender != nullptr) {
1216-
setFollowObject(defender);
1217-
setFollowState(AiAgent::FOLLOWING);
1220+
if (defender == nullptr) {
1221+
return;
1222+
}
1223+
1224+
CreatureObjectImplementation::addDefender(defender);
12181225

1219-
if (defender->isTangibleObject() && threatMap != nullptr)
1220-
threatMap->addAggro(defender->asTangibleObject(), 1);
1226+
if (defender->isTangibleObject() && threatMap != nullptr) {
1227+
threatMap->addAggro(defender->asTangibleObject(), 1);
1228+
}
12211229

1222-
CreatureObjectImplementation::addDefender(defender);
1230+
if (defender->isCreatureObject()) {
1231+
notifyPackMobs(defender->asCreatureObject());
12231232
}
12241233
}
12251234

@@ -3128,7 +3137,7 @@ bool AiAgentImplementation::isAttackableBy(CreatureObject* object) {
31283137
if (targetFaction == getFaction())
31293138
return false;
31303139

3131-
if (targetFaction == 0 || (object->getFactionStatus() == FactionStatus::ONLEAVE))
3140+
if (targetFaction == 0 || (object->isPlayerCreature() && object->getFactionStatus() == FactionStatus::ONLEAVE))
31323141
return false;
31333142
}
31343143

0 commit comments

Comments
 (0)