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