@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; }
@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); }