From f6f092f89bdb838fa25db95f687bddd709a8215f Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sat, 12 Jun 2021 21:42:42 +0000 Subject: [PATCH] Restore a vitality bar each day and on Wednesday restore to full. Contributed by Sero, CostyKiller. --- .../dist/game/data/events/DailyTasks.xml | 5 +++ .../instancemanager/DailyTaskManager.java | 43 +++++++++++++++++++ .../dist/game/data/events/DailyTasks.xml | 5 +++ .../instancemanager/DailyTaskManager.java | 43 +++++++++++++++++++ 4 files changed, 96 insertions(+) diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_8.0_Homunculus/dist/game/data/events/DailyTasks.xml index d3d1052861..e70b936c3c 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/events/DailyTasks.xml +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/events/DailyTasks.xml @@ -28,12 +28,17 @@ + + + + + diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 7250293cc8..6cdaa7f258 100644 --- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -104,6 +104,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } + @ScheduleTarget + private void onDailyVitalityReset() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int Vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + Vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + Vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + @ScheduleTarget private void onVitalityReset() { diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/events/DailyTasks.xml index d3d1052861..e70b936c3c 100644 --- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/events/DailyTasks.xml +++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/events/DailyTasks.xml @@ -28,12 +28,17 @@ + + + + + diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 7250293cc8..6cdaa7f258 100644 --- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -104,6 +104,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } + @ScheduleTarget + private void onDailyVitalityReset() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int Vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + Vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + Vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + @ScheduleTarget private void onVitalityReset() {