Skip to content

Instantly share code, notes, and snippets.

@St3eT
Last active December 2, 2019 18:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save St3eT/2f48b58939fc702d3761 to your computer and use it in GitHub Desktop.
Save St3eT/2f48b58939fc702d3761 to your computer and use it in GitHub Desktop.
Nevit hourglass
### 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