|
@@ -33,14 +33,13 @@ import com.l2jserver.gameserver.model.entity.clanhall.SiegableHall;
|
|
|
|
|
|
/**
|
|
|
* This class ...
|
|
|
- *
|
|
|
* @version $Revision: 1.7.2.3.2.6 $ $Date: 2005/03/27 15:29:30 $
|
|
|
*/
|
|
|
public final class RequestRestartPoint extends L2GameClientPacket
|
|
|
{
|
|
|
private static final String _C__7D_REQUESTRESTARTPOINT = "[C] 7D RequestRestartPoint";
|
|
|
|
|
|
- protected int _requestedPointType;
|
|
|
+ protected int _requestedPointType;
|
|
|
protected boolean _continuation;
|
|
|
|
|
|
@Override
|
|
@@ -53,7 +52,7 @@ public final class RequestRestartPoint extends L2GameClientPacket
|
|
|
{
|
|
|
final L2PcInstance activeChar;
|
|
|
|
|
|
- DeathTask (L2PcInstance _activeChar)
|
|
|
+ DeathTask(L2PcInstance _activeChar)
|
|
|
{
|
|
|
activeChar = _activeChar;
|
|
|
}
|
|
@@ -61,7 +60,7 @@ public final class RequestRestartPoint extends L2GameClientPacket
|
|
|
@Override
|
|
|
public void run()
|
|
|
{
|
|
|
- RequestRestartPoint.this.portPlayer(activeChar);
|
|
|
+ portPlayer(activeChar);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -71,35 +70,37 @@ public final class RequestRestartPoint extends L2GameClientPacket
|
|
|
L2PcInstance activeChar = getClient().getActiveChar();
|
|
|
|
|
|
if (activeChar == null)
|
|
|
+ {
|
|
|
return;
|
|
|
+ }
|
|
|
|
|
|
if (TvTEvent.isStarted() && TvTEvent.isPlayerParticipant(activeChar.getObjectId()))
|
|
|
+ {
|
|
|
return;
|
|
|
-
|
|
|
- //SystemMessage sm2 = SystemMessage.getSystemMessage(SystemMessage.S1_S2);
|
|
|
- //sm2.addString("type:"+requestedPointType);
|
|
|
- //activeChar.sendPacket(sm2);
|
|
|
+ }
|
|
|
|
|
|
if (activeChar.isFakeDeath())
|
|
|
{
|
|
|
activeChar.stopFakeDeath(true);
|
|
|
return;
|
|
|
}
|
|
|
- else if(!activeChar.isDead())
|
|
|
+ else if (!activeChar.isDead())
|
|
|
{
|
|
|
- _log.warning("Living player ["+activeChar.getName()+"] called RestartPointPacket! Ban this player!");
|
|
|
+ _log.warning("Living player [" + activeChar.getName() + "] called RestartPointPacket! Ban this player!");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
Castle castle = CastleManager.getInstance().getCastle(activeChar.getX(), activeChar.getY(), activeChar.getZ());
|
|
|
- if (castle != null && castle.getSiege().getIsInProgress())
|
|
|
+ if ((castle != null) && castle.getSiege().getIsInProgress())
|
|
|
{
|
|
|
- if (activeChar.getClan() != null && castle.getSiege().checkIsAttacker(activeChar.getClan()))
|
|
|
+ if ((activeChar.getClan() != null) && castle.getSiege().checkIsAttacker(activeChar.getClan()))
|
|
|
{
|
|
|
// Schedule respawn delay for attacker
|
|
|
ThreadPoolManager.getInstance().scheduleGeneral(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay());
|
|
|
if (castle.getSiege().getAttackerRespawnDelay() > 0)
|
|
|
- activeChar.sendMessage("You will be re-spawned in " + castle.getSiege().getAttackerRespawnDelay()/1000 + " seconds");
|
|
|
+ {
|
|
|
+ activeChar.sendMessage("You will be re-spawned in " + (castle.getSiege().getAttackerRespawnDelay() / 1000) + " seconds");
|
|
|
+ }
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
@@ -107,7 +108,7 @@ public final class RequestRestartPoint extends L2GameClientPacket
|
|
|
portPlayer(activeChar);
|
|
|
}
|
|
|
|
|
|
- protected final void portPlayer(final L2PcInstance activeChar)
|
|
|
+ protected final void portPlayer(final L2PcInstance activeChar)
|
|
|
{
|
|
|
Location loc = null;
|
|
|
Castle castle = null;
|
|
@@ -128,110 +129,138 @@ public final class RequestRestartPoint extends L2GameClientPacket
|
|
|
switch (_requestedPointType)
|
|
|
{
|
|
|
case 1: // to clanhall
|
|
|
- if (activeChar.getClan() == null || activeChar.getClan().getHideoutId() == 0)
|
|
|
+ {
|
|
|
+ if ((activeChar.getClan() == null) || (activeChar.getClan().getHideoutId() == 0))
|
|
|
{
|
|
|
- _log.warning("Player ["+activeChar.getName()+"] called RestartPointPacket - To Clanhall and he doesn't have Clanhall!");
|
|
|
+ _log.warning("Player [" + activeChar.getName() + "] called RestartPointPacket - To Clanhall and he doesn't have Clanhall!");
|
|
|
return;
|
|
|
}
|
|
|
loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.ClanHall);
|
|
|
|
|
|
- if (ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan())!= null &&
|
|
|
- ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan()).getFunction(ClanHall.FUNC_RESTORE_EXP) != null)
|
|
|
+ if ((ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan()) != null) && (ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan()).getFunction(ClanHall.FUNC_RESTORE_EXP) != null))
|
|
|
{
|
|
|
activeChar.restoreExp(ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan()).getFunction(ClanHall.FUNC_RESTORE_EXP).getLvl());
|
|
|
}
|
|
|
break;
|
|
|
-
|
|
|
+ }
|
|
|
case 2: // to castle
|
|
|
+ {
|
|
|
castle = CastleManager.getInstance().getCastle(activeChar);
|
|
|
|
|
|
- if (castle != null && castle.getSiege().getIsInProgress())
|
|
|
+ if ((castle != null) && castle.getSiege().getIsInProgress())
|
|
|
{
|
|
|
// Siege in progress
|
|
|
if (castle.getSiege().checkIsDefender(activeChar.getClan()))
|
|
|
+ {
|
|
|
loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.Castle);
|
|
|
- // Just in case you lost castle while being dead.. Port to nearest Town.
|
|
|
+ }
|
|
|
else if (castle.getSiege().checkIsAttacker(activeChar.getClan()))
|
|
|
+ {
|
|
|
loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.Town);
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
- _log.warning("Player ["+activeChar.getName()+"] called RestartPointPacket - To Castle and he doesn't have Castle!");
|
|
|
+ _log.warning("Player [" + activeChar.getName() + "] called RestartPointPacket - To Castle and he doesn't have Castle!");
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if (activeChar.getClan() == null || activeChar.getClan().getCastleId() == 0)
|
|
|
+ if ((activeChar.getClan() == null) || (activeChar.getClan().getCastleId() == 0))
|
|
|
+ {
|
|
|
return;
|
|
|
+ }
|
|
|
loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.Castle);
|
|
|
}
|
|
|
- if (CastleManager.getInstance().getCastleByOwner(activeChar.getClan())!= null &&
|
|
|
- CastleManager.getInstance().getCastleByOwner(activeChar.getClan()).getFunction(Castle.FUNC_RESTORE_EXP) != null)
|
|
|
+ if ((CastleManager.getInstance().getCastleByOwner(activeChar.getClan()) != null) && (CastleManager.getInstance().getCastleByOwner(activeChar.getClan()).getFunction(Castle.FUNC_RESTORE_EXP) != null))
|
|
|
{
|
|
|
activeChar.restoreExp(CastleManager.getInstance().getCastleByOwner(activeChar.getClan()).getFunction(Castle.FUNC_RESTORE_EXP).getLvl());
|
|
|
}
|
|
|
break;
|
|
|
-
|
|
|
+ }
|
|
|
case 3: // to fortress
|
|
|
- //fort = FortManager.getInstance().getFort(activeChar);
|
|
|
-
|
|
|
- if ((activeChar.getClan() == null || activeChar.getClan().getFortId() == 0) && !isInDefense)
|
|
|
+ {
|
|
|
+ if (((activeChar.getClan() == null) || (activeChar.getClan().getFortId() == 0)) && !isInDefense)
|
|
|
{
|
|
|
- _log.warning("Player ["+activeChar.getName()+"] called RestartPointPacket - To Fortress and he doesn't have Fortress!");
|
|
|
+ _log.warning("Player [" + activeChar.getName() + "] called RestartPointPacket - To Fortress and he doesn't have Fortress!");
|
|
|
return;
|
|
|
}
|
|
|
loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.Fortress);
|
|
|
- if (FortManager.getInstance().getFortByOwner(activeChar.getClan())!= null &&
|
|
|
- FortManager.getInstance().getFortByOwner(activeChar.getClan()).getFunction(Fort.FUNC_RESTORE_EXP) != null)
|
|
|
+ if ((FortManager.getInstance().getFortByOwner(activeChar.getClan()) != null) && (FortManager.getInstance().getFortByOwner(activeChar.getClan()).getFunction(Fort.FUNC_RESTORE_EXP) != null))
|
|
|
{
|
|
|
activeChar.restoreExp(FortManager.getInstance().getFortByOwner(activeChar.getClan()).getFunction(Fort.FUNC_RESTORE_EXP).getLvl());
|
|
|
}
|
|
|
break;
|
|
|
-
|
|
|
+ }
|
|
|
case 4: // to siege HQ
|
|
|
+ {
|
|
|
L2SiegeClan siegeClan = null;
|
|
|
castle = CastleManager.getInstance().getCastle(activeChar);
|
|
|
fort = FortManager.getInstance().getFort(activeChar);
|
|
|
hall = CHSiegeManager.getInstance().getNearbyClanHall(activeChar);
|
|
|
L2SiegeFlagInstance flag = TerritoryWarManager.getInstance().getFlagForClan(activeChar.getClan());
|
|
|
|
|
|
- if (castle != null && castle.getSiege().getIsInProgress())
|
|
|
+ if ((castle != null) && castle.getSiege().getIsInProgress())
|
|
|
+ {
|
|
|
siegeClan = castle.getSiege().getAttackerClan(activeChar.getClan());
|
|
|
- else if (fort != null && fort.getSiege().getIsInProgress())
|
|
|
+ }
|
|
|
+ else if ((fort != null) && fort.getSiege().getIsInProgress())
|
|
|
+ {
|
|
|
siegeClan = fort.getSiege().getAttackerClan(activeChar.getClan());
|
|
|
- else if (hall != null && hall.isInSiege())
|
|
|
+ }
|
|
|
+ else if ((hall != null) && hall.isInSiege())
|
|
|
+ {
|
|
|
siegeClan = hall.getSiege().getAttackerClan(activeChar.getClan());
|
|
|
- if ((siegeClan == null || siegeClan.getFlag().isEmpty()) && flag == null)
|
|
|
+ }
|
|
|
+ if (((siegeClan == null) || siegeClan.getFlag().isEmpty()) && (flag == null))
|
|
|
{
|
|
|
// Check if clan hall has inner spawns loc
|
|
|
- if(hall != null && (loc = hall.getSiege().getInnerSpawnLoc(activeChar)) != null)
|
|
|
+ if ((hall != null) && ((loc = hall.getSiege().getInnerSpawnLoc(activeChar)) != null))
|
|
|
+ {
|
|
|
break;
|
|
|
+ }
|
|
|
|
|
|
- _log.warning("Player ["+activeChar.getName()+"] called RestartPointPacket - To Siege HQ and he doesn't have Siege HQ!");
|
|
|
+ _log.warning("Player [" + activeChar.getName() + "] called RestartPointPacket - To Siege HQ and he doesn't have Siege HQ!");
|
|
|
return;
|
|
|
}
|
|
|
loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.SiegeFlag);
|
|
|
break;
|
|
|
-
|
|
|
+ }
|
|
|
case 5: // Fixed or Player is a festival participant
|
|
|
+ {
|
|
|
if (!activeChar.isGM() && !activeChar.isFestivalParticipant())
|
|
|
{
|
|
|
- _log.warning("Player ["+activeChar.getName()+"] called RestartPointPacket - Fixed and he isn't festival participant!");
|
|
|
+ _log.warning("Player [" + activeChar.getName() + "] called RestartPointPacket - Fixed and he isn't festival participant!");
|
|
|
return;
|
|
|
}
|
|
|
- instanceId = activeChar.getInstanceId();
|
|
|
- loc = new Location(activeChar.getX(), activeChar.getY(), activeChar.getZ()); // spawn them where they died
|
|
|
+ if (activeChar.isGM())
|
|
|
+ {
|
|
|
+ activeChar.doRevive(100.00);
|
|
|
+ }
|
|
|
+ else // Festival Participant
|
|
|
+ {
|
|
|
+ loc = new Location(activeChar);
|
|
|
+ }
|
|
|
break;
|
|
|
+ }
|
|
|
case 6: // TODO: agathion ress
|
|
|
+ {
|
|
|
break;
|
|
|
+ }
|
|
|
case 27: // to jail
|
|
|
- if (!activeChar.isInJail()) return;
|
|
|
+ {
|
|
|
+ if (!activeChar.isInJail())
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
loc = new Location(-114356, -249645, -2984);
|
|
|
break;
|
|
|
-
|
|
|
+ }
|
|
|
default:
|
|
|
+ {
|
|
|
loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.Town);
|
|
|
break;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Teleport and revive
|