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()
{