예제 #1
0
  @Override
  public boolean checkTarget(Character target) {
    // если это контрол
    if (target.getClass() == RegionWarControl.class) {
      // получаем контрол
      RegionWarControl control = (RegionWarControl) target;

      // является враг, если он был захвачен
      return control.getGuildOwner() != null;
    }

    // если это НПС, значит свой
    if (target.isNpc() && !target.isSummon()) return false;

    Player player = null;

    if (target.isSummon()) {
      Character owner = target.getOwner();

      if (owner != null && owner.isPlayer()) player = owner.getPlayer();
    } else if (target.isPlayer()) player = target.getPlayer();

    // если это игрок или питомец игрока, значит враг
    return player != null;
  }
예제 #2
0
  @Override
  public void causingDamage(Skill skill, AttackInfo info, Character attacker) {
    // определяем атакующего игрока
    Player player = null;

    if (attacker.isSummon()) {
      Character owner = attacker.getOwner();

      if (owner != null && owner.isPlayer()) player = owner.getPlayer();
    } else if (attacker.isPlayer()) player = attacker.getPlayer();

    // если игрока нет, урон не засчитываем
    if (player == null) return;

    // получаем гильдию игрока
    Guild guild = player.getGuild();

    // если гильдии нет либо она не из этой битвы, не засчитываем урон
    if (guild == null || !getRegion().isRegister(guild)) return;

    // обрабатываем урон
    super.causingDamage(skill, info, attacker);
  }