Minor Siege improvements.
Contributed by Liamxroy.
This commit is contained in:
parent
1365c7bd5e
commit
8045531015
@ -24,6 +24,7 @@ import java.util.Collection;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ConcurrentSkipListMap;
|
import java.util.concurrent.ConcurrentSkipListMap;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
@ -663,6 +664,7 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
.filter(member -> member.getObjectId() != exclude)
|
.filter(member -> member.getObjectId() != exclude)
|
||||||
.filter(L2ClanMember::isOnline)
|
.filter(L2ClanMember::isOnline)
|
||||||
.map(L2ClanMember::getPlayerInstance)
|
.map(L2ClanMember::getPlayerInstance)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
}
|
}
|
||||||
|
@ -24,11 +24,13 @@ import java.util.Calendar;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
import java.util.concurrent.ScheduledFuture;
|
import java.util.concurrent.ScheduledFuture;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.l2jmobius.Config;
|
import com.l2jmobius.Config;
|
||||||
import com.l2jmobius.commons.database.DatabaseFactory;
|
import com.l2jmobius.commons.database.DatabaseFactory;
|
||||||
@ -545,12 +547,9 @@ public class Siege implements Siegable
|
|||||||
for (L2SiegeClan siegeClans : getDefenderClans())
|
for (L2SiegeClan siegeClans : getDefenderClans())
|
||||||
{
|
{
|
||||||
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
if (clan != null)
|
||||||
{
|
{
|
||||||
if (member != null)
|
clan.getOnlineMembers(0).forEach(message::sendTo);
|
||||||
{
|
|
||||||
member.sendPacket(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -559,12 +558,9 @@ public class Siege implements Siegable
|
|||||||
for (L2SiegeClan siegeClans : getAttackerClans())
|
for (L2SiegeClan siegeClans : getAttackerClans())
|
||||||
{
|
{
|
||||||
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
if (clan != null)
|
||||||
{
|
{
|
||||||
if (member != null)
|
clan.getOnlineMembers(0).forEach(message::sendTo);
|
||||||
{
|
|
||||||
member.sendPacket(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -583,11 +579,6 @@ public class Siege implements Siegable
|
|||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
for (L2PcInstance member : clan.getOnlineMembers(0))
|
||||||
{
|
{
|
||||||
if (member == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clear)
|
if (clear)
|
||||||
{
|
{
|
||||||
member.setSiegeState((byte) 0);
|
member.setSiegeState((byte) 0);
|
||||||
@ -648,11 +639,6 @@ public class Siege implements Siegable
|
|||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
for (L2PcInstance member : clan.getOnlineMembers(0))
|
||||||
{
|
{
|
||||||
if (member == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clear)
|
if (clear)
|
||||||
{
|
{
|
||||||
member.setSiegeState((byte) 0);
|
member.setSiegeState((byte) 0);
|
||||||
@ -820,25 +806,14 @@ public class Siege implements Siegable
|
|||||||
@Override
|
@Override
|
||||||
public List<L2PcInstance> getAttackersInZone()
|
public List<L2PcInstance> getAttackersInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
//@formatter:off
|
||||||
L2Clan clan;
|
return getAttackerClans().stream()
|
||||||
for (L2SiegeClan siegeclan : getAttackerClans())
|
.map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
|
||||||
{
|
.filter(Objects::nonNull)
|
||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
.flatMap(clan -> clan.getOnlineMembers(0).stream())
|
||||||
for (L2PcInstance player : clan.getOnlineMembers(0))
|
.filter(L2PcInstance::isInSiege)
|
||||||
{
|
.collect(Collectors.toList());
|
||||||
if (player == null)
|
//@formatter:on
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -854,29 +829,15 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public List<L2PcInstance> getOwnersInZone()
|
public List<L2PcInstance> getOwnersInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
//@formatter:off
|
||||||
L2Clan clan;
|
return getDefenderClans().stream()
|
||||||
for (L2SiegeClan siegeclan : getDefenderClans())
|
.filter(siegeclan -> siegeclan.getClanId() == _castle.getOwnerId())
|
||||||
{
|
.map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
|
||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
.filter(Objects::nonNull)
|
||||||
if (clan.getId() != getCastle().getOwnerId())
|
.flatMap(clan -> clan.getOnlineMembers(0).stream())
|
||||||
{
|
.filter(L2PcInstance::isInSiege)
|
||||||
continue;
|
.collect(Collectors.toList());
|
||||||
}
|
//@formatter:on
|
||||||
for (L2PcInstance player : clan.getOnlineMembers(0))
|
|
||||||
{
|
|
||||||
if (player == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -884,21 +845,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public List<L2PcInstance> getSpectatorsInZone()
|
public List<L2PcInstance> getSpectatorsInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
return getCastle().getZone().getPlayersInside().stream().filter(p -> !p.isInSiege()).collect(Collectors.toList());
|
||||||
|
|
||||||
for (L2PcInstance player : getCastle().getZone().getPlayersInside())
|
|
||||||
{
|
|
||||||
if (player == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -907,11 +854,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public void killedCT(L2Npc ct)
|
public void killedCT(L2Npc ct)
|
||||||
{
|
{
|
||||||
_controlTowerCount--;
|
_controlTowerCount = Math.max(_controlTowerCount - 1, 0);
|
||||||
if (_controlTowerCount < 0)
|
|
||||||
{
|
|
||||||
_controlTowerCount = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -920,17 +863,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public void killedFlag(L2Npc flag)
|
public void killedFlag(L2Npc flag)
|
||||||
{
|
{
|
||||||
if (flag == null)
|
getAttackerClans().forEach(siegeClan -> siegeClan.removeFlag(flag));
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (L2SiegeClan clan : getAttackerClans())
|
|
||||||
{
|
|
||||||
if (clan.removeFlag(flag))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1537,20 +1470,20 @@ public class Siege implements Siegable
|
|||||||
* Spawn control tower.
|
* Spawn control tower.
|
||||||
*/
|
*/
|
||||||
private void spawnControlTower()
|
private void spawnControlTower()
|
||||||
{
|
|
||||||
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(ts.getId());
|
final L2Spawn spawn = new L2Spawn(ts.getId());
|
||||||
spawn.setLocation(ts.getLocation());
|
spawn.setLocation(ts.getLocation());
|
||||||
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
|
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
|
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
_controlTowerCount = _controlTowers.size();
|
_controlTowerCount = _controlTowers.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1558,10 +1491,10 @@ public class Siege implements Siegable
|
|||||||
* Spawn flame tower.
|
* Spawn flame tower.
|
||||||
*/
|
*/
|
||||||
private void spawnFlameTower()
|
private void spawnFlameTower()
|
||||||
{
|
|
||||||
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(ts.getId());
|
final L2Spawn spawn = new L2Spawn(ts.getId());
|
||||||
spawn.setLocation(ts.getLocation());
|
spawn.setLocation(ts.getLocation());
|
||||||
@ -1570,12 +1503,12 @@ public class Siege implements Siegable
|
|||||||
tower.setZoneList(ts.getZoneList());
|
tower.setZoneList(ts.getZoneList());
|
||||||
_flameTowers.add(tower);
|
_flameTowers.add(tower);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
|
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Spawn siege guard.
|
* Spawn siege guard.
|
||||||
|
@ -24,6 +24,7 @@ import java.util.Collection;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ConcurrentSkipListMap;
|
import java.util.concurrent.ConcurrentSkipListMap;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
@ -664,6 +665,7 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
.filter(member -> member.getObjectId() != exclude)
|
.filter(member -> member.getObjectId() != exclude)
|
||||||
.filter(L2ClanMember::isOnline)
|
.filter(L2ClanMember::isOnline)
|
||||||
.map(L2ClanMember::getPlayerInstance)
|
.map(L2ClanMember::getPlayerInstance)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
}
|
}
|
||||||
|
@ -24,11 +24,13 @@ import java.util.Calendar;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
import java.util.concurrent.ScheduledFuture;
|
import java.util.concurrent.ScheduledFuture;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.l2jmobius.Config;
|
import com.l2jmobius.Config;
|
||||||
import com.l2jmobius.commons.database.DatabaseFactory;
|
import com.l2jmobius.commons.database.DatabaseFactory;
|
||||||
@ -545,12 +547,9 @@ public class Siege implements Siegable
|
|||||||
for (L2SiegeClan siegeClans : getDefenderClans())
|
for (L2SiegeClan siegeClans : getDefenderClans())
|
||||||
{
|
{
|
||||||
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
if (clan != null)
|
||||||
{
|
{
|
||||||
if (member != null)
|
clan.getOnlineMembers(0).forEach(message::sendTo);
|
||||||
{
|
|
||||||
member.sendPacket(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -559,12 +558,9 @@ public class Siege implements Siegable
|
|||||||
for (L2SiegeClan siegeClans : getAttackerClans())
|
for (L2SiegeClan siegeClans : getAttackerClans())
|
||||||
{
|
{
|
||||||
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
if (clan != null)
|
||||||
{
|
{
|
||||||
if (member != null)
|
clan.getOnlineMembers(0).forEach(message::sendTo);
|
||||||
{
|
|
||||||
member.sendPacket(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -583,11 +579,6 @@ public class Siege implements Siegable
|
|||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
for (L2PcInstance member : clan.getOnlineMembers(0))
|
||||||
{
|
{
|
||||||
if (member == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clear)
|
if (clear)
|
||||||
{
|
{
|
||||||
member.setSiegeState((byte) 0);
|
member.setSiegeState((byte) 0);
|
||||||
@ -648,11 +639,6 @@ public class Siege implements Siegable
|
|||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
for (L2PcInstance member : clan.getOnlineMembers(0))
|
||||||
{
|
{
|
||||||
if (member == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clear)
|
if (clear)
|
||||||
{
|
{
|
||||||
member.setSiegeState((byte) 0);
|
member.setSiegeState((byte) 0);
|
||||||
@ -820,25 +806,14 @@ public class Siege implements Siegable
|
|||||||
@Override
|
@Override
|
||||||
public List<L2PcInstance> getAttackersInZone()
|
public List<L2PcInstance> getAttackersInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
//@formatter:off
|
||||||
L2Clan clan;
|
return getAttackerClans().stream()
|
||||||
for (L2SiegeClan siegeclan : getAttackerClans())
|
.map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
|
||||||
{
|
.filter(Objects::nonNull)
|
||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
.flatMap(clan -> clan.getOnlineMembers(0).stream())
|
||||||
for (L2PcInstance player : clan.getOnlineMembers(0))
|
.filter(L2PcInstance::isInSiege)
|
||||||
{
|
.collect(Collectors.toList());
|
||||||
if (player == null)
|
//@formatter:on
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -854,29 +829,15 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public List<L2PcInstance> getOwnersInZone()
|
public List<L2PcInstance> getOwnersInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
//@formatter:off
|
||||||
L2Clan clan;
|
return getDefenderClans().stream()
|
||||||
for (L2SiegeClan siegeclan : getDefenderClans())
|
.filter(siegeclan -> siegeclan.getClanId() == _castle.getOwnerId())
|
||||||
{
|
.map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
|
||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
.filter(Objects::nonNull)
|
||||||
if (clan.getId() != getCastle().getOwnerId())
|
.flatMap(clan -> clan.getOnlineMembers(0).stream())
|
||||||
{
|
.filter(L2PcInstance::isInSiege)
|
||||||
continue;
|
.collect(Collectors.toList());
|
||||||
}
|
//@formatter:on
|
||||||
for (L2PcInstance player : clan.getOnlineMembers(0))
|
|
||||||
{
|
|
||||||
if (player == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -884,21 +845,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public List<L2PcInstance> getSpectatorsInZone()
|
public List<L2PcInstance> getSpectatorsInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
return getCastle().getZone().getPlayersInside().stream().filter(p -> !p.isInSiege()).collect(Collectors.toList());
|
||||||
|
|
||||||
for (L2PcInstance player : getCastle().getZone().getPlayersInside())
|
|
||||||
{
|
|
||||||
if (player == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -907,11 +854,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public void killedCT(L2Npc ct)
|
public void killedCT(L2Npc ct)
|
||||||
{
|
{
|
||||||
_controlTowerCount--;
|
_controlTowerCount = Math.max(_controlTowerCount - 1, 0);
|
||||||
if (_controlTowerCount < 0)
|
|
||||||
{
|
|
||||||
_controlTowerCount = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -920,17 +863,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public void killedFlag(L2Npc flag)
|
public void killedFlag(L2Npc flag)
|
||||||
{
|
{
|
||||||
if (flag == null)
|
getAttackerClans().forEach(siegeClan -> siegeClan.removeFlag(flag));
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (L2SiegeClan clan : getAttackerClans())
|
|
||||||
{
|
|
||||||
if (clan.removeFlag(flag))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1537,20 +1470,20 @@ public class Siege implements Siegable
|
|||||||
* Spawn control tower.
|
* Spawn control tower.
|
||||||
*/
|
*/
|
||||||
private void spawnControlTower()
|
private void spawnControlTower()
|
||||||
{
|
|
||||||
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(ts.getId());
|
final L2Spawn spawn = new L2Spawn(ts.getId());
|
||||||
spawn.setLocation(ts.getLocation());
|
spawn.setLocation(ts.getLocation());
|
||||||
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
|
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
|
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
_controlTowerCount = _controlTowers.size();
|
_controlTowerCount = _controlTowers.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1558,10 +1491,10 @@ public class Siege implements Siegable
|
|||||||
* Spawn flame tower.
|
* Spawn flame tower.
|
||||||
*/
|
*/
|
||||||
private void spawnFlameTower()
|
private void spawnFlameTower()
|
||||||
{
|
|
||||||
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(ts.getId());
|
final L2Spawn spawn = new L2Spawn(ts.getId());
|
||||||
spawn.setLocation(ts.getLocation());
|
spawn.setLocation(ts.getLocation());
|
||||||
@ -1570,12 +1503,12 @@ public class Siege implements Siegable
|
|||||||
tower.setZoneList(ts.getZoneList());
|
tower.setZoneList(ts.getZoneList());
|
||||||
_flameTowers.add(tower);
|
_flameTowers.add(tower);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
|
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Spawn siege guard.
|
* Spawn siege guard.
|
||||||
|
@ -24,6 +24,7 @@ import java.util.Collection;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ConcurrentSkipListMap;
|
import java.util.concurrent.ConcurrentSkipListMap;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
@ -664,6 +665,7 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
.filter(member -> member.getObjectId() != exclude)
|
.filter(member -> member.getObjectId() != exclude)
|
||||||
.filter(L2ClanMember::isOnline)
|
.filter(L2ClanMember::isOnline)
|
||||||
.map(L2ClanMember::getPlayerInstance)
|
.map(L2ClanMember::getPlayerInstance)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
}
|
}
|
||||||
|
@ -24,11 +24,13 @@ import java.util.Calendar;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
import java.util.concurrent.ScheduledFuture;
|
import java.util.concurrent.ScheduledFuture;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.l2jmobius.Config;
|
import com.l2jmobius.Config;
|
||||||
import com.l2jmobius.commons.database.DatabaseFactory;
|
import com.l2jmobius.commons.database.DatabaseFactory;
|
||||||
@ -545,12 +547,9 @@ public class Siege implements Siegable
|
|||||||
for (L2SiegeClan siegeClans : getDefenderClans())
|
for (L2SiegeClan siegeClans : getDefenderClans())
|
||||||
{
|
{
|
||||||
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
if (clan != null)
|
||||||
{
|
{
|
||||||
if (member != null)
|
clan.getOnlineMembers(0).forEach(message::sendTo);
|
||||||
{
|
|
||||||
member.sendPacket(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -559,12 +558,9 @@ public class Siege implements Siegable
|
|||||||
for (L2SiegeClan siegeClans : getAttackerClans())
|
for (L2SiegeClan siegeClans : getAttackerClans())
|
||||||
{
|
{
|
||||||
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
if (clan != null)
|
||||||
{
|
{
|
||||||
if (member != null)
|
clan.getOnlineMembers(0).forEach(message::sendTo);
|
||||||
{
|
|
||||||
member.sendPacket(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -583,11 +579,6 @@ public class Siege implements Siegable
|
|||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
for (L2PcInstance member : clan.getOnlineMembers(0))
|
||||||
{
|
{
|
||||||
if (member == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clear)
|
if (clear)
|
||||||
{
|
{
|
||||||
member.setSiegeState((byte) 0);
|
member.setSiegeState((byte) 0);
|
||||||
@ -648,11 +639,6 @@ public class Siege implements Siegable
|
|||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
for (L2PcInstance member : clan.getOnlineMembers(0))
|
||||||
{
|
{
|
||||||
if (member == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clear)
|
if (clear)
|
||||||
{
|
{
|
||||||
member.setSiegeState((byte) 0);
|
member.setSiegeState((byte) 0);
|
||||||
@ -820,25 +806,14 @@ public class Siege implements Siegable
|
|||||||
@Override
|
@Override
|
||||||
public List<L2PcInstance> getAttackersInZone()
|
public List<L2PcInstance> getAttackersInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
//@formatter:off
|
||||||
L2Clan clan;
|
return getAttackerClans().stream()
|
||||||
for (L2SiegeClan siegeclan : getAttackerClans())
|
.map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
|
||||||
{
|
.filter(Objects::nonNull)
|
||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
.flatMap(clan -> clan.getOnlineMembers(0).stream())
|
||||||
for (L2PcInstance player : clan.getOnlineMembers(0))
|
.filter(L2PcInstance::isInSiege)
|
||||||
{
|
.collect(Collectors.toList());
|
||||||
if (player == null)
|
//@formatter:on
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -854,29 +829,15 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public List<L2PcInstance> getOwnersInZone()
|
public List<L2PcInstance> getOwnersInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
//@formatter:off
|
||||||
L2Clan clan;
|
return getDefenderClans().stream()
|
||||||
for (L2SiegeClan siegeclan : getDefenderClans())
|
.filter(siegeclan -> siegeclan.getClanId() == _castle.getOwnerId())
|
||||||
{
|
.map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
|
||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
.filter(Objects::nonNull)
|
||||||
if (clan.getId() != getCastle().getOwnerId())
|
.flatMap(clan -> clan.getOnlineMembers(0).stream())
|
||||||
{
|
.filter(L2PcInstance::isInSiege)
|
||||||
continue;
|
.collect(Collectors.toList());
|
||||||
}
|
//@formatter:on
|
||||||
for (L2PcInstance player : clan.getOnlineMembers(0))
|
|
||||||
{
|
|
||||||
if (player == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -884,21 +845,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public List<L2PcInstance> getSpectatorsInZone()
|
public List<L2PcInstance> getSpectatorsInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
return getCastle().getZone().getPlayersInside().stream().filter(p -> !p.isInSiege()).collect(Collectors.toList());
|
||||||
|
|
||||||
for (L2PcInstance player : getCastle().getZone().getPlayersInside())
|
|
||||||
{
|
|
||||||
if (player == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -907,11 +854,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public void killedCT(L2Npc ct)
|
public void killedCT(L2Npc ct)
|
||||||
{
|
{
|
||||||
_controlTowerCount--;
|
_controlTowerCount = Math.max(_controlTowerCount - 1, 0);
|
||||||
if (_controlTowerCount < 0)
|
|
||||||
{
|
|
||||||
_controlTowerCount = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -920,17 +863,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public void killedFlag(L2Npc flag)
|
public void killedFlag(L2Npc flag)
|
||||||
{
|
{
|
||||||
if (flag == null)
|
getAttackerClans().forEach(siegeClan -> siegeClan.removeFlag(flag));
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (L2SiegeClan clan : getAttackerClans())
|
|
||||||
{
|
|
||||||
if (clan.removeFlag(flag))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1537,20 +1470,20 @@ public class Siege implements Siegable
|
|||||||
* Spawn control tower.
|
* Spawn control tower.
|
||||||
*/
|
*/
|
||||||
private void spawnControlTower()
|
private void spawnControlTower()
|
||||||
{
|
|
||||||
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(ts.getId());
|
final L2Spawn spawn = new L2Spawn(ts.getId());
|
||||||
spawn.setLocation(ts.getLocation());
|
spawn.setLocation(ts.getLocation());
|
||||||
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
|
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
|
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
_controlTowerCount = _controlTowers.size();
|
_controlTowerCount = _controlTowers.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1558,10 +1491,10 @@ public class Siege implements Siegable
|
|||||||
* Spawn flame tower.
|
* Spawn flame tower.
|
||||||
*/
|
*/
|
||||||
private void spawnFlameTower()
|
private void spawnFlameTower()
|
||||||
{
|
|
||||||
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(ts.getId());
|
final L2Spawn spawn = new L2Spawn(ts.getId());
|
||||||
spawn.setLocation(ts.getLocation());
|
spawn.setLocation(ts.getLocation());
|
||||||
@ -1570,12 +1503,12 @@ public class Siege implements Siegable
|
|||||||
tower.setZoneList(ts.getZoneList());
|
tower.setZoneList(ts.getZoneList());
|
||||||
_flameTowers.add(tower);
|
_flameTowers.add(tower);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
|
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Spawn siege guard.
|
* Spawn siege guard.
|
||||||
|
@ -24,6 +24,7 @@ import java.util.Collection;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ConcurrentSkipListMap;
|
import java.util.concurrent.ConcurrentSkipListMap;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
@ -664,6 +665,7 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
.filter(member -> member.getObjectId() != exclude)
|
.filter(member -> member.getObjectId() != exclude)
|
||||||
.filter(L2ClanMember::isOnline)
|
.filter(L2ClanMember::isOnline)
|
||||||
.map(L2ClanMember::getPlayerInstance)
|
.map(L2ClanMember::getPlayerInstance)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
}
|
}
|
||||||
|
@ -24,11 +24,13 @@ import java.util.Calendar;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
import java.util.concurrent.ScheduledFuture;
|
import java.util.concurrent.ScheduledFuture;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.l2jmobius.Config;
|
import com.l2jmobius.Config;
|
||||||
import com.l2jmobius.commons.database.DatabaseFactory;
|
import com.l2jmobius.commons.database.DatabaseFactory;
|
||||||
@ -545,12 +547,9 @@ public class Siege implements Siegable
|
|||||||
for (L2SiegeClan siegeClans : getDefenderClans())
|
for (L2SiegeClan siegeClans : getDefenderClans())
|
||||||
{
|
{
|
||||||
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
if (clan != null)
|
||||||
{
|
{
|
||||||
if (member != null)
|
clan.getOnlineMembers(0).forEach(message::sendTo);
|
||||||
{
|
|
||||||
member.sendPacket(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -559,12 +558,9 @@ public class Siege implements Siegable
|
|||||||
for (L2SiegeClan siegeClans : getAttackerClans())
|
for (L2SiegeClan siegeClans : getAttackerClans())
|
||||||
{
|
{
|
||||||
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
if (clan != null)
|
||||||
{
|
{
|
||||||
if (member != null)
|
clan.getOnlineMembers(0).forEach(message::sendTo);
|
||||||
{
|
|
||||||
member.sendPacket(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -583,11 +579,6 @@ public class Siege implements Siegable
|
|||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
for (L2PcInstance member : clan.getOnlineMembers(0))
|
||||||
{
|
{
|
||||||
if (member == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clear)
|
if (clear)
|
||||||
{
|
{
|
||||||
member.setSiegeState((byte) 0);
|
member.setSiegeState((byte) 0);
|
||||||
@ -648,11 +639,6 @@ public class Siege implements Siegable
|
|||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
for (L2PcInstance member : clan.getOnlineMembers(0))
|
||||||
{
|
{
|
||||||
if (member == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clear)
|
if (clear)
|
||||||
{
|
{
|
||||||
member.setSiegeState((byte) 0);
|
member.setSiegeState((byte) 0);
|
||||||
@ -820,25 +806,14 @@ public class Siege implements Siegable
|
|||||||
@Override
|
@Override
|
||||||
public List<L2PcInstance> getAttackersInZone()
|
public List<L2PcInstance> getAttackersInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
//@formatter:off
|
||||||
L2Clan clan;
|
return getAttackerClans().stream()
|
||||||
for (L2SiegeClan siegeclan : getAttackerClans())
|
.map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
|
||||||
{
|
.filter(Objects::nonNull)
|
||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
.flatMap(clan -> clan.getOnlineMembers(0).stream())
|
||||||
for (L2PcInstance player : clan.getOnlineMembers(0))
|
.filter(L2PcInstance::isInSiege)
|
||||||
{
|
.collect(Collectors.toList());
|
||||||
if (player == null)
|
//@formatter:on
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -854,29 +829,15 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public List<L2PcInstance> getOwnersInZone()
|
public List<L2PcInstance> getOwnersInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
//@formatter:off
|
||||||
L2Clan clan;
|
return getDefenderClans().stream()
|
||||||
for (L2SiegeClan siegeclan : getDefenderClans())
|
.filter(siegeclan -> siegeclan.getClanId() == _castle.getOwnerId())
|
||||||
{
|
.map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
|
||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
.filter(Objects::nonNull)
|
||||||
if (clan.getId() != getCastle().getOwnerId())
|
.flatMap(clan -> clan.getOnlineMembers(0).stream())
|
||||||
{
|
.filter(L2PcInstance::isInSiege)
|
||||||
continue;
|
.collect(Collectors.toList());
|
||||||
}
|
//@formatter:on
|
||||||
for (L2PcInstance player : clan.getOnlineMembers(0))
|
|
||||||
{
|
|
||||||
if (player == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -884,21 +845,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public List<L2PcInstance> getSpectatorsInZone()
|
public List<L2PcInstance> getSpectatorsInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
return getCastle().getZone().getPlayersInside().stream().filter(p -> !p.isInSiege()).collect(Collectors.toList());
|
||||||
|
|
||||||
for (L2PcInstance player : getCastle().getZone().getPlayersInside())
|
|
||||||
{
|
|
||||||
if (player == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -907,11 +854,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public void killedCT(L2Npc ct)
|
public void killedCT(L2Npc ct)
|
||||||
{
|
{
|
||||||
_controlTowerCount--;
|
_controlTowerCount = Math.max(_controlTowerCount - 1, 0);
|
||||||
if (_controlTowerCount < 0)
|
|
||||||
{
|
|
||||||
_controlTowerCount = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -920,17 +863,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public void killedFlag(L2Npc flag)
|
public void killedFlag(L2Npc flag)
|
||||||
{
|
{
|
||||||
if (flag == null)
|
getAttackerClans().forEach(siegeClan -> siegeClan.removeFlag(flag));
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (L2SiegeClan clan : getAttackerClans())
|
|
||||||
{
|
|
||||||
if (clan.removeFlag(flag))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1537,20 +1470,20 @@ public class Siege implements Siegable
|
|||||||
* Spawn control tower.
|
* Spawn control tower.
|
||||||
*/
|
*/
|
||||||
private void spawnControlTower()
|
private void spawnControlTower()
|
||||||
{
|
|
||||||
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(ts.getId());
|
final L2Spawn spawn = new L2Spawn(ts.getId());
|
||||||
spawn.setLocation(ts.getLocation());
|
spawn.setLocation(ts.getLocation());
|
||||||
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
|
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
|
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
_controlTowerCount = _controlTowers.size();
|
_controlTowerCount = _controlTowers.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1558,10 +1491,10 @@ public class Siege implements Siegable
|
|||||||
* Spawn flame tower.
|
* Spawn flame tower.
|
||||||
*/
|
*/
|
||||||
private void spawnFlameTower()
|
private void spawnFlameTower()
|
||||||
{
|
|
||||||
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(ts.getId());
|
final L2Spawn spawn = new L2Spawn(ts.getId());
|
||||||
spawn.setLocation(ts.getLocation());
|
spawn.setLocation(ts.getLocation());
|
||||||
@ -1570,12 +1503,12 @@ public class Siege implements Siegable
|
|||||||
tower.setZoneList(ts.getZoneList());
|
tower.setZoneList(ts.getZoneList());
|
||||||
_flameTowers.add(tower);
|
_flameTowers.add(tower);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
|
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Spawn siege guard.
|
* Spawn siege guard.
|
||||||
|
@ -24,6 +24,7 @@ import java.util.Collection;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ConcurrentSkipListMap;
|
import java.util.concurrent.ConcurrentSkipListMap;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
@ -664,6 +665,7 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
.filter(member -> member.getObjectId() != exclude)
|
.filter(member -> member.getObjectId() != exclude)
|
||||||
.filter(L2ClanMember::isOnline)
|
.filter(L2ClanMember::isOnline)
|
||||||
.map(L2ClanMember::getPlayerInstance)
|
.map(L2ClanMember::getPlayerInstance)
|
||||||
|
.filter(Objects::nonNull)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
}
|
}
|
||||||
|
@ -24,11 +24,13 @@ import java.util.Calendar;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
import java.util.concurrent.ScheduledFuture;
|
import java.util.concurrent.ScheduledFuture;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.l2jmobius.Config;
|
import com.l2jmobius.Config;
|
||||||
import com.l2jmobius.commons.database.DatabaseFactory;
|
import com.l2jmobius.commons.database.DatabaseFactory;
|
||||||
@ -545,12 +547,9 @@ public class Siege implements Siegable
|
|||||||
for (L2SiegeClan siegeClans : getDefenderClans())
|
for (L2SiegeClan siegeClans : getDefenderClans())
|
||||||
{
|
{
|
||||||
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
if (clan != null)
|
||||||
{
|
{
|
||||||
if (member != null)
|
clan.getOnlineMembers(0).forEach(message::sendTo);
|
||||||
{
|
|
||||||
member.sendPacket(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -559,12 +558,9 @@ public class Siege implements Siegable
|
|||||||
for (L2SiegeClan siegeClans : getAttackerClans())
|
for (L2SiegeClan siegeClans : getAttackerClans())
|
||||||
{
|
{
|
||||||
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
if (clan != null)
|
||||||
{
|
{
|
||||||
if (member != null)
|
clan.getOnlineMembers(0).forEach(message::sendTo);
|
||||||
{
|
|
||||||
member.sendPacket(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -583,11 +579,6 @@ public class Siege implements Siegable
|
|||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
for (L2PcInstance member : clan.getOnlineMembers(0))
|
||||||
{
|
{
|
||||||
if (member == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clear)
|
if (clear)
|
||||||
{
|
{
|
||||||
member.setSiegeState((byte) 0);
|
member.setSiegeState((byte) 0);
|
||||||
@ -648,11 +639,6 @@ public class Siege implements Siegable
|
|||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
||||||
for (L2PcInstance member : clan.getOnlineMembers(0))
|
for (L2PcInstance member : clan.getOnlineMembers(0))
|
||||||
{
|
{
|
||||||
if (member == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clear)
|
if (clear)
|
||||||
{
|
{
|
||||||
member.setSiegeState((byte) 0);
|
member.setSiegeState((byte) 0);
|
||||||
@ -820,25 +806,14 @@ public class Siege implements Siegable
|
|||||||
@Override
|
@Override
|
||||||
public List<L2PcInstance> getAttackersInZone()
|
public List<L2PcInstance> getAttackersInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
//@formatter:off
|
||||||
L2Clan clan;
|
return getAttackerClans().stream()
|
||||||
for (L2SiegeClan siegeclan : getAttackerClans())
|
.map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
|
||||||
{
|
.filter(Objects::nonNull)
|
||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
.flatMap(clan -> clan.getOnlineMembers(0).stream())
|
||||||
for (L2PcInstance player : clan.getOnlineMembers(0))
|
.filter(L2PcInstance::isInSiege)
|
||||||
{
|
.collect(Collectors.toList());
|
||||||
if (player == null)
|
//@formatter:on
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -854,29 +829,15 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public List<L2PcInstance> getOwnersInZone()
|
public List<L2PcInstance> getOwnersInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
//@formatter:off
|
||||||
L2Clan clan;
|
return getDefenderClans().stream()
|
||||||
for (L2SiegeClan siegeclan : getDefenderClans())
|
.filter(siegeclan -> siegeclan.getClanId() == _castle.getOwnerId())
|
||||||
{
|
.map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
|
||||||
clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
|
.filter(Objects::nonNull)
|
||||||
if (clan.getId() != getCastle().getOwnerId())
|
.flatMap(clan -> clan.getOnlineMembers(0).stream())
|
||||||
{
|
.filter(L2PcInstance::isInSiege)
|
||||||
continue;
|
.collect(Collectors.toList());
|
||||||
}
|
//@formatter:on
|
||||||
for (L2PcInstance player : clan.getOnlineMembers(0))
|
|
||||||
{
|
|
||||||
if (player == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -884,21 +845,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public List<L2PcInstance> getSpectatorsInZone()
|
public List<L2PcInstance> getSpectatorsInZone()
|
||||||
{
|
{
|
||||||
final List<L2PcInstance> players = new ArrayList<>();
|
return getCastle().getZone().getPlayersInside().stream().filter(p -> !p.isInSiege()).collect(Collectors.toList());
|
||||||
|
|
||||||
for (L2PcInstance player : getCastle().getZone().getPlayersInside())
|
|
||||||
{
|
|
||||||
if (player == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!player.isInSiege())
|
|
||||||
{
|
|
||||||
players.add(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -907,11 +854,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public void killedCT(L2Npc ct)
|
public void killedCT(L2Npc ct)
|
||||||
{
|
{
|
||||||
_controlTowerCount--;
|
_controlTowerCount = Math.max(_controlTowerCount - 1, 0);
|
||||||
if (_controlTowerCount < 0)
|
|
||||||
{
|
|
||||||
_controlTowerCount = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -920,17 +863,7 @@ public class Siege implements Siegable
|
|||||||
*/
|
*/
|
||||||
public void killedFlag(L2Npc flag)
|
public void killedFlag(L2Npc flag)
|
||||||
{
|
{
|
||||||
if (flag == null)
|
getAttackerClans().forEach(siegeClan -> siegeClan.removeFlag(flag));
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (L2SiegeClan clan : getAttackerClans())
|
|
||||||
{
|
|
||||||
if (clan.removeFlag(flag))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1537,20 +1470,20 @@ public class Siege implements Siegable
|
|||||||
* Spawn control tower.
|
* Spawn control tower.
|
||||||
*/
|
*/
|
||||||
private void spawnControlTower()
|
private void spawnControlTower()
|
||||||
{
|
|
||||||
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(ts.getId());
|
final L2Spawn spawn = new L2Spawn(ts.getId());
|
||||||
spawn.setLocation(ts.getLocation());
|
spawn.setLocation(ts.getLocation());
|
||||||
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
|
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
|
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
_controlTowerCount = _controlTowers.size();
|
_controlTowerCount = _controlTowers.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1558,10 +1491,10 @@ public class Siege implements Siegable
|
|||||||
* Spawn flame tower.
|
* Spawn flame tower.
|
||||||
*/
|
*/
|
||||||
private void spawnFlameTower()
|
private void spawnFlameTower()
|
||||||
{
|
|
||||||
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
|
||||||
{
|
{
|
||||||
final L2Spawn spawn = new L2Spawn(ts.getId());
|
final L2Spawn spawn = new L2Spawn(ts.getId());
|
||||||
spawn.setLocation(ts.getLocation());
|
spawn.setLocation(ts.getLocation());
|
||||||
@ -1570,12 +1503,12 @@ public class Siege implements Siegable
|
|||||||
tower.setZoneList(ts.getZoneList());
|
tower.setZoneList(ts.getZoneList());
|
||||||
_flameTowers.add(tower);
|
_flameTowers.add(tower);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
|
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Spawn siege guard.
|
* Spawn siege guard.
|
||||||
|
Loading…
Reference in New Issue
Block a user