• SiteAnalyzer, технический и SEO-анализ сайтов

Не срабатывают трайбы

  • Автор темы Автор темы galol
  • Дата начала Дата начала

galol

Рядовой
Всем здорова!Сборка 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>,не помогает.
Нпс начинает атаковать только если моб первый начал атаку на него.
Сам агр сервис работает норм.На персонажа все мобы норм агрятся.
Если даже в куче нпс создать моба враждующего, то атака будет только между двумя противниками,остальные не агрятся.
Такая проблема везде.НПС защитники стоят и не реагируют на враждующих мобов.
Прикрепил трайбсервис.
Код:
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);
	}
 
во первых в нпс темплейте проверь у мобов какие аишки стоят
или вот так попробуй добвить после
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;
вот этот код добавь >>>>>>>>>>>>>>>>
case IDTIAMAT_XDRAKAN:
switch (creature2.getBaseTribe()) {
case IDTIAMAT_ANCIENT:
return true;
default:
break;
}
break;
case IDTIAMAT_ANCIENT:
switch (creature2.getBaseTribe()) {
case IDTIAMAT_XDRAKAN:
return true;
default:
break;
}
break;
 
Назад
Сверху