Prohibit multiple duel requests.

This commit is contained in:
MobiusDev
2018-09-03 19:09:13 +00:00
parent 71f0b628c9
commit 8c8f0f6086
14 changed files with 182 additions and 14 deletions
@@ -487,6 +487,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */ /** Duel */
private boolean _isInDuel = false; private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL; private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0; private int _duelId = 0;
private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL; private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL;
@@ -9365,6 +9366,11 @@ public final class L2PcInstance extends L2Playable
return _isInDuel; return _isInDuel;
} }
public void setStartingDuel()
{
_startingDuel = true;
}
public int getDuelId() public int getDuelId()
{ {
return _duelId; return _duelId;
@@ -9403,6 +9409,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL; _duelState = Duel.DUELSTATE_NODUEL;
_duelId = 0; _duelId = 0;
} }
_startingDuel = false;
} }
/** /**
@@ -9434,7 +9441,7 @@ public final class L2PcInstance extends L2Playable
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50;
return false; return false;
} }
if (_isInDuel) if (_isInDuel || _startingDuel)
{ {
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
return false; return false;
@@ -12155,7 +12162,7 @@ public final class L2PcInstance extends L2Playable
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_CLAN_HALL_SIEGE); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_CLAN_HALL_SIEGE);
return false; return false;
} }
else if (_isInDuel) else if (_isInDuel || _startingDuel)
{ {
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false; return false;
@@ -84,6 +84,23 @@ public class Duel
_playerB = playerB; _playerB = playerB;
_partyDuel = partyDuel == 1; _partyDuel = partyDuel == 1;
if (_partyDuel)
{
for (L2PcInstance member : _playerA.getParty().getMembers())
{
member.setStartingDuel();
}
for (L2PcInstance member : _playerB.getParty().getMembers())
{
member.setStartingDuel();
}
}
else
{
_playerA.setStartingDuel();
_playerB.setStartingDuel();
}
_duelEndTime = Calendar.getInstance(); _duelEndTime = Calendar.getInstance();
_duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION); _duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);
@@ -489,6 +489,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */ /** Duel */
private boolean _isInDuel = false; private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL; private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0; private int _duelId = 0;
private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL; private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL;
@@ -9372,6 +9373,11 @@ public final class L2PcInstance extends L2Playable
return _isInDuel; return _isInDuel;
} }
public void setStartingDuel()
{
_startingDuel = true;
}
public int getDuelId() public int getDuelId()
{ {
return _duelId; return _duelId;
@@ -9410,6 +9416,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL; _duelState = Duel.DUELSTATE_NODUEL;
_duelId = 0; _duelId = 0;
} }
_startingDuel = false;
} }
/** /**
@@ -9441,7 +9448,7 @@ public final class L2PcInstance extends L2Playable
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50;
return false; return false;
} }
if (_isInDuel) if (_isInDuel || _startingDuel)
{ {
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
return false; return false;
@@ -12162,7 +12169,7 @@ public final class L2PcInstance extends L2Playable
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_CLAN_HALL_SIEGE); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_CLAN_HALL_SIEGE);
return false; return false;
} }
else if (_isInDuel) else if (_isInDuel || _startingDuel)
{ {
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false; return false;
@@ -84,6 +84,23 @@ public class Duel
_playerB = playerB; _playerB = playerB;
_partyDuel = partyDuel == 1; _partyDuel = partyDuel == 1;
if (_partyDuel)
{
for (L2PcInstance member : _playerA.getParty().getMembers())
{
member.setStartingDuel();
}
for (L2PcInstance member : _playerB.getParty().getMembers())
{
member.setStartingDuel();
}
}
else
{
_playerA.setStartingDuel();
_playerB.setStartingDuel();
}
_duelEndTime = Calendar.getInstance(); _duelEndTime = Calendar.getInstance();
_duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION); _duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);
@@ -491,6 +491,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */ /** Duel */
private boolean _isInDuel = false; private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL; private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0; private int _duelId = 0;
private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL; private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL;
@@ -9382,6 +9383,11 @@ public final class L2PcInstance extends L2Playable
return _isInDuel; return _isInDuel;
} }
public void setStartingDuel()
{
_startingDuel = true;
}
public int getDuelId() public int getDuelId()
{ {
return _duelId; return _duelId;
@@ -9420,6 +9426,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL; _duelState = Duel.DUELSTATE_NODUEL;
_duelId = 0; _duelId = 0;
} }
_startingDuel = false;
} }
/** /**
@@ -9451,7 +9458,7 @@ public final class L2PcInstance extends L2Playable
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50;
return false; return false;
} }
if (_isInDuel) if (_isInDuel || _startingDuel)
{ {
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
return false; return false;
@@ -12172,7 +12179,7 @@ public final class L2PcInstance extends L2Playable
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_CLAN_HALL_SIEGE); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_CLAN_HALL_SIEGE);
return false; return false;
} }
else if (_isInDuel) else if (_isInDuel || _startingDuel)
{ {
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false; return false;
@@ -84,6 +84,23 @@ public class Duel
_playerB = playerB; _playerB = playerB;
_partyDuel = partyDuel == 1; _partyDuel = partyDuel == 1;
if (_partyDuel)
{
for (L2PcInstance member : _playerA.getParty().getMembers())
{
member.setStartingDuel();
}
for (L2PcInstance member : _playerB.getParty().getMembers())
{
member.setStartingDuel();
}
}
else
{
_playerA.setStartingDuel();
_playerB.setStartingDuel();
}
_duelEndTime = Calendar.getInstance(); _duelEndTime = Calendar.getInstance();
_duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION); _duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);
@@ -496,6 +496,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */ /** Duel */
private boolean _isInDuel = false; private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL; private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0; private int _duelId = 0;
private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL; private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL;
@@ -9380,6 +9381,11 @@ public final class L2PcInstance extends L2Playable
return _isInDuel; return _isInDuel;
} }
public void setStartingDuel()
{
_startingDuel = true;
}
public int getDuelId() public int getDuelId()
{ {
return _duelId; return _duelId;
@@ -9418,6 +9424,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL; _duelState = Duel.DUELSTATE_NODUEL;
_duelId = 0; _duelId = 0;
} }
_startingDuel = false;
} }
/** /**
@@ -9449,7 +9456,7 @@ public final class L2PcInstance extends L2Playable
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50;
return false; return false;
} }
if (_isInDuel) if (_isInDuel || _startingDuel)
{ {
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
return false; return false;
@@ -12156,7 +12163,7 @@ public final class L2PcInstance extends L2Playable
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_CLAN_HALL_SIEGE); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_CLAN_HALL_SIEGE);
return false; return false;
} }
else if (_isInDuel) else if (_isInDuel || _startingDuel)
{ {
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false; return false;
@@ -84,6 +84,23 @@ public class Duel
_playerB = playerB; _playerB = playerB;
_partyDuel = partyDuel == 1; _partyDuel = partyDuel == 1;
if (_partyDuel)
{
for (L2PcInstance member : _playerA.getParty().getMembers())
{
member.setStartingDuel();
}
for (L2PcInstance member : _playerB.getParty().getMembers())
{
member.setStartingDuel();
}
}
else
{
_playerA.setStartingDuel();
_playerB.setStartingDuel();
}
_duelEndTime = Calendar.getInstance(); _duelEndTime = Calendar.getInstance();
_duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION); _duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);
@@ -493,6 +493,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */ /** Duel */
private boolean _isInDuel = false; private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL; private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0; private int _duelId = 0;
private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL; private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL;
@@ -9826,6 +9827,11 @@ public final class L2PcInstance extends L2Playable
return _isInDuel; return _isInDuel;
} }
public void setStartingDuel()
{
_startingDuel = true;
}
@Override @Override
public int getDuelId() public int getDuelId()
{ {
@@ -9865,6 +9871,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL; _duelState = Duel.DUELSTATE_NODUEL;
_duelId = 0; _duelId = 0;
} }
_startingDuel = false;
} }
/** /**
@@ -9896,7 +9903,7 @@ public final class L2PcInstance extends L2Playable
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50;
return false; return false;
} }
if (_isInDuel) if (_isInDuel || _startingDuel)
{ {
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
return false; return false;
@@ -12987,7 +12994,7 @@ public final class L2PcInstance extends L2Playable
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_HIDEOUT_SIEGE); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_HIDEOUT_SIEGE);
return false; return false;
} }
else if (_isInDuel) if (_isInDuel || _startingDuel)
{ {
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false; return false;
@@ -85,6 +85,23 @@ public class Duel
_playerB = playerB; _playerB = playerB;
_partyDuel = partyDuel == 1; _partyDuel = partyDuel == 1;
if (_partyDuel)
{
for (L2PcInstance member : _playerA.getParty().getMembers())
{
member.setStartingDuel();
}
for (L2PcInstance member : _playerB.getParty().getMembers())
{
member.setStartingDuel();
}
}
else
{
_playerA.setStartingDuel();
_playerB.setStartingDuel();
}
_duelEndTime = Calendar.getInstance(); _duelEndTime = Calendar.getInstance();
_duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION); _duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);
@@ -486,6 +486,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */ /** Duel */
private boolean _isInDuel = false; private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL; private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0; private int _duelId = 0;
private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL; private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL;
@@ -9310,6 +9311,11 @@ public final class L2PcInstance extends L2Playable
return _isInDuel; return _isInDuel;
} }
public void setStartingDuel()
{
_startingDuel = true;
}
public int getDuelId() public int getDuelId()
{ {
return _duelId; return _duelId;
@@ -9348,6 +9354,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL; _duelState = Duel.DUELSTATE_NODUEL;
_duelId = 0; _duelId = 0;
} }
_startingDuel = false;
} }
/** /**
@@ -9379,7 +9386,7 @@ public final class L2PcInstance extends L2Playable
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50;
return false; return false;
} }
if (_isInDuel) if (_isInDuel || _startingDuel)
{ {
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
return false; return false;
@@ -12003,7 +12010,7 @@ public final class L2PcInstance extends L2Playable
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_CLAN_HALL_SIEGE); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_CLAN_HALL_SIEGE);
return false; return false;
} }
else if (_isInDuel) else if (_isInDuel || _startingDuel)
{ {
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false; return false;
@@ -84,6 +84,23 @@ public class Duel
_playerB = playerB; _playerB = playerB;
_partyDuel = partyDuel == 1; _partyDuel = partyDuel == 1;
if (_partyDuel)
{
for (L2PcInstance member : _playerA.getParty().getMembers())
{
member.setStartingDuel();
}
for (L2PcInstance member : _playerB.getParty().getMembers())
{
member.setStartingDuel();
}
}
else
{
_playerA.setStartingDuel();
_playerB.setStartingDuel();
}
_duelEndTime = Calendar.getInstance(); _duelEndTime = Calendar.getInstance();
_duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION); _duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);
@@ -486,6 +486,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */ /** Duel */
private boolean _isInDuel = false; private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL; private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0; private int _duelId = 0;
private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL; private SystemMessageId _noDuelReason = SystemMessageId.THERE_IS_NO_OPPONENT_TO_RECEIVE_YOUR_CHALLENGE_FOR_A_DUEL;
@@ -9312,6 +9313,11 @@ public final class L2PcInstance extends L2Playable
return _isInDuel; return _isInDuel;
} }
public void setStartingDuel()
{
_startingDuel = true;
}
public int getDuelId() public int getDuelId()
{ {
return _duelId; return _duelId;
@@ -9350,6 +9356,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL; _duelState = Duel.DUELSTATE_NODUEL;
_duelId = 0; _duelId = 0;
} }
_startingDuel = false;
} }
/** /**
@@ -9381,7 +9388,7 @@ public final class L2PcInstance extends L2Playable
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_S_HP_OR_MP_IS_BELOW_50;
return false; return false;
} }
if (_isInDuel) if (_isInDuel || _startingDuel)
{ {
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
return false; return false;
@@ -12005,7 +12012,7 @@ public final class L2PcInstance extends L2Playable
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_CLAN_HALL_SIEGE); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGE_SCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_CLAN_HALL_SIEGE);
return false; return false;
} }
else if (_isInDuel) else if (_isInDuel || _startingDuel)
{ {
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL); sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false; return false;
@@ -84,6 +84,23 @@ public class Duel
_playerB = playerB; _playerB = playerB;
_partyDuel = partyDuel == 1; _partyDuel = partyDuel == 1;
if (_partyDuel)
{
for (L2PcInstance member : _playerA.getParty().getMembers())
{
member.setStartingDuel();
}
for (L2PcInstance member : _playerB.getParty().getMembers())
{
member.setStartingDuel();
}
}
else
{
_playerA.setStartingDuel();
_playerB.setStartingDuel();
}
_duelEndTime = Calendar.getInstance(); _duelEndTime = Calendar.getInstance();
_duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION); _duelEndTime.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);