/** * Method isAttackable. * * @param attacker Creature * @return boolean */ @Override public boolean isAttackable(Creature attacker) { if ((attacker == null) || isOpen()) { return false; } SiegeEvent<?, ?> siegeEvent = getEvent(SiegeEvent.class); switch (getDoorType()) { case WALL: if (!attacker.isSummon() || (siegeEvent == null) || !siegeEvent.containsSiegeSummon((SummonInstance) attacker)) { return false; } break; case DOOR: Player player = attacker.getPlayer(); if (player == null) { return false; } if (siegeEvent != null) { if (siegeEvent.getSiegeClan(SiegeEvent.DEFENDERS, player.getClan()) != null) { return false; } } break; } return !isInvul(); }