-
-
Save St3eT/2f48b58939fc702d3761 to your computer and use it in GitHub Desktop.
Nevit hourglass
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
### Eclipse Workspace Patch 1.0 | |
#P L2jMilenium_Server | |
Index: java/com/l2jserver/gameserver/taskmanager/tasks/TaskRecom.java | |
=================================================================== | |
--- java/com/l2jserver/gameserver/taskmanager/tasks/TaskRecom.java (revision 26) | |
+++ java/com/l2jserver/gameserver/taskmanager/tasks/TaskRecom.java (working copy) | |
@@ -22,6 +22,8 @@ | |
import java.sql.PreparedStatement; | |
import com.l2jserver.L2DatabaseFactory; | |
+import com.l2jserver.gameserver.model.L2World; | |
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; | |
import com.l2jserver.gameserver.taskmanager.Task; | |
import com.l2jserver.gameserver.taskmanager.TaskManager; | |
import com.l2jserver.gameserver.taskmanager.TaskManager.ExecutedTask; | |
@@ -63,6 +65,16 @@ | |
{ | |
_log.severe(getClass().getSimpleName() + ": Could not reset Recommendations System: " + e); | |
} | |
+ | |
+ // Refresh reco bonus for online players | |
+ for (L2PcInstance player : L2World.getInstance().getPlayers()) | |
+ { | |
+ if (player != null) | |
+ { | |
+ player.stopNevitHourglassTask(); | |
+ player.startNevitHourglassTask(); | |
+ } | |
+ } | |
_log.info("Recommendations System reseted"); | |
} | |
Index: java/com/l2jserver/gameserver/network/serverpackets/ExVoteSystemInfo.java | |
=================================================================== | |
--- java/com/l2jserver/gameserver/network/serverpackets/ExVoteSystemInfo.java (revision 26) | |
+++ java/com/l2jserver/gameserver/network/serverpackets/ExVoteSystemInfo.java (working copy) | |
@@ -19,7 +19,6 @@ | |
package com.l2jserver.gameserver.network.serverpackets; | |
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; | |
-import com.l2jserver.gameserver.model.entity.RecoBonus; | |
/** | |
* ExVoteSystemInfo packet implementation. | |
@@ -37,9 +36,9 @@ | |
{ | |
_recomLeft = player.getRecomLeft(); | |
_recomHave = player.getRecomHave(); | |
- _bonusTime = player.getRecomBonusTime(); | |
- _bonusVal = RecoBonus.getRecoBonus(player); | |
- _bonusType = player.getRecomBonusType(); | |
+ _bonusTime = player.getNevitHourglassTime(); | |
+ _bonusVal = player.getNevitHourglassBonus(); | |
+ _bonusType = player.getNevitHourglassStatus(); | |
} | |
@Override | |
Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java | |
=================================================================== | |
--- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (revision 34) | |
+++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (working copy) | |
@@ -278,6 +278,7 @@ | |
import com.l2jserver.gameserver.network.serverpackets.ExStartScenePlayer; | |
import com.l2jserver.gameserver.network.serverpackets.ExStorageMaxCount; | |
import com.l2jserver.gameserver.network.serverpackets.ExUseSharedGroupItem; | |
+import com.l2jserver.gameserver.network.serverpackets.ExVoteSystemInfo; | |
import com.l2jserver.gameserver.network.serverpackets.FlyToLocation.FlyType; | |
import com.l2jserver.gameserver.network.serverpackets.FriendStatusPacket; | |
import com.l2jserver.gameserver.network.serverpackets.GameGuardQuery; | |
@@ -397,6 +398,25 @@ | |
public static final int REQUEST_TIMEOUT = 15; | |
+ //@formatter:off | |
+ private static final int[][] NEVIT_HOURGLASS_BONUS = | |
+ { | |
+ {25, 50, 50, 50, 50, 50, 50, 50, 50, 50}, | |
+ {16, 33, 50, 50, 50, 50, 50, 50, 50, 50}, | |
+ {12, 25, 37, 50, 50, 50, 50, 50, 50, 50}, | |
+ {10, 20, 30, 40, 50, 50, 50, 50, 50, 50}, | |
+ {8, 16, 25, 33, 41, 50, 50, 50, 50, 50}, | |
+ {7, 14, 21, 28, 35, 42, 50, 50, 50, 50}, | |
+ {6, 12, 18, 25, 31, 37, 43, 50, 50, 50}, | |
+ {5, 11, 16, 22, 27, 33, 38, 44, 50, 50}, | |
+ {5, 10, 15, 20, 25, 30, 35, 40, 45, 50}, | |
+ }; | |
+ //@formatter:on | |
+ | |
+ private static final int NEVIT_HOURGLASS_ACTIVE = 0; | |
+ private static final int NEVIT_HOURGLASS_PAUSED = 1; | |
+ private static final int NEVIT_HOURGLASS_MAINTAIN = 10; | |
+ | |
private final List<IEventListener> _eventListeners = new FastList<IEventListener>().shared(); | |
public class AIAccessor extends L2Character.AIAccessor | |
@@ -571,7 +591,7 @@ | |
/** The number of recommendation that the L2PcInstance can give */ | |
private int _recomLeft; // how many recommendations I can give to others | |
/** Recommendation Bonus task **/ | |
- private ScheduledFuture<?> _recoBonusTask; | |
+ private ScheduledFuture<?> _nevitHourglassTask; | |
/** Recommendation task **/ | |
private ScheduledFuture<?> _recoGiveTask; | |
/** Recommendation Two Hours bonus **/ | |
@@ -5959,7 +5979,7 @@ | |
stopChargeTask(); | |
stopFameTask(); | |
stopVitalityTask(); | |
- stopRecoBonusTask(); | |
+ stopNevitHourglassTask(); | |
stopRecoGiveTask(); | |
} | |
@@ -11581,7 +11601,7 @@ | |
// Recommendations must be saved before task (timer) is canceled | |
try | |
{ | |
- storeRecommendations(); | |
+ storeRecommendations(false); | |
} | |
catch (Exception e) | |
{ | |
@@ -14216,19 +14236,33 @@ | |
{ | |
_log.log(Level.SEVERE, "Could not restore Recommendations for player: " + getObjectId(), e); | |
} | |
+ _log.info("Time left je: " + _time_left); | |
+ _log.log(Level.WARNING, toString() + ": Time Left runtime: ", new RuntimeException()); | |
return _time_left; | |
} | |
/** | |
* Update L2PcInstance Recommendations data. | |
+ * @param cancelRecoTask | |
*/ | |
- public void storeRecommendations() | |
+ public void storeRecommendations(boolean cancelRecoTask) | |
{ | |
long recoTaskEnd = 0; | |
- if (_recoBonusTask != null) | |
+ | |
+ if (_nevitHourglassTask != null) | |
{ | |
- recoTaskEnd = Math.max(0, _recoBonusTask.getDelay(TimeUnit.MILLISECONDS)); | |
+ recoTaskEnd = Math.max(0, _nevitHourglassTask.getDelay(TimeUnit.MILLISECONDS)); | |
+ | |
+ if (cancelRecoTask) | |
+ { | |
+ _nevitHourglassTask.cancel(false); | |
+ _nevitHourglassTask = null; | |
+ } | |
} | |
+ else | |
+ { | |
+ _log.log(Level.WARNING, toString() + ": task je null!", new RuntimeException()); | |
+ } | |
try (Connection con = L2DatabaseFactory.getInstance().getConnection(); | |
PreparedStatement statement = con.prepareStatement("INSERT INTO character_reco_bonus (charId,rec_have,rec_left,time_left) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE rec_have=?, rec_left=?, time_left=?")) | |
@@ -14236,11 +14270,11 @@ | |
statement.setInt(1, getObjectId()); | |
statement.setInt(2, getRecomHave()); | |
statement.setInt(3, getRecomLeft()); | |
- statement.setLong(4, recoTaskEnd); | |
+ statement.setLong(4, 3600000); | |
// Update part | |
statement.setInt(5, getRecomHave()); | |
statement.setInt(6, getRecomLeft()); | |
- statement.setLong(7, recoTaskEnd); | |
+ statement.setLong(7, getStat().hasPausedNevitHourglass() ? loadRecommendations() : recoTaskEnd); | |
statement.execute(); | |
} | |
catch (Exception e) | |
@@ -14251,37 +14285,43 @@ | |
public void checkRecoBonusTask() | |
{ | |
- // Load data | |
- long taskTime = loadRecommendations(); | |
- | |
- if (taskTime > 0) | |
+ // Create bonus task | |
+ if (!startNevitHourglassTask()) | |
{ | |
- // Add 20 recos on first login | |
- if (taskTime == 3600000) | |
- { | |
- setRecomLeft(getRecomLeft() + 20); | |
- } | |
- | |
- // If player have some timeleft, start bonus task | |
- _recoBonusTask = ThreadPoolManager.getInstance().scheduleGeneral(new RecoBonusTaskEnd(this), taskTime); | |
+ storeRecommendations(false); | |
} | |
// Create task to give new recommendations | |
_recoGiveTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new RecoGiveTask(this), 7200000, 3600000); | |
- | |
- // Store new data | |
- storeRecommendations(); | |
} | |
- public void stopRecoBonusTask() | |
+ public boolean startNevitHourglassTask() | |
{ | |
- if (_recoBonusTask != null) | |
+ if (_nevitHourglassTask == null) | |
{ | |
- _recoBonusTask.cancel(false); | |
- _recoBonusTask = null; | |
+ // Load data | |
+ long taskTime = loadRecommendations(); | |
+ | |
+ if (taskTime > 0) | |
+ { | |
+ // If player have some timeleft, start bonus task | |
+ _nevitHourglassTask = ThreadPoolManager.getInstance().scheduleGeneral(new RecoBonusTaskEnd(this), taskTime); | |
+ } | |
+ sendPacket(new ExVoteSystemInfo(this)); | |
+ return true; | |
} | |
+ return false; | |
} | |
+ public void stopNevitHourglassTask() | |
+ { | |
+ if (_nevitHourglassTask != null) | |
+ { | |
+ _nevitHourglassTask.cancel(false); | |
+ _nevitHourglassTask = null; | |
+ } | |
+ } | |
+ | |
public void stopRecoGiveTask() | |
{ | |
if (_recoGiveTask != null) | |
@@ -14301,22 +14341,64 @@ | |
_recoTwoHoursGiven = val; | |
} | |
- public int getRecomBonusTime() | |
+ public int getNevitHourglassTime() | |
{ | |
- if (_recoBonusTask != null) | |
+ if (_nevitHourglassTask != null) | |
{ | |
- return (int) Math.max(0, _recoBonusTask.getDelay(TimeUnit.SECONDS)); | |
+ return (int) Math.max(0, _nevitHourglassTask.getDelay(TimeUnit.SECONDS)); | |
} | |
- | |
return 0; | |
} | |
- public int getRecomBonusType() | |
+ public boolean isNevitHourglassActive() | |
{ | |
- // Maintain = 1 | |
+ return (getNevitHourglassTime() > 0) || getStat().hasPausedNevitHourglass(); | |
+ } | |
+ | |
+ public int getNevitHourglassStatus() | |
+ { | |
+ if (getStat().hasPausedNevitHourglass()) | |
+ { | |
+ return NEVIT_HOURGLASS_PAUSED; | |
+ } | |
+ else if (getNevitHourglassTime() > 0) | |
+ { | |
+ return NEVIT_HOURGLASS_ACTIVE; | |
+ } | |
+ else | |
+ { | |
+ return NEVIT_HOURGLASS_MAINTAIN; | |
+ } | |
+ } | |
+ | |
+ public int getNevitHourglassBonus() | |
+ { | |
+ if (isOnline() && (getRecomHave() != 0) && isNevitHourglassActive()) | |
+ { | |
+ final int lvl = getLevel() / 10; | |
+ final int exp = (Math.min(100, getRecomHave()) - 1) / 10; | |
+ | |
+ return NEVIT_HOURGLASS_BONUS[lvl][exp]; | |
+ } | |
return 0; | |
} | |
+ public double getNevitHourglassMultiplier() | |
+ { | |
+ double multiplier = 1.0; | |
+ | |
+ if (isOnline() && (getRecomHave() != 0) && isNevitHourglassActive()) | |
+ { | |
+ final double bonus = getNevitHourglassBonus(); | |
+ | |
+ if (bonus > 0) | |
+ { | |
+ multiplier += (bonus / 100); | |
+ } | |
+ } | |
+ return multiplier; | |
+ } | |
+ | |
public void setLastPetitionGmName(String gmName) | |
{ | |
_lastPetitionGmName = gmName; | |
Index: java/com/l2jserver/gameserver/model/actor/stat/PcStat.java | |
=================================================================== | |
--- java/com/l2jserver/gameserver/model/actor/stat/PcStat.java (revision 29) | |
+++ java/com/l2jserver/gameserver/model/actor/stat/PcStat.java (working copy) | |
@@ -29,7 +29,7 @@ | |
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; | |
import com.l2jserver.gameserver.model.actor.instance.L2PetInstance; | |
import com.l2jserver.gameserver.model.actor.transform.TransformTemplate; | |
-import com.l2jserver.gameserver.model.entity.RecoBonus; | |
+import com.l2jserver.gameserver.model.effects.L2EffectType; | |
import com.l2jserver.gameserver.model.events.EventDispatcher; | |
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLevelChanged; | |
import com.l2jserver.gameserver.model.quest.QuestState; | |
@@ -61,6 +61,7 @@ | |
/** Player's maximum talisman count. */ | |
private final AtomicInteger _talismanSlots = new AtomicInteger(); | |
private boolean _cloakSlot = false; | |
+ private boolean _pausedNevitHourglass = false; | |
public static final int VITALITY_LEVELS[] = | |
{ | |
@@ -130,6 +131,17 @@ | |
double bonusExp = 1.; | |
double bonusSp = 1.; | |
+ // Start Nevit's Hourglass | |
+ if ((addToExp > 0) && !activeChar.isInsideZone(ZoneId.PEACE)) | |
+ { | |
+ activeChar.startNevitHourglassTask(); | |
+ | |
+ if (hasPausedNevitHourglass() && (activeChar.getEffectList().getFirstEffect(L2EffectType.NEVITS_HOURGLASS) == null)) | |
+ { | |
+ setPausedNevitHourglassStatus(false); | |
+ } | |
+ } | |
+ | |
if (useBonuses) | |
{ | |
bonusExp = getExpBonusMultiplier(); | |
@@ -442,6 +454,17 @@ | |
_cloakSlot = cloakSlot; | |
} | |
+ public boolean hasPausedNevitHourglass() | |
+ { | |
+ return _pausedNevitHourglass; | |
+ } | |
+ | |
+ public void setPausedNevitHourglassStatus(boolean val) | |
+ { | |
+ _pausedNevitHourglass = val; | |
+ getActiveChar().sendPacket(new ExVoteSystemInfo(getActiveChar())); | |
+ } | |
+ | |
@Override | |
public final byte getLevel() | |
{ | |
@@ -851,7 +874,7 @@ | |
vitality = getVitalityMultiplier(); | |
// Bonus from Nevit's Blessing | |
- nevits = RecoBonus.getRecoMultiplier(getActiveChar()); | |
+ nevits = getActiveChar().getNevitHourglassMultiplier(); | |
// Bonus from Nevit's Hunting | |
// TODO: Nevit's hunting bonus | |
@@ -895,7 +918,7 @@ | |
vitality = getVitalityMultiplier(); | |
// Bonus from Nevit's Blessing | |
- nevits = RecoBonus.getRecoMultiplier(getActiveChar()); | |
+ nevits = getActiveChar().getNevitHourglassMultiplier(); | |
// Bonus from Nevit's Hunting | |
// TODO: Nevit's hunting bonus | |
Index: java/com/l2jserver/gameserver/model/entity/RecoBonus.java | |
=================================================================== | |
--- java/com/l2jserver/gameserver/model/entity/RecoBonus.java (revision 26) | |
+++ java/com/l2jserver/gameserver/model/entity/RecoBonus.java (working copy) | |
@@ -1,162 +0,0 @@ | |
-/* | |
- * Copyright (C) 2004-2014 L2J Server | |
- * | |
- * This file is part of L2J Server. | |
- * | |
- * L2J Server is free software: you can redistribute it and/or modify | |
- * it under the terms of the GNU General Public License as published by | |
- * the Free Software Foundation, either version 3 of the License, or | |
- * (at your option) any later version. | |
- * | |
- * L2J Server is distributed in the hope that it will be useful, | |
- * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
- * General Public License for more details. | |
- * | |
- * You should have received a copy of the GNU General Public License | |
- * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
- */ | |
-package com.l2jserver.gameserver.model.entity; | |
- | |
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; | |
- | |
-/** | |
- * @author Gnacik | |
- */ | |
-public final class RecoBonus | |
-{ | |
- private static final int[][] _recoBonus = | |
- { | |
- { | |
- 25, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50 | |
- }, | |
- { | |
- 16, | |
- 33, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50 | |
- }, | |
- { | |
- 12, | |
- 25, | |
- 37, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50 | |
- }, | |
- { | |
- 10, | |
- 20, | |
- 30, | |
- 40, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50 | |
- }, | |
- { | |
- 8, | |
- 16, | |
- 25, | |
- 33, | |
- 41, | |
- 50, | |
- 50, | |
- 50, | |
- 50, | |
- 50 | |
- }, | |
- { | |
- 7, | |
- 14, | |
- 21, | |
- 28, | |
- 35, | |
- 42, | |
- 50, | |
- 50, | |
- 50, | |
- 50 | |
- }, | |
- { | |
- 6, | |
- 12, | |
- 18, | |
- 25, | |
- 31, | |
- 37, | |
- 43, | |
- 50, | |
- 50, | |
- 50 | |
- }, | |
- { | |
- 5, | |
- 11, | |
- 16, | |
- 22, | |
- 27, | |
- 33, | |
- 38, | |
- 44, | |
- 50, | |
- 50 | |
- }, | |
- { | |
- 5, | |
- 10, | |
- 15, | |
- 20, | |
- 25, | |
- 30, | |
- 35, | |
- 40, | |
- 45, | |
- 50 | |
- } | |
- }; | |
- | |
- public static int getRecoBonus(L2PcInstance activeChar) | |
- { | |
- if ((activeChar != null) && activeChar.isOnline() && (activeChar.getRecomHave() != 0)) | |
- { | |
- final int lvl = activeChar.getLevel() / 10; | |
- final int exp = (Math.min(100, activeChar.getRecomHave()) - 1) / 10; | |
- | |
- return _recoBonus[lvl][exp]; | |
- } | |
- return 0; | |
- } | |
- | |
- public static double getRecoMultiplier(L2PcInstance activeChar) | |
- { | |
- double multiplier = 1.0; | |
- final double bonus = getRecoBonus(activeChar); | |
- if (bonus > 0) | |
- { | |
- multiplier += (bonus / 100); | |
- } | |
- return multiplier; | |
- } | |
-} | |
\ No newline at end of file | |
Index: java/com/l2jserver/gameserver/model/zone/type/L2PeaceZone.java | |
=================================================================== | |
--- java/com/l2jserver/gameserver/model/zone/type/L2PeaceZone.java (revision 29) | |
+++ java/com/l2jserver/gameserver/model/zone/type/L2PeaceZone.java (working copy) | |
@@ -54,8 +54,12 @@ | |
return; | |
} | |
- /* Nevit Turn Off on Peace Zone */ | |
+ // Stop Nevit's Advent | |
player.getNevitAdvent().stopAdventTask(true); | |
+ | |
+ // Stop Nevit's Hourglass | |
+ player.storeRecommendations(true); | |
+ player.getStat().setPausedNevitHourglassStatus(true); | |
} | |
if (Config.PEACE_ZONE_MODE != 2) | |
Index: java/com/l2jserver/gameserver/model/effects/L2EffectType.java | |
=================================================================== | |
--- java/com/l2jserver/gameserver/model/effects/L2EffectType.java (revision 26) | |
+++ java/com/l2jserver/gameserver/model/effects/L2EffectType.java (working copy) | |
@@ -65,5 +65,6 @@ | |
SUMMON_NPC, | |
TELEPORT, | |
TELEPORT_TO_TARGET, | |
+ NEVITS_HOURGLASS, | |
CALL_PC, | |
} | |
\ No newline at end of file | |
Index: java/com/l2jserver/gameserver/network/L2GameClient.java | |
=================================================================== | |
--- java/com/l2jserver/gameserver/network/L2GameClient.java (revision 26) | |
+++ java/com/l2jserver/gameserver/network/L2GameClient.java (working copy) | |
@@ -376,7 +376,7 @@ | |
if (getActiveChar() != null) | |
{ | |
getActiveChar().storeMe(); | |
- getActiveChar().storeRecommendations(); | |
+ getActiveChar().storeRecommendations(false); | |
if (Config.UPDATE_ITEMS_ON_CHAR_STORE) | |
{ | |
getActiveChar().getInventory().updateDatabase(); | |
#P L2jMilenium_DataPack | |
Index: dist/game/data/stats/skills/09100-09199.xml | |
=================================================================== | |
--- dist/game/data/stats/skills/09100-09199.xml (revision 26) | |
+++ dist/game/data/stats/skills/09100-09199.xml (working copy) | |
@@ -341,7 +341,10 @@ | |
<set name="itemConsumeId" val="17095" /> <!-- Nevit's Hourglass - 1 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9116" levels="1" name="Nevit's Hourglass - 1.5 hour"> | |
<!-- Increases Nevit's blessing by 1.5 hour. --> | |
@@ -355,7 +358,10 @@ | |
<set name="itemConsumeId" val="17096" /> <!-- Nevit's Hourglass - 1.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9117" levels="1" name="Nevit's Hourglass - 2 hour"> | |
<!-- Increases Nevit's blessing by 2 hour. --> | |
@@ -369,7 +375,10 @@ | |
<set name="itemConsumeId" val="17097" /> <!-- Nevit's Hourglass - 2 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9118" levels="1" name="Nevit's Hourglass - 2.5 hour"> | |
<!-- Increases Nevit's blessing by 2.5 hour. --> | |
@@ -383,7 +392,10 @@ | |
<set name="itemConsumeId" val="17098" /> <!-- Nevit's Hourglass - 2.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9119" levels="1" name="Nevit's Hourglass - 3 hour"> | |
<!-- Increases Nevit's blessing by 3 hour. --> | |
@@ -397,7 +409,10 @@ | |
<set name="itemConsumeId" val="17099" /> <!-- Nevit's Hourglass - 3 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9120" levels="1" name="Nevit's Hourglass - 1 hour"> | |
<!-- Increases Nevit's blessing by 1 hour. --> | |
@@ -411,7 +426,10 @@ | |
<set name="itemConsumeId" val="17100" /> <!-- Nevit's Hourglass - 1 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9121" levels="1" name="Nevit's Hourglass - 1.5 hour"> | |
<!-- Increases Nevit's blessing by 1.5 hour. --> | |
@@ -425,7 +443,10 @@ | |
<set name="itemConsumeId" val="17101" /> <!-- Nevit's Hourglass - 1.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9122" levels="1" name="Nevit's Hourglass - 2 hour"> | |
<!-- Increases Nevit's blessing by 2 hour. --> | |
@@ -439,7 +460,10 @@ | |
<set name="itemConsumeId" val="17102" /> <!-- Nevit's Hourglass - 2 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9123" levels="1" name="Nevit's Hourglass - 2.5 hour"> | |
<!-- Increases Nevit's blessing by 2.5 hour. --> | |
@@ -453,7 +477,10 @@ | |
<set name="itemConsumeId" val="17103" /> <!-- Nevit's Hourglass - 2.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9124" levels="1" name="Nevit's Hourglass - 3 hour"> | |
<!-- Increases Nevit's blessing by 3 hour. --> | |
@@ -467,7 +494,10 @@ | |
<set name="itemConsumeId" val="17104" /> <!-- Nevit's Hourglass - 3 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9125" levels="1" name="Nevit's Hourglass - 1 hour"> | |
<!-- Increases Nevit's blessing by 1 hour. --> | |
@@ -481,7 +511,10 @@ | |
<set name="itemConsumeId" val="17105" /> <!-- Nevit's Hourglass - 1 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9126" levels="1" name="Nevit's Hourglass - 1.5 hour"> | |
<!-- Increases Nevit's blessing by 1.5 hour. --> | |
@@ -495,7 +528,10 @@ | |
<set name="itemConsumeId" val="17106" /> <!-- Nevit's Hourglass - 1.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9127" levels="1" name="Nevit's Hourglass - 2 hour"> | |
<!-- Increases Nevit's blessing by 2 hour. --> | |
@@ -509,7 +545,10 @@ | |
<set name="itemConsumeId" val="17107" /> <!-- Nevit's Hourglass - 2 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9128" levels="1" name="Nevit's Hourglass - 2.5 hour"> | |
<!-- Increases Nevit's blessing by 2.5 hour. --> | |
@@ -523,7 +562,10 @@ | |
<set name="itemConsumeId" val="17108" /> <!-- Nevit's Hourglass - 2.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9129" levels="1" name="Nevit's Hourglass - 3 hour"> | |
<!-- Increases Nevit's blessing by 3 hour. --> | |
@@ -537,7 +579,10 @@ | |
<set name="itemConsumeId" val="17109" /> <!-- Nevit's Hourglass - 3 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9130" levels="1" name="Nevit's Hourglass - 1 hour"> | |
<!-- Increases Nevit's blessing by 1 hour. --> | |
@@ -551,7 +596,10 @@ | |
<set name="itemConsumeId" val="17110" /> <!-- Nevit's Hourglass - 1 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9131" levels="1" name="Nevit's Hourglass - 1.5 hour"> | |
<!-- Increases Nevit's blessing by 1.5 hour. --> | |
@@ -565,7 +613,10 @@ | |
<set name="itemConsumeId" val="17111" /> <!-- Nevit's Hourglass - 1.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9132" levels="1" name="Nevit's Hourglass - 2 hour"> | |
<!-- Increases Nevit's blessing by 2 hour. --> | |
@@ -579,7 +630,10 @@ | |
<set name="itemConsumeId" val="17112" /> <!-- Nevit's Hourglass - 2 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9133" levels="1" name="Nevit's Hourglass - 2.5 hour"> | |
<!-- Increases Nevit's blessing by 2.5 hour. --> | |
@@ -593,7 +647,10 @@ | |
<set name="itemConsumeId" val="17113" /> <!-- Nevit's Hourglass - 2.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9134" levels="1" name="Nevit's Hourglass - 3 hour"> | |
<!-- Increases Nevit's blessing by 3 hour. --> | |
@@ -607,7 +664,10 @@ | |
<set name="itemConsumeId" val="17114" /> <!-- Nevit's Hourglass - 3 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9135" levels="1" name="Nevit's Hourglass - 1 hour"> | |
<!-- Increases Nevit's blessing by 1 hour. --> | |
@@ -621,7 +681,10 @@ | |
<set name="itemConsumeId" val="17115" /> <!-- Nevit's Hourglass - 1 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9136" levels="1" name="Nevit's Hourglass - 1.5 hour"> | |
<!-- Increases Nevit's blessing by 1.5 hour. --> | |
@@ -635,7 +698,10 @@ | |
<set name="itemConsumeId" val="17116" /> <!-- Nevit's Hourglass - 1.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9137" levels="1" name="Nevit's Hourglass - 2 hour"> | |
<!-- Increases Nevit's blessing by 2 hour. --> | |
@@ -649,7 +715,10 @@ | |
<set name="itemConsumeId" val="17117" /> <!-- Nevit's Hourglass - 2 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9138" levels="1" name="Nevit's Hourglass - 2.5 hour"> | |
<!-- Increases Nevit's blessing by 2.5 hour. --> | |
@@ -663,7 +732,10 @@ | |
<set name="itemConsumeId" val="17118" /> <!-- Nevit's Hourglass - 2.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9139" levels="1" name="Nevit's Hourglass - 3 hour"> | |
<!-- Increases Nevit's blessing by 3 hour. --> | |
@@ -677,7 +749,10 @@ | |
<set name="itemConsumeId" val="17119" /> <!-- Nevit's Hourglass - 3 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9140" levels="1" name="Nevit's Hourglass - 1 hour"> | |
<!-- Increases Nevit's blessing by 1 hour. --> | |
@@ -691,7 +766,10 @@ | |
<set name="itemConsumeId" val="17120" /> <!-- Nevit's Hourglass - 1 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9141" levels="1" name="Nevit's Hourglass - 1.5 hour"> | |
<!-- Increases Nevit's blessing by 1.5 hour. --> | |
@@ -705,7 +783,10 @@ | |
<set name="itemConsumeId" val="17121" /> <!-- Nevit's Hourglass - 1.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9142" levels="1" name="Nevit's Hourglass - 2 hour"> | |
<!-- Increases Nevit's blessing by 2 hour. --> | |
@@ -719,7 +800,10 @@ | |
<set name="itemConsumeId" val="17122" /> <!-- Nevit's Hourglass - 2 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9143" levels="1" name="Nevit's Hourglass - 2.5 hour"> | |
<!-- Increases Nevit's blessing by 2.5 hour. --> | |
@@ -733,7 +817,10 @@ | |
<set name="itemConsumeId" val="17123" /> <!-- Nevit's Hourglass - 2.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9144" levels="1" name="Nevit's Hourglass - 3 hour"> | |
<!-- Increases Nevit's blessing by 3 hour. --> | |
@@ -747,7 +834,10 @@ | |
<set name="itemConsumeId" val="17124" /> <!-- Nevit's Hourglass - 3 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9145" levels="1" name="Nevit's Hourglass - 1 hour"> | |
<!-- Increases Nevit's blessing by 1 hour. --> | |
@@ -761,7 +851,10 @@ | |
<set name="itemConsumeId" val="17125" /> <!-- Nevit's Hourglass - 1 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9146" levels="1" name="Nevit's Hourglass - 1.5 hour"> | |
<!-- Increases Nevit's blessing by 1.5 hour. --> | |
@@ -775,7 +868,10 @@ | |
<set name="itemConsumeId" val="17126" /> <!-- Nevit's Hourglass - 1.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9147" levels="1" name="Nevit's Hourglass - 2 hour"> | |
<!-- Increases Nevit's blessing by 2 hour. --> | |
@@ -789,7 +885,10 @@ | |
<set name="itemConsumeId" val="17127" /> <!-- Nevit's Hourglass - 2 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9148" levels="1" name="Nevit's Hourglass - 2.5 hour"> | |
<!-- Increases Nevit's blessing by 2.5 hour. --> | |
@@ -803,7 +902,10 @@ | |
<set name="itemConsumeId" val="17128" /> <!-- Nevit's Hourglass - 2.5 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9149" levels="1" name="Nevit's Hourglass - 3 hour"> | |
<!-- Increases Nevit's blessing by 3 hour. --> | |
@@ -817,7 +919,10 @@ | |
<set name="itemConsumeId" val="17129" /> <!-- Nevit's Hourglass - 3 hour --> | |
<set name="magicLvl" val="-1" /> | |
<set name="operateType" val="A2" /> | |
- <set name="targetType" val="NONE" /> | |
+ <set name="targetType" val="SELF" /> | |
+ <for> | |
+ <effect name="NevitsHourglass" /> | |
+ </for> | |
</skill> | |
<skill id="9150" levels="1" name="Freesia Bouquet - Event"> | |
<set name="castRange" val="500" /> | |
Index: dist/game/data/scripts/handlers/EffectMasterHandler.java | |
=================================================================== | |
--- dist/game/data/scripts/handlers/EffectMasterHandler.java (revision 26) | |
+++ dist/game/data/scripts/handlers/EffectMasterHandler.java (working copy) | |
@@ -122,6 +122,7 @@ | |
ManaHealPercent.class, | |
MpConsumePerLevel.class, | |
Mute.class, | |
+ NevitsHourglass.class, | |
NoblesseBless.class, | |
OpenChest.class, | |
Unsummon.class, | |
Index: dist/game/data/scripts/handlers/effecthandlers/NevitsHourglass.java | |
=================================================================== | |
--- dist/game/data/scripts/handlers/effecthandlers/NevitsHourglass.java (revision 0) | |
+++ dist/game/data/scripts/handlers/effecthandlers/NevitsHourglass.java (working copy) | |
@@ -0,0 +1,65 @@ | |
+/* | |
+ * Copyright (C) 2004-2014 L2J DataPack | |
+ * | |
+ * This file is part of L2J DataPack. | |
+ * | |
+ * L2J DataPack is free software: you can redistribute it and/or modify | |
+ * it under the terms of the GNU General Public License as published by | |
+ * the Free Software Foundation, either version 3 of the License, or | |
+ * (at your option) any later version. | |
+ * | |
+ * L2J DataPack is distributed in the hope that it will be useful, | |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
+ * General Public License for more details. | |
+ * | |
+ * You should have received a copy of the GNU General Public License | |
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
+ */ | |
+package handlers.effecthandlers; | |
+ | |
+import com.l2jserver.gameserver.model.StatsSet; | |
+import com.l2jserver.gameserver.model.conditions.Condition; | |
+import com.l2jserver.gameserver.model.effects.AbstractEffect; | |
+import com.l2jserver.gameserver.model.effects.L2EffectType; | |
+import com.l2jserver.gameserver.model.skills.BuffInfo; | |
+import com.l2jserver.gameserver.model.zone.ZoneId; | |
+ | |
+/** | |
+ * Effect for pause Nevit Hourglass status. | |
+ * @author St3eT | |
+ */ | |
+public final class NevitsHourglass extends AbstractEffect | |
+{ | |
+ public NevitsHourglass(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params) | |
+ { | |
+ super(attachCond, applyCond, set, params); | |
+ } | |
+ | |
+ @Override | |
+ public L2EffectType getEffectType() | |
+ { | |
+ return L2EffectType.NEVITS_HOURGLASS; | |
+ } | |
+ | |
+ @Override | |
+ public boolean canStart(BuffInfo info) | |
+ { | |
+ return (info.getEffected() != null) && info.getEffected().isPlayer(); | |
+ } | |
+ | |
+ @Override | |
+ public void onStart(BuffInfo info) | |
+ { | |
+ info.getEffected().getActingPlayer().getStat().setPausedNevitHourglassStatus(true); | |
+ } | |
+ | |
+ @Override | |
+ public void onExit(BuffInfo info) | |
+ { | |
+ if (!info.getEffected().getActingPlayer().isInsideZone(ZoneId.PEACE)) | |
+ { | |
+ info.getEffected().getActingPlayer().getStat().setPausedNevitHourglassStatus(false); | |
+ } | |
+ } | |
+} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment