и так, теория научного тыка немного помогла:
имеем:
CastleSiegeEvent.class
Скрытый текст
package l2p.gameserver.model.entity.events.impl;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Future;
import l2p.commons.collections.MultiValueSet;
import l2p.commons.dao.JdbcEntityState;
import l2p.commons.threading.RunnableImpl;
import l2p.gameserver.Config;
import l2p.gameserver.ThreadPoolManager;
import l2p.gameserver.dao.CastleDamageZoneDAO;
import l2p.gameserver.dao.CastleDoorUpgradeDAO;
import l2p.gameserver.dao.CastleHiredGuardDAO;
import l2p.gameserver.dao.SiegeClanDAO;
import l2p.gameserver.data.xml.holder.EventHolder;
import l2p.gameserver.instancemanager.ReflectionManager;
import l2p.gameserver.model.Creature;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.Spawner;
import l2p.gameserver.model.Zone.ZoneType;
import l2p.gameserver.model.base.RestartType;
import l2p.gameserver.model.entity.Hero;
import l2p.gameserver.model.entity.Reflection;
import l2p.gameserver.model.entity.SevenSigns;
import l2p.gameserver.model.entity.events.EventType;
import l2p.gameserver.model.entity.events.objects.DoorObject;
import l2p.gameserver.model.entity.events.objects.SiegeClanObject;
import l2p.gameserver.model.entity.events.objects.SiegeToggleNpcObject;
import l2p.gameserver.model.entity.events.objects.SpawnExObject;
import l2p.gameserver.model.entity.events.objects.SpawnSimpleObject;
import l2p.gameserver.model.entity.residence.Castle;
import l2p.gameserver.model.instances.DoorInstance;
import l2p.gameserver.model.instances.residences.SiegeToggleNpcInstance;
import l2p.gameserver.model.items.ItemInstance;
import l2p.gameserver.model.pledge.Clan;
import l2p.gameserver.model.pledge.UnitMember;
import l2p.gameserver.serverpackets.L2GameServerPacket;
import l2p.gameserver.serverpackets.PlaySound;
import l2p.gameserver.serverpackets.SystemMessage2;
import l2p.gameserver.serverpackets.components.SystemMsg;
import l2p.gameserver.templates.item.support.MerchantGuard;
import l2p.gameserver.templates.spawn.SpawnRange;
import l2p.gameserver.utils.Location;
import org.napile.primitive.Containers;
import org.napile.primitive.sets.IntSet;
import org.napile.primitive.sets.impl.TreeIntSet;
public class CastleSiegeEvent extends SiegeEvent<Castle, SiegeClanObject>
{
public static final int MAX_SIEGE_CLANS = 20;
public static final long DAY_IN_MILISECONDS = 86400000L;
public static final String DEFENDERS_WAITING = "defenders_waiting";
public static final String DEFENDERS_REFUSED = "defenders_refused";
public static final String CONTROL_TOWERS = "control_towers";
public static final String FLAME_TOWERS = "flame_towers";
public static final String BOUGHT_ZONES = "bought_zones";
public static final String GUARDS = "guards";
public static final String HIRED_GUARDS = "hired_guards";
private IntSet _nextSiegeTimes = Containers.EMPTY_INT_SET;
private Future<?> _nextSiegeDateSetTask = null;
private boolean _firstStep = false;
public CastleSiegeEvent(MultiValueSet<String> paramMultiValueSet)
{
super(paramMultiValueSet);
}
public void initEvent()
{
super.initEvent();
List localList = getObjects("doors");
addObjects("bought_zones", CastleDamageZoneDAO.getInstance().load(getResidence()));
Iterator localIterator = localList.iterator();
while (localIterator.hasNext())
{
DoorObject localDoorObject = (DoorObject)localIterator.next();
localDoorObject.setUpgradeValue(this, CastleDoorUpgradeDAO.getInstance().load(localDoorObject.getUId()));
localDoorObject.getDoor().addListener(this._doorDeathListener);
}
}
public void processStep(Clan paramClan)
{
Clan localClan = ((Castle)getResidence()).getOwner();
((Castle)getResidence()).changeOwner(paramClan);
Object localObject2;
Object localObject3;
if (localClan != null)
{
SiegeClanObject localSiegeClanObject1 = getSiegeClan("defenders", localClan);
removeObject("defenders", localSiegeClanObject1);
localSiegeClanObject1.setType("attackers");
addObject("attackers", localSiegeClanObject1);
}
else
{
if ((getObjects("attackers").size() == 1) && (Config.CastleQuickSiege))
{
stopEvent();
return;
}
int i = paramClan.getAllyId();
if (i > 0)
{
localList = getObjects("attackers");
int j = 1;
localObject2 = localList.iterator();
while (((Iterator)localObject2).hasNext())
{
localObject3 = (SiegeClanObject)((Iterator)localObject2).next();
if ((localObject3 != null) && (((SiegeClanObject)localObject3).getClan().getAllyId() != i))
j = 0;
}
if ((j != 0) && (Config.CastleQuickSiege))
{
stopEvent();
return;
}
}
}
SiegeClanObject localSiegeClanObject2 = getSiegeClan("attackers", paramClan);
localSiegeClanObject2.deleteFlag();
localSiegeClanObject2.setType("defenders");
removeObject("attackers", localSiegeClanObject2);
List localList = removeObjects("defenders");
Object localObject1 = localList.iterator();
while (((Iterator)localObject1).hasNext())
{
localObject2 = (SiegeClanObject)((Iterator)localObject1).next();
((SiegeClanObject)localObject2).setType("attackers");
}
addObject("defenders", localSiegeClanObject2);
addObjects("attackers", localList);
updateParticles(true, new String[] { "attackers", "defenders" });
teleportPlayers("attackers");
teleportPlayers("spectators");
if (!this._firstStep)
{
this._firstStep = true;
broadcastTo(SystemMsg.THE_TEMPORARY_ALLIANCE_OF_THE_CASTLE_ATTACKER_TEAM_HAS_BEEN_DISSOL
VED, new String[] { "attackers", "defenders" });
if (this._oldOwner != null)
{
spawnAction("hired_guards", false);
damageZoneAction(false);
removeObjects("hired_guards");
removeObjects("bought_zones");
CastleDamageZoneDAO.getInstance().delete(getResidence());
}
else
{
spawnAction("guards", false);
}
localObject1 = getObjects("doors");
localObject2 = ((List)localObject1).iterator();
while (((Iterator)localObject2).hasNext())
{
localObject3 = (DoorObject)((Iterator)localObject2).next();
((DoorObject)localObject3).setWeak(true);
((DoorObject)localObject3).setUpgradeValue(this, 0);
CastleDoorUpgradeDAO.getInstance().delete(((DoorObject)localObject3).getUId());
}
}
spawnAction("doors", true);
despawnSiegeSummons();
}
public void startEvent()
{
this._oldOwner = ((Castle)getResidence()).getOwner();
if (this._oldOwner != null)
{
addObject("defenders", new SiegeClanObject("defenders", this._oldOwner, 0L));
if (((Castle)getResidence()).getSpawnMerchantTickets().size() > 0)
{
localObject = ((Castle)getResidence()).getSpawnMerchantTickets().iterator();
while (((Iterator)localObject).hasNext())
{
ItemInstance localItemInstance = (ItemInstance)((Iterator)localObject).next();
MerchantGuard localMerchantGuard = ((Castle)getResidence()).getMerchantGuard(localItemInstance.getItemId());
addObject("hired_guards", new SpawnSimpleObject(localMerchantGuard.getNpcId(), localItemInstance.getLoc()));
localItemInstance.deleteMe();
}
CastleHiredGuardDAO.getInstance().delete(getResidence());
spawnAction("hired_guards", true);
}
}
Object localObject = getObjects("attackers");
if (((List)localObject).isEmpty())
{
if (this._oldOwner == null)
broadcastToWorld(new SystemMessage2(SystemMsg.THE_SIEGE_OF_S1_HAS_BEEN_CANCELED_DUE_TO_LACK_OF_INTEREST).addResidenceName(getResidence()));
else
broadcastToWorld(new SystemMessage2(SystemMsg.S1S_SIEGE_WAS_CANCELED_BECAUSE_THERE_WERE_NO_CLANS_THAT_PARTICIPAT
ED).addResidenceName(getResidence()));
reCalcNextTime(false);
return;
}
SiegeClanDAO.getInstance().delete(getResidence());
updateParticles(true, new String[] { "attackers", "defenders" });
broadcastTo(SystemMsg.THE_TEMPORARY_ALLIANCE_OF_THE_CASTLE_ATTACKER_TEAM_IS_IN_EFFECT, new String[] { "attackers" });
broadcastTo(new SystemMessage2(SystemMsg.YOU_ARE_PARTICIPATING_IN_THE_SIEGE_OF_S1_THIS_SIEGE_IS_SCHEDULED_F
OR_2_HOURS).addResidenceName(getResidence()), new String[] { "attackers", "defenders" });
super.startEvent();
if (this._oldOwner == null)
initControlTowers();
else
damageZoneAction(true);
}
public void stopEvent(boolean paramBoolean)
{
List localList = getObjects("doors");
Object localObject1 = localList.iterator();
while (((Iterator)localObject1).hasNext())
{
localObject2 = (DoorObject)((Iterator)localObject1).next();
((DoorObject)localObject2).setWeak(false);
}
damageZoneAction(false);
updateParticles(false, new String[] { "attackers", "defenders" });
localObject1 = removeObjects("attackers");
Object localObject2 = ((List)localObject1).iterator();
Object localObject3;
while (((Iterator)localObject2).hasNext())
{
localObject3 = (SiegeClanObject)((Iterator)localObject2).next();
((SiegeClanObject)localObject3).deleteFlag();
}
broadcastToWorld(new SystemMessage2(SystemMsg.THE_SIEGE_OF_S1_IS_FINISHED).addResidenceName(getResidence()));
removeObjects("defenders");
removeObjects("defenders_waiting");
removeObjects("defenders_refused");
localObject2 = ((Castle)getResidence()).getOwner();
if (localObject2 != null)
{
if (this._oldOwner == localObject2)
{
((Castle)getResidence()).setRewardCount(((Castle)getResidence()).getRewardCount() + 1);
((Clan)localObject2).broadcastToOnlineMembers(new L2GameServerPacket[] { new SystemMessage2(SystemMsg.SINCE_YOUR_CLAN_EMERGED_VICTORIOUS_FROM_THE_SIEGE_S1_POINTS_HAVE_B
EEN_ADDED_TO_YOUR_CLANS_REPUTATION_SCORE).addInteger(((Clan)localObject2).incReputation(1500, false, toString())) });
}
else
{
broadcastToWorld(((SystemMessage2)new SystemMessage2(SystemMsg.CLAN_S1_IS_VICTORIOUS_OVER_S2S_CASTLE_SIEGE).addString(((Clan)localObject2).getName())).addResidenceName(getResidence()));
((Clan)localObject2).broadcastToOnlineMembers(new L2GameServerPacket[] { new SystemMessage2(SystemMsg.SINCE_YOUR_CLAN_EMERGED_VICTORIOUS_FROM_THE_SIEGE_S1_POINTS_HAVE_B
EEN_ADDED_TO_YOUR_CLANS_REPUTATION_SCORE).addInteger(((Clan)localObject2).incReputation(3000, false, toString())) });
if (this._oldOwner != null)
this._oldOwner.broadcastToOnlineMembers(new L2GameServerPacket[] { new SystemMessage2(SystemMsg.YOUR_CLAN_HAS_FAILED_TO_DEFEND_THE_CASTLE_S1_POINTS_HAVE_BEEN_DEDU
CTED_FROM_YOU_CLAN_REPUTATION_SCORE_AND_ADDED_TO_YOUR_OPPONENTS).addInteger(-this._oldOwner.incReputation(-3000, false, toString())) });
localObject3 = ((Clan)localObject2).iterator();
while (((Iterator)localObject3).hasNext())
{
UnitMember localUnitMember = (UnitMember)((Iterator)localObject3).next();
Player localPlayer = localUnitMember.getPlayer();
if (localPlayer != null)
{
localPlayer.sendPacket(PlaySound.SIEGE_VICTORY);
if ((localPlayer.isOnline()) && (localPlayer.isNoble()))
Hero.getInstance().addHeroDiary(localPlayer.getObjectId(), 3, ((Castle)getResidence()).getId());
}
}
}
((Castle)getResidence()).getOwnDate().setTimeInMillis(System.currentTimeMillis());
((Castle)getResidence()).getLastSiegeDate().setTimeInMillis(((Castle)getResidence()).getSiegeDate().getTimeInMillis());
localObject3 = (DominionSiegeRunnerEvent)EventHolder.getInstance().getEvent(EventType.MAIN_EVENT, 1);
((DominionSiegeRunnerEvent)localObject3).registerDominion(((Castle)getResidence()).getDominion());
}
else
{
broadcastToWorld(new SystemMessage2(SystemMsg.THE_SIEGE_OF_S1_HAS_ENDED_IN_A_DRAW).addResidenceName(getResidence()));
((Castle)getResidence()).getOwnDate().setTimeInMillis(0L);
((Castle)getResidence()).getLastSiegeDate().setTimeInMillis(0L);
localObject3 = (DominionSiegeRunnerEvent)EventHolder.getInstance().getEvent(EventType.MAIN_EVENT, 1);
((DominionSiegeRunnerEvent)localObject3).unRegisterDominion(((Castle)getResidence()).getDominion());
}
despawnSiegeSummons();
if (this._oldOwner != null)
{
spawnAction("hired_guards", false);
removeObjects("hired_guards");
}
super.stopEvent(paramBoolean);
}
public void reCalcNextTime(boolean paramBoolean)
{
clearActions();
long l = System.currentTimeMillis();
Calendar localCalendar1 = ((Castle)getResidence()).getSiegeDate();
Calendar localCalendar2 = ((Castle)getResidence()).getOwnDate();
if (paramBoolean)
{
if (localCalendar1.getTimeInMillis() > l)
registerActions();
else if (localCalendar1.getTimeInMillis() == 0L)
{
if (l - localCalendar2.getTimeInMillis() > 86400000L)
setNextSiegeTime();
else
generateNextSiegeDates();
}
else if (localCalendar1.getTimeInMillis() <= l)
setNextSiegeTime();
}
else if (((Castle)getResidence()).getOwner() != null)
{
((Castle)getResidence()).getSiegeDate().setTimeInMillis(0L);
((Castle)getResidence()).setJdbcState(JdbcEntityState.UPDATED);
((Castle)getResidence()).update();
generateNextSiegeDates();
}
else
{
setNextSiegeTime();
}
}
public void loadSiegeClans()
{
super.loadSiegeClans();
addObjects("defenders_waiting", SiegeClanDAO.getInstance().load(getResidence(), "defenders_waiting"));
addObjects("defenders_refused", SiegeClanDAO.getInstance().load(getResidence(), "defenders_refused"));
}
public void setRegistrationOver(boolean paramBoolean)
{
if (paramBoolean)
broadcastToWorld(new SystemMessage2(SystemMsg.THE_DEADLINE_TO_REGISTER_FOR_THE_SIEGE_OF_S1_HAS_PASSED).addResidenceName(getResidence()));
super.setRegistrationOver(paramBoolean);
}
public void announce(int paramInt)
{
int i = paramInt / 60;
int j = i / 60;
SystemMessage2 localSystemMessage2;
if (j > 0)
localSystemMessage2 = (SystemMessage2)new SystemMessage2(SystemMsg.S1_HOURS_UNTIL_CASTLE_SIEGE_CONCLUSION).addInteger(j);
else if (i > 0)
localSystemMessage2 = (SystemMessage2)new SystemMessage2(SystemMsg.S1_MINUTES_UNTIL_CASTLE_SIEGE_CONCLUSION).addInteger(i);
else
localSystemMessage2 = (SystemMessage2)new SystemMessage2(SystemMsg.THIS_CASTLE_SIEGE_WILL_END_IN_S1_SECONDS).addInteger(paramInt);
broadcastTo(localSystemMessage2, new String[] { "attackers", "defenders" });
}
private void initControlTowers()
{
List localList = getObjects("guards");
ArrayList localArrayList = new ArrayList();
Object localObject1 = localList.iterator();
Object localObject2;
while (((Iterator)localObject1).hasNext())
{
localObject2 = (SpawnExObject)((Iterator)localObject1).next();
localArrayList.addAll(((SpawnExObject)localObject2).getSpawns());
}
localObject1 = getObjects("control_towers");
Iterator localIterator1 = localArrayList.iterator();
while (localIterator1.hasNext())
{
Spawner localSpawner = (Spawner)localIterator1.next();
Location localLocation = localSpawner.getCurrentSpawnRange().getRandomLoc(ReflectionManager.DEFAULT.getGeoIndex());
localObject2 = null;
double d2 = 0.0D;
Iterator localIterator2 = ((List)localObject1).iterator();
while (localIterator2.hasNext())
{
SiegeToggleNpcObject localSiegeToggleNpcObject = (SiegeToggleNpcObject)localIterator2.next();
SiegeToggleNpcInstance localSiegeToggleNpcInstance = localSiegeToggleNpcObject.getToggleNpc();
double d1 = localSiegeToggleNpcInstance.getDistance(localLocation);
if ((localObject2 == null) || (d1 < d2))
{
localObject2 = localSiegeToggleNpcInstance;
d2 = d1;
}
((SiegeToggleNpcInstance)localObject2).register(localSpawner);
}
}
}
private void damageZoneAction(boolean paramBoolean)
{
zoneAction("bought_zones", paramBoolean);
}
public void generateNextSiegeDates()
{
if (((Castle)getResidence()).getSiegeDate().getTimeInMillis() != 0L)
return;
Calendar localCalendar = (Calendar)Config.CASTLE_VALIDATION_DATE.clone();
localCalendar.set(7, 1);
if (localCalendar.before(Config.CASTLE_VALIDATION_DATE))
localCalendar.add(3, 1);
validateSiegeDate(localCalendar, 2);
this._nextSiegeTimes = new TreeIntSet();
for (int k : Config.CASTLE_SELECT_HOURS)
{
localCalendar.set(11, k);
this._nextSiegeTimes.add((int)(localCalendar.getTimeInMillis() / 1000L));
}
long l = ((Castle)getResidence()).getOwnDate().getTimeInMillis() + 86400000L - System.currentTimeMillis();
this._nextSiegeDateSetTask = ThreadPoolManager.getInstance().schedule(new NextSiegeDateSet(null), l);
}
public void setNextSiegeTime(int paramInt)
{
if ((!this._nextSiegeTimes.contains(paramInt)) || (this._nextSiegeDateSetTask == null))
return;
this._nextSiegeTimes = Containers.EMPTY_INT_SET;
this._nextSiegeDateSetTask.cancel(false);
this._nextSiegeDateSetTask = null;
setNextSiegeTime(paramInt * 1000L);
}
private void setNextSiegeTime()
{
Calendar localCalendar = (Calendar)Config.CASTLE_VALIDATION_DATE.clone();
localCalendar.set(7, this._dayOfWeek);
localCalendar.set(11, this._hourOfDay);
if (localCalendar.before(Config.CASTLE_VALIDATION_DATE))
localCalendar.add(3, 1);
validateSiegeDate(localCalendar, 2);
setNextSiegeTime(localCalendar.getTimeInMillis());
}
private void setNextSiegeTime(long paramLong)
{
broadcastToWorld(new SystemMessage2(SystemMsg.S1_HAS_ANNOUNCED_THE_NEXT_CASTLE_SIEGE_TIME).addResidenceName(getResidence()));
clearActions();
((Castle)getResidence()).getSiegeDate().setTimeInMillis(paramLong);
((Castle)getResidence()).setJdbcState(JdbcEntityState.UPDATED);
((Castle)getResidence()).update();
registerActions();
}
public boolean isAttackersInAlly()
{
return !this._firstStep;
}
public int[] getNextSiegeTimes()
{
return this._nextSiegeTimes.toArray();
}
public boolean canRessurect(Player paramPlayer, Creature paramCreature, boolean paramBoolean)
{
boolean bool1 = paramPlayer.isInZone(Zone.ZoneType.SIEGE);
boolean bool2 = paramCreature.isInZone(Zone.ZoneType.SIEGE);
if ((!bool1) && (!bool2))
return true;
if (!bool2)
return false;
Player localPlayer = paramCreature.getPlayer();
CastleSiegeEvent localCastleSiegeEvent = (CastleSiegeEvent)paramCreature.getEvent(CastleSiegeEvent.class);
if (localCastleSiegeEvent != this)
{
if (paramBoolean)
localPlayer.sendPacket(SystemMsg.IT_IS_NOT_POSSIBLE_TO_RESURRECT_IN_BATTLEFIELDS_WHERE_A_SIEGE_WAR_
IS_TAKING_PLACE);
paramPlayer.sendPacket(paramBoolean ? SystemMsg.IT_IS_NOT_POSSIBLE_TO_RESURRECT_IN_BATTLEFIELDS_WHERE_A_SIEGE_WAR_IS_T
AKING_PLACE : SystemMsg.INVALID_TARGET);
return false;
}
SiegeClanObject localSiegeClanObject = localCastleSiegeEvent.getSiegeClan("attackers", localPlayer.getClan());
if (localSiegeClanObject == null)
localSiegeClanObject = localCastleSiegeEvent.getSiegeClan("defenders", localPlayer.getClan());
if (localSiegeClanObject.getType() == "attackers")
{
if (localSiegeClanObject.getFlag() == null)
{
if (paramBoolean)
localPlayer.sendPacket(SystemMsg.IF_A_BASE_CAMP_DOES_NOT_EXIST_RESURRECTION_IS_NOT_POSSIBLE);
paramPlayer.sendPacket(paramBoolean ? SystemMsg.IF_A_BASE_CAMP_DOES_NOT_EXIST_RESURRECTION_IS_NOT_POSSIBLE : SystemMsg.INVALID_TARGET);
return false;
}
}
else
{
List localList = getObjects("control_towers");
int i = 1;
Iterator localIterator = localList.iterator();
while (localIterator.hasNext())
{
SiegeToggleNpcObject localSiegeToggleNpcObject = (SiegeToggleNpcObject)localIterator.next();
if (!localSiegeToggleNpcObject.isAlive())
i = 0;
}
if (i == 0)
{
if (paramBoolean)
localPlayer.sendPacket(SystemMsg.THE_GUARDIAN_TOWER_HAS_BEEN_DESTROYED_AND_RESURRECTION_IS_NOT_POSS
IBLE);
paramPlayer.sendPacket(paramBoolean ? SystemMsg.THE_GUARDIAN_TOWER_HAS_BEEN_DESTROYED_AND_RESURRECTION_IS_NOT_POSSIBLE : SystemMsg.INVALID_TARGET);
}
}
if (paramBoolean)
return true;
paramPlayer.sendPacket(SystemMsg.INVALID_TARGET);
return false;
}
public Location getRestartLoc(Player paramPlayer, RestartType paramRestartType)
{
Location localLocation = null;
switch (1.$SwitchMap$l2p$gameserver$model$base$RestartType[paramRestartType.ordinal()])
{
case 1:
if (SevenSigns.getInstance().getSealOwner(3) != 2)
break;
localLocation = ((Castle)this._residence).getNotOwnerRestartPoint(paramPlayer);
}
return localLocation;
}
private class NextSiegeDateSet extends RunnableImpl
{
private NextSiegeDateSet()
{
}
public void runImpl()
throws Exception
{
CastleSiegeEvent.this.setNextSiegeTime();
}
}
}
где есть описание canRessurect и описываются те кто атакуют и защищают.
есть описание только нападающие и защищаюшиеся
а также описание "наблюдающих"...
так вот там есть:
Скрытый текст
public boolean canRessurect(Player paramPlayer, Creature paramCreature, boolean paramBoolean)
{
boolean bool1 = paramPlayer.isInZone(Zone.ZoneType.SIEGE);
boolean bool2 = paramCreature.isInZone(Zone.ZoneType.SIEGE);
if ((!bool1) && (!bool2))
return true;
if (!bool2)
return false;
Player localPlayer = paramCreature.getPlayer();
CastleSiegeEvent localCastleSiegeEvent = (CastleSiegeEvent)paramCreature.getEvent(CastleSiegeEvent.class);
if (localCastleSiegeEvent != this)
{
if (paramBoolean)
localPlayer.sendPacket(SystemMsg.IT_IS_NOT_POSSIBLE_TO_RESURRECT_IN_BATTLEFIELDS_WHERE_A_SIEGE_WAR_
IS_TAKING_PLACE);
paramPlayer.sendPacket(paramBoolean ? SystemMsg.IT_IS_NOT_POSSIBLE_TO_RESURRECT_IN_BATTLEFIELDS_WHERE_A_SIEGE_WAR_IS_T
AKING_PLACE : SystemMsg.INVALID_TARGET);
return false;
}
SiegeClanObject localSiegeClanObject = localCastleSiegeEvent.getSiegeClan("attackers", localPlayer.getClan());
if (localSiegeClanObject == null)
localSiegeClanObject = localCastleSiegeEvent.getSiegeClan("defenders", localPlayer.getClan());
if (localSiegeClanObject.getType() == "attackers")
{
if (localSiegeClanObject.getFlag() == null)
{
if (paramBoolean)
localPlayer.sendPacket(SystemMsg.IF_A_BASE_CAMP_DOES_NOT_EXIST_RESURRECTION_IS_NOT_POSSIBLE);
paramPlayer.sendPacket(paramBoolean ? SystemMsg.IF_A_BASE_CAMP_DOES_NOT_EXIST_RESURRECTION_IS_NOT_POSSIBLE : SystemMsg.INVALID_TARGET);
return false;
}
}
else
{
List localList = getObjects("control_towers");
int i = 1;
Iterator localIterator = localList.iterator();
while (localIterator.hasNext())
{
SiegeToggleNpcObject localSiegeToggleNpcObject = (SiegeToggleNpcObject)localIterator.next();
if (!localSiegeToggleNpcObject.isAlive())
i = 0;
}
if (i == 0)
{
if (paramBoolean)
localPlayer.sendPacket(SystemMsg.THE_GUARDIAN_TOWER_HAS_BEEN_DESTROYED_AND_RESURRECTION_IS_NOT_POSS
IBLE);
paramPlayer.sendPacket(paramBoolean ? SystemMsg.THE_GUARDIAN_TOWER_HAS_BEEN_DESTROYED_AND_RESURRECTION_IS_NOT_POSSIBLE : SystemMsg.INVALID_TARGET);
}
}
if (paramBoolean)
return true;
paramPlayer.sendPacket(SystemMsg.INVALID_TARGET);
return false;
}
как сюда внести еще то чтобы в зоне также не работали свитки... так как скил не работает, что верно если судить из описания и подтвержденное на опыте