return;
}
// Если атакуется замок, принадлежащий NPC, и только 1 атакующий - закончить осаду
if(getDefenderClans().isEmpty() && getAttackerClans().size() == 1)
{
SiegeClan sc_newowner = getAttackerClan(getSiegeUnit().getOwner());
removeSiegeClan(sc_newowner, SiegeClanType.ATTACKER);
addSiegeClan(sc_newowner, SiegeClanType.OWNER);
endSiege();
return;
}
int allyId = ClanTable.getInstance().getClan(getSiegeUnit().getOwnerId()).getAllyId();
// Если атакуется замок, принадлежащий NPC, и все атакующие в одном альянсе - закончить осаду
if(allyId != 0 && getDefenderClans().isEmpty())
{
boolean allinsamealliance = true;
for(SiegeClan sc : getAttackerClans().values())
{
if(sc != null && sc.getClan().getAllyId() != allyId)
{
allinsamealliance = false;
}
}
if(allinsamealliance)
{
SiegeClan sc_newowner = getAttackerClan(getSiegeUnit().getOwner());
removeSiegeClan(sc_newowner, SiegeClanType.ATTACKER);
addSiegeClan(sc_newowner, SiegeClanType.OWNER);
endSiege();
return;
}
}
// Поменять местами атакующих и защитников
for(SiegeClan sc : getDefenderClans().values())
{
if(sc != null)
{
removeSiegeClan(sc, SiegeClanType.DEFENDER);
addSiegeClan(sc, SiegeClanType.ATTACKER);
}
}
SiegeClan sc_newowner = getAttackerClan(getSiegeUnit().getOwner());
removeSiegeClan(sc_newowner, SiegeClanType.ATTACKER);
addSiegeClan(sc_newowner, SiegeClanType.OWNER);
_isMidVictory = true;
clearSiegeClans();
updateSiegeClans();