Всем здорова!Сборка 4.9 aion lighting. Проблема в том,что враждующие между собой мобы не агрятся.
Сборка аион 4.6
На примере Форт Тиамат.В начале данжа НПС должны агриться на мобов и защищать игроков,а они просто стоят.
<tribe name="IDTIAMAT_XDRAKAN" base="MONSTER">
<aggro>PC PC_DARK IDTIAMAT_ANCIENT</aggro>
<support>IDTIAMAT_XDRAKAN</support>
</tribe>
<tribe name="IDTIAMAT_ANCIENT" base="USEALL">
<aggro>IDTIAMAT_XDRAKAN</aggro>
</tribe>
Это мобы -IDTIAMAT_XDRAKAN
Это защитники - IDTIAMAT_ANCIENT
Подставлял <hostile>,не помогает.
Нпс начинает атаковать только если моб первый начал атаку на него.
Сам агр сервис работает норм.На персонажа все мобы норм агрятся.
Если даже в куче нпс создать моба враждующего, то атака будет только между двумя противниками,остальные не агрятся.
Такая проблема везде.НПС защитники стоят и не реагируют на враждующих мобов.
Прикрепил трайбсервис.
Сборка аион 4.6
На примере Форт Тиамат.В начале данжа НПС должны агриться на мобов и защищать игроков,а они просто стоят.
<tribe name="IDTIAMAT_XDRAKAN" base="MONSTER">
<aggro>PC PC_DARK IDTIAMAT_ANCIENT</aggro>
<support>IDTIAMAT_XDRAKAN</support>
</tribe>
<tribe name="IDTIAMAT_ANCIENT" base="USEALL">
<aggro>IDTIAMAT_XDRAKAN</aggro>
</tribe>
Это мобы -IDTIAMAT_XDRAKAN
Это защитники - IDTIAMAT_ANCIENT
Подставлял <hostile>,не помогает.
Нпс начинает атаковать только если моб первый начал атаку на него.
Сам агр сервис работает норм.На персонажа все мобы норм агрятся.
Если даже в куче нпс создать моба враждующего, то атака будет только между двумя противниками,остальные не агрятся.
Такая проблема везде.НПС защитники стоят и не реагируют на враждующих мобов.
Прикрепил трайбсервис.
Код:
public class TribeRelationService {
public static boolean isAggressive(Creature creature1, Creature creature2) {
switch (creature1.getBaseTribe()) {
case GUARD_DARK:
switch (creature2.getBaseTribe()) {
case PC:
case GUARD:
case PROTECTGUARD_LIGHT:
case GENERAL:
case GUARD_DRAGON:
return true;
default:
break;
}
break;
case PROTECTGUARD_DARK:
switch (creature2.getBaseTribe()) {
case PC:
case GUARD:
case PROTECTGUARD_LIGHT:
case GENERAL:
case GUARD_DRAGON:
return true;
default:
break;
}
break;
case GUARD:
switch (creature2.getBaseTribe()) {
case PC_DARK:
case GUARD_DARK:
case PROTECTGUARD_DARK:
case GENERAL_DARK:
case GUARD_DRAGON:
return true;
default:
break;
}
break;
case PROTECTGUARD_LIGHT:
switch (creature2.getBaseTribe()) {
case PC_DARK:
case GUARD_DARK:
case PROTECTGUARD_DARK:
case GENERAL_DARK:
case GUARD_DRAGON:
return true;
default:
break;
}
break;
case GUARD_DRAGON:
switch (creature2.getBaseTribe()) {
case PC_DARK:
case PC:
case GUARD:
case GUARD_DARK:
case GENERAL_DARK:
case GENERAL:
case PROTECTGUARD_DARK:
case PROTECTGUARD_LIGHT:
return true;
default:
break;
}
break;
default:
break;
}
return DataManager.TRIBE_RELATIONS_DATA.isAggressiveRelation(creature1.getTribe(), creature2.getTribe());
}
public static boolean isFriend(Creature creature1, Creature creature2) {
if (creature1.getTribe() == creature2.getTribe()) // OR BASE ????
return true;
switch (creature1.getBaseTribe()) {
case USEALL:
case FIELD_OBJECT_ALL:
return true;
case GENERAL_DARK:
switch (creature2.getBaseTribe()) {
case PC_DARK:
case GUARD_DARK:
return true;
}
break;
case GENERAL:
switch (creature2.getBaseTribe()) {
case PC:
case GUARD:
return true;
}
break;
case FIELD_OBJECT_LIGHT:
switch (creature2.getBaseTribe()) {
case PC:
return true;
}
case FIELD_OBJECT_DARK:
switch (creature2.getBaseTribe()) {
case PC_DARK:
return true;
}
break;
}
return DataManager.TRIBE_RELATIONS_DATA.isFriendlyRelation(creature1.getTribe(), creature2.getTribe());
}
public static boolean isSupport(Creature creature1, Creature creature2) {
switch (creature1.getBaseTribe()) {
case GUARD_DARK:
switch (creature2.getBaseTribe()) {
case PC_DARK:
return true;
}
break;
case GUARD:
switch (creature2.getBaseTribe()) {
case PC:
return true;
}
break;
}
return DataManager.TRIBE_RELATIONS_DATA.isSupportRelation(creature1.getTribe(), creature2.getTribe());
}
public static boolean isNone(Creature creature1, Creature creature2) {
if (DataManager.TRIBE_RELATIONS_DATA.isAggressiveRelation(creature1.getTribe(), creature2.getTribe())
|| creature1 instanceof Npc && checkSiegeRelation((Npc) creature1, creature2)
|| DataManager.TRIBE_RELATIONS_DATA.isHostileRelation(creature1.getTribe(), creature2.getTribe())
|| DataManager.TRIBE_RELATIONS_DATA.isNeutralRelation(creature1.getTribe(), creature2.getTribe())) {
return false;
}
switch (creature1.getBaseTribe()) {
case GENERAL_DRAGON:
return true;
case GENERAL:
case FIELD_OBJECT_LIGHT:
switch (creature2.getBaseTribe()) {
case PC_DARK:
return true;
}
break;
case GENERAL_DARK:
case FIELD_OBJECT_DARK:
switch (creature2.getBaseTribe()) {
case PC:
return true;
}
break;
}
return DataManager.TRIBE_RELATIONS_DATA.isNoneRelation(creature1.getTribe(), creature2.getTribe());
}
public static boolean isNeutral(Creature creature1, Creature creature2) {
return DataManager.TRIBE_RELATIONS_DATA.isNeutralRelation(creature1.getTribe(), creature2.getTribe());
}
public static boolean isHostile(Creature creature1, Creature creature2) {
if (creature1 instanceof Npc && checkSiegeRelation((Npc) creature1, creature2)) {
return true;
}
switch (creature1.getBaseTribe()) {
case MONSTER:
switch (creature2.getBaseTribe()) {
case PC_DARK:
case PC:
return true;
}
break;
}
return DataManager.TRIBE_RELATIONS_DATA.isHostileRelation(creature1.getTribe(), creature2.getTribe());
}
public static boolean checkSiegeRelation(Npc npc, Creature creature) {
return npc.getObjectTemplate().getAbyssNpcType() != AbyssNpcType.ARTIFACT
&& npc.getObjectTemplate().getAbyssNpcType() != AbyssNpcType.NONE
&& ((npc.getBaseTribe() == TribeClass.GENERAL && creature.getTribe() == TribeClass.PC_DARK)
|| (npc.getBaseTribe() == TribeClass.GENERAL_DARK && creature.getTribe() == TribeClass.PC)
|| npc.getBaseTribe() == TribeClass.GENERAL_DRAGON);
}
