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

View File

@ -487,6 +487,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */
private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0;
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;
}
public void setStartingDuel()
{
_startingDuel = true;
}
public int getDuelId()
{
return _duelId;
@ -9403,6 +9409,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL;
_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;
return false;
}
if (_isInDuel)
if (_isInDuel || _startingDuel)
{
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
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);
return false;
}
else if (_isInDuel)
else if (_isInDuel || _startingDuel)
{
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false;

View File

@ -84,6 +84,23 @@ public class Duel
_playerB = playerB;
_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.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);

View File

@ -489,6 +489,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */
private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0;
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;
}
public void setStartingDuel()
{
_startingDuel = true;
}
public int getDuelId()
{
return _duelId;
@ -9410,6 +9416,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL;
_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;
return false;
}
if (_isInDuel)
if (_isInDuel || _startingDuel)
{
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
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);
return false;
}
else if (_isInDuel)
else if (_isInDuel || _startingDuel)
{
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false;

View File

@ -84,6 +84,23 @@ public class Duel
_playerB = playerB;
_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.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);

View File

@ -491,6 +491,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */
private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0;
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;
}
public void setStartingDuel()
{
_startingDuel = true;
}
public int getDuelId()
{
return _duelId;
@ -9420,6 +9426,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL;
_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;
return false;
}
if (_isInDuel)
if (_isInDuel || _startingDuel)
{
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
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);
return false;
}
else if (_isInDuel)
else if (_isInDuel || _startingDuel)
{
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false;

View File

@ -84,6 +84,23 @@ public class Duel
_playerB = playerB;
_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.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);

View File

@ -496,6 +496,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */
private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0;
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;
}
public void setStartingDuel()
{
_startingDuel = true;
}
public int getDuelId()
{
return _duelId;
@ -9418,6 +9424,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL;
_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;
return false;
}
if (_isInDuel)
if (_isInDuel || _startingDuel)
{
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
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);
return false;
}
else if (_isInDuel)
else if (_isInDuel || _startingDuel)
{
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false;

View File

@ -84,6 +84,23 @@ public class Duel
_playerB = playerB;
_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.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);

View File

@ -493,6 +493,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */
private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0;
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;
}
public void setStartingDuel()
{
_startingDuel = true;
}
@Override
public int getDuelId()
{
@ -9865,6 +9871,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL;
_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;
return false;
}
if (_isInDuel)
if (_isInDuel || _startingDuel)
{
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
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);
return false;
}
else if (_isInDuel)
if (_isInDuel || _startingDuel)
{
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false;

View File

@ -85,6 +85,23 @@ public class Duel
_playerB = playerB;
_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.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);

View File

@ -486,6 +486,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */
private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0;
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;
}
public void setStartingDuel()
{
_startingDuel = true;
}
public int getDuelId()
{
return _duelId;
@ -9348,6 +9354,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL;
_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;
return false;
}
if (_isInDuel)
if (_isInDuel || _startingDuel)
{
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
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);
return false;
}
else if (_isInDuel)
else if (_isInDuel || _startingDuel)
{
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false;

View File

@ -84,6 +84,23 @@ public class Duel
_playerB = playerB;
_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.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);

View File

@ -486,6 +486,7 @@ public final class L2PcInstance extends L2Playable
/** Duel */
private boolean _isInDuel = false;
private boolean _startingDuel = false;
private int _duelState = Duel.DUELSTATE_NODUEL;
private int _duelId = 0;
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;
}
public void setStartingDuel()
{
_startingDuel = true;
}
public int getDuelId()
{
return _duelId;
@ -9350,6 +9356,7 @@ public final class L2PcInstance extends L2Playable
_duelState = Duel.DUELSTATE_NODUEL;
_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;
return false;
}
if (_isInDuel)
if (_isInDuel || _startingDuel)
{
_noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL;
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);
return false;
}
else if (_isInDuel)
else if (_isInDuel || _startingDuel)
{
sendPacket(SystemMessageId.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false;

View File

@ -84,6 +84,23 @@ public class Duel
_playerB = playerB;
_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.add(Calendar.SECOND, _partyDuel ? PARTY_DUEL_DURATION : PLAYER_DUEL_DURATION);