diff --git a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index f938e2671a..7556af343a 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -487,4 +487,8 @@ public abstract class AbstractOlympiadGame protected abstract void healPlayers(); protected abstract void untransformPlayers(); + + protected abstract void makePlayersInvul(); + + protected abstract void removePlayersInvul(); } diff --git a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 79c9a61e1f..2108adfcb2 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -797,4 +797,30 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame player2.stopTransformation(true); } } + + @Override + public final void makePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(true); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(true); + } + } + + @Override + public final void removePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(false); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(false); + } + } } diff --git a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java index f2425871a3..06c89cb134 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java @@ -485,7 +485,7 @@ public final class OlympiadGameTask implements Runnable try { - _stadium.updateZoneStatusForCharactersInside(); + _game.cleanEffects(); } catch (Exception e) { @@ -494,7 +494,16 @@ public final class OlympiadGameTask implements Runnable try { - _game.cleanEffects(); + _game.makePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + + try + { + _stadium.updateZoneStatusForCharactersInside(); } catch (Exception e) { @@ -507,6 +516,15 @@ public final class OlympiadGameTask implements Runnable */ private void cleanupGame() { + try + { + _game.removePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + try { _game.playersStatusBack(); diff --git a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index f938e2671a..7556af343a 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -487,4 +487,8 @@ public abstract class AbstractOlympiadGame protected abstract void healPlayers(); protected abstract void untransformPlayers(); + + protected abstract void makePlayersInvul(); + + protected abstract void removePlayersInvul(); } diff --git a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 79c9a61e1f..2108adfcb2 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -797,4 +797,30 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame player2.stopTransformation(true); } } + + @Override + public final void makePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(true); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(true); + } + } + + @Override + public final void removePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(false); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(false); + } + } } diff --git a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java index f2425871a3..06c89cb134 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java @@ -485,7 +485,7 @@ public final class OlympiadGameTask implements Runnable try { - _stadium.updateZoneStatusForCharactersInside(); + _game.cleanEffects(); } catch (Exception e) { @@ -494,7 +494,16 @@ public final class OlympiadGameTask implements Runnable try { - _game.cleanEffects(); + _game.makePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + + try + { + _stadium.updateZoneStatusForCharactersInside(); } catch (Exception e) { @@ -507,6 +516,15 @@ public final class OlympiadGameTask implements Runnable */ private void cleanupGame() { + try + { + _game.removePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + try { _game.playersStatusBack(); diff --git a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index f938e2671a..7556af343a 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -487,4 +487,8 @@ public abstract class AbstractOlympiadGame protected abstract void healPlayers(); protected abstract void untransformPlayers(); + + protected abstract void makePlayersInvul(); + + protected abstract void removePlayersInvul(); } diff --git a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 79c9a61e1f..2108adfcb2 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -797,4 +797,30 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame player2.stopTransformation(true); } } + + @Override + public final void makePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(true); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(true); + } + } + + @Override + public final void removePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(false); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(false); + } + } } diff --git a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java index f2425871a3..06c89cb134 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java @@ -485,7 +485,7 @@ public final class OlympiadGameTask implements Runnable try { - _stadium.updateZoneStatusForCharactersInside(); + _game.cleanEffects(); } catch (Exception e) { @@ -494,7 +494,16 @@ public final class OlympiadGameTask implements Runnable try { - _game.cleanEffects(); + _game.makePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + + try + { + _stadium.updateZoneStatusForCharactersInside(); } catch (Exception e) { @@ -507,6 +516,15 @@ public final class OlympiadGameTask implements Runnable */ private void cleanupGame() { + try + { + _game.removePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + try { _game.playersStatusBack(); diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index f938e2671a..7556af343a 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -487,4 +487,8 @@ public abstract class AbstractOlympiadGame protected abstract void healPlayers(); protected abstract void untransformPlayers(); + + protected abstract void makePlayersInvul(); + + protected abstract void removePlayersInvul(); } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 79c9a61e1f..2108adfcb2 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -797,4 +797,30 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame player2.stopTransformation(true); } } + + @Override + public final void makePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(true); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(true); + } + } + + @Override + public final void removePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(false); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(false); + } + } } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java index f2425871a3..06c89cb134 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java @@ -485,7 +485,7 @@ public final class OlympiadGameTask implements Runnable try { - _stadium.updateZoneStatusForCharactersInside(); + _game.cleanEffects(); } catch (Exception e) { @@ -494,7 +494,16 @@ public final class OlympiadGameTask implements Runnable try { - _game.cleanEffects(); + _game.makePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + + try + { + _stadium.updateZoneStatusForCharactersInside(); } catch (Exception e) { @@ -507,6 +516,15 @@ public final class OlympiadGameTask implements Runnable */ private void cleanupGame() { + try + { + _game.removePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + try { _game.playersStatusBack(); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index 0d661d4987..2ecfe0c439 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -333,6 +333,9 @@ public abstract class AbstractOlympiadGame player.setCurrentHp(player.getMaxHp()); player.setCurrentMp(player.getMaxMp()); player.getStatus().startHpMpRegeneration(); + + // Add invul state. + player.setIsInvul(true); } catch (Exception e) { @@ -380,6 +383,9 @@ public abstract class AbstractOlympiadGame player.setCurrentMp(player.getMaxMp()); player.getStatus().startHpMpRegeneration(); + // Remove invul state. + player.setIsInvul(false); + if (Config.L2JMOD_DUALBOX_CHECK_MAX_OLYMPIAD_PARTICIPANTS_PER_IP > 0) { AntiFeedManager.getInstance().removePlayer(AntiFeedManager.OLYMPIAD_ID, player); @@ -492,4 +498,8 @@ public abstract class AbstractOlympiadGame protected abstract int[][] getReward(); protected abstract String getWeeklyMatchType(); + + protected abstract void makePlayersInvul(); + + protected abstract void removePlayersInvul(); } \ No newline at end of file diff --git a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 3f9f82e699..1108077b9b 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -807,4 +807,30 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } } } + + @Override + public final void makePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(true); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(true); + } + } + + @Override + public final void removePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(false); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(false); + } + } } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java index c61b8d9e52..a7ba9dbe2b 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java @@ -445,7 +445,7 @@ public final class OlympiadGameTask implements Runnable * Fifth stage: battle is running, returns true if winner found. * @return */ - private final boolean checkBattle() + private boolean checkBattle() { try { @@ -462,7 +462,7 @@ public final class OlympiadGameTask implements Runnable /** * Sixth stage: winner's validations */ - private final void stopGame() + private void stopGame() { try { @@ -473,15 +473,6 @@ public final class OlympiadGameTask implements Runnable _log.log(Level.WARNING, e.getMessage(), e); } - try - { - _zone.updateZoneStatusForCharactersInside(); - } - catch (Exception e) - { - _log.log(Level.WARNING, e.getMessage(), e); - } - try { _game.cleanEffects(); @@ -490,13 +481,40 @@ public final class OlympiadGameTask implements Runnable { _log.log(Level.WARNING, e.getMessage(), e); } + + try + { + _game.makePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + + try + { + _zone.updateZoneStatusForCharactersInside(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } } /** * Seventh stage: game cleanup (port players back, closing doors, etc) */ - private final void cleanupGame() + private void cleanupGame() { + try + { + _game.removePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + try { _game.playersStatusBack(); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTeams.java b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTeams.java index ad6d2b4eb5..4afea2f2f8 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTeams.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTeams.java @@ -1094,4 +1094,42 @@ public class OlympiadGameTeams extends AbstractOlympiadGame return true; } + + @Override + protected void makePlayersInvul() + { + for (Participant participant : _teamOne) + { + if (participant.getPlayer() != null) + { + participant.getPlayer().setIsInvul(true); + } + } + for (Participant participant : _teamTwo) + { + if (participant.getPlayer() != null) + { + participant.getPlayer().setIsInvul(true); + } + } + } + + @Override + protected void removePlayersInvul() + { + for (Participant participant : _teamOne) + { + if (participant.getPlayer() != null) + { + participant.getPlayer().setIsInvul(false); + } + } + for (Participant participant : _teamTwo) + { + if (participant.getPlayer() != null) + { + participant.getPlayer().setIsInvul(false); + } + } + } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index f938e2671a..7556af343a 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -487,4 +487,8 @@ public abstract class AbstractOlympiadGame protected abstract void healPlayers(); protected abstract void untransformPlayers(); + + protected abstract void makePlayersInvul(); + + protected abstract void removePlayersInvul(); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 79c9a61e1f..2108adfcb2 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -797,4 +797,30 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame player2.stopTransformation(true); } } + + @Override + public final void makePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(true); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(true); + } + } + + @Override + public final void removePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(false); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(false); + } + } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java index f2425871a3..06c89cb134 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java @@ -485,7 +485,7 @@ public final class OlympiadGameTask implements Runnable try { - _stadium.updateZoneStatusForCharactersInside(); + _game.cleanEffects(); } catch (Exception e) { @@ -494,7 +494,16 @@ public final class OlympiadGameTask implements Runnable try { - _game.cleanEffects(); + _game.makePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + + try + { + _stadium.updateZoneStatusForCharactersInside(); } catch (Exception e) { @@ -507,6 +516,15 @@ public final class OlympiadGameTask implements Runnable */ private void cleanupGame() { + try + { + _game.removePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + try { _game.playersStatusBack(); diff --git a/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index f938e2671a..7556af343a 100644 --- a/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -487,4 +487,8 @@ public abstract class AbstractOlympiadGame protected abstract void healPlayers(); protected abstract void untransformPlayers(); + + protected abstract void makePlayersInvul(); + + protected abstract void removePlayersInvul(); } diff --git a/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 79c9a61e1f..2108adfcb2 100644 --- a/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -797,4 +797,30 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame player2.stopTransformation(true); } } + + @Override + public final void makePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(true); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(true); + } + } + + @Override + public final void removePlayersInvul() + { + if (_playerOne.getPlayer() != null) + { + _playerOne.getPlayer().setIsInvul(false); + } + if (_playerTwo.getPlayer() != null) + { + _playerTwo.getPlayer().setIsInvul(false); + } + } } diff --git a/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java b/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java index f2425871a3..06c89cb134 100644 --- a/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java +++ b/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameTask.java @@ -485,7 +485,7 @@ public final class OlympiadGameTask implements Runnable try { - _stadium.updateZoneStatusForCharactersInside(); + _game.cleanEffects(); } catch (Exception e) { @@ -494,7 +494,16 @@ public final class OlympiadGameTask implements Runnable try { - _game.cleanEffects(); + _game.makePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + + try + { + _stadium.updateZoneStatusForCharactersInside(); } catch (Exception e) { @@ -507,6 +516,15 @@ public final class OlympiadGameTask implements Runnable */ private void cleanupGame() { + try + { + _game.removePlayersInvul(); + } + catch (Exception e) + { + _log.log(Level.WARNING, e.getMessage(), e); + } + try { _game.playersStatusBack();