Skill Dominator lvl 81 L2J 

I assume you know how to add scripts to the core.

Code:
 Index: C:\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\model\L2Character.java
===================================================================
--- C:\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\model\L2Character.java
+++ C:\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\model\L2Character.java
@@ -174 +174 @@
 	private boolean _isImmobileUntilAttacked				= false; // Is in immobile until attacked.
 	private boolean _isSleeping                             = false; // Cannot move/attack until sleep timed out or monster is attacked
 	private boolean _isStunned                              = false; // Cannot move/attack until stun timed out
+	private boolean _issealofLimit                          = false; // Debuff + hp/mp/cp 0 regen
 	private boolean _isBetrayed                             = false; // Betrayed by own summon
 	protected boolean _showSummonAnimation                  = false;
 	protected boolean _isTeleporting                        = false;
@@ -2496 +2496 @@
 	/** Return True if the L2Character can't use its skills (ex : stun, sleep...). */
 	public final boolean isAllSkillsDisabled() { return _allSkillsDisabled || isImmobileUntilAttacked() || isStunned() || isSleeping() || isParalyzed(); }
 
+	/** char is effected by seal of limit */
+	public final boolean isEffectingSealofLimit()
+	{
+		return issealofLimit();
+	}
+
 	/** Return True if the L2Character can't attack (stun, sleep, attackEndTime, fakeDeath, paralyse, attackMute). */
 	public boolean isAttackingDisabled() { return isStunned() || isImmobileUntilAttacked() || isSleeping() || _attackEndTime > GameTimeController.getGameTicks() || isFakeDeath() || isParalyzed() || isPhysicalAttackMuted(); }
 
@@ -2829 +2829 @@
 	public final boolean isStunned() { return _isStunned; }
 	public final void setIsStunned(boolean value) { _isStunned = value; }
+	public final boolean issealofLimit()
+	{
+		return _issealofLimit;
+	}
+	public final void setIsSealofLimit(boolean value)
+	{
+		_issealofLimit = value;
+	}
 	public final boolean isBetrayed() { return _isBetrayed; }
 	public final void setIsBetrayed(boolean value) { _isBetrayed = value; }
 
Index: C:\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\skills\Formulas.java
===================================================================
--- C:\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\skills\Formulas.java
+++ C:\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\skills\Formulas.java
@@ -1135 +1135 @@
				int castleIndex = player.getClan().getHasCastle();
				if (castleIndex > 0)
				{
					Castle castle = CastleManager.getInstance().getCastleById(castleIndex);
					if (castle != null)
						if (castle.getFunction(Castle.FUNC_RESTORE_HP) != null)
							hpRegenMultiplier *= 1 + castle.getFunction(Castle.FUNC_RESTORE_HP).getLvl() / 100;
				}
			}
+			if (player.isEffectingSealofLimit())
+			{
+				init *= 0;
+				hpRegenBonus *= 0;
+				hpRegenMultiplier *= 0;
+			}
			// Calculate Movement bonus
			if (player.isSitting() && player.getLevel() < 41) // Sitting below lvl 40
			{
				init *= 1.5;
				hpRegenBonus += (40 - player.getLevel()) * 0.7;
			}
@@ -1235 +1235 @@
			if (player.isInsideZone(L2Zone.FLAG_CLANHALL) && player.getClan() != null)
			{
				int clanHallIndex = player.getClan().getHasHideout();
				if (clanHallIndex > 0)
				{
					ClanHall clansHall = ClanHallManager.getInstance().getClanHallById(clanHallIndex);
					if (clansHall != null)
						if (clansHall.getFunction(ClanHall.FUNC_RESTORE_MP) != null)
							mpRegenMultiplier *= 1 + clansHall.getFunction(ClanHall.FUNC_RESTORE_MP).getLvl() / 100;
				}
			}
+			if (player.isEffectingSealofLimit())
+			{
+				init *= 0;
+				mpRegenBonus *= 0;
+				mpRegenMultiplier *= 0;
+			}
			// Calculate Movement bonus
			if (player.isSitting())
				init *= 2.5; // Sitting.
			else if (player.isRunning())
				init *= 0.7; // Running
@@ -1293 +1293 @@
			// Calculate correct baseHpReg value for certain level of PC
			init += (player.getLevel() > 10) ? ((player.getLevel() - 1) / 10.0) : 0.5;

			// Calculate Movement bonus
			if (player.isSitting())
				init *= 1.5; // Sitting
			else if (!player.isMoving())
				init *= 1.1; // Staying
			else if (player.isRunning())
				init *= 0.7; // Running

+			if (player.isEffectingSealofLimit())
+			{
+				init *= 0;
+				cpRegenBonus *= 0;
+				cpRegenMultiplier *= 0;
+			}
		}
		else
 	
Index: C:\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\model\L2Effect.java
===================================================================
--- C:\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\model\L2Effect.java
+++ C:\L2EmuProject-Game\src\main\java\net\l2emuproject\gameserver\model\L2Effect.java
@@ -77 +77 @@
		SILENT_MOVE,
		SEED,
+		SEALOFLIMIT,
		PARALYZE,
		STUN_SELF,
This goes in datapack:

Code:
<skill id="2481" levels="1" name="Seal of Limit">
  <set name="mpConsume" val="300"/>  <-- custom, too lazy to get good value now XD -->
  <set name="target" val="TARGET_AURA"/>
  <set name="skillRadius" val="200"/>  <-- custom, too lazy to get good value now XD -->
  <set name="negateStats" val="BUFF"/>
  <set name="negatePower" val="50"/>  <-- custom, too lazy to get good value now XD -->
  <set name="reuseDelay" val="20000"/>  <-- custom, too lazy to get good value now XD -->
  <set name="hitTime" val="3000"/>  <-- custom, too lazy to get good value now XD -->
  <set name="skillType" val="NEGATE"/>
  <set name="operateType" val="OP_ACTIVE"/>
  <set name="isDebuff" val="true"/>
  <set name="castRange" val="400"/>
  <set name="effectRange" val="1400"/>
  <set name="effectPower" val="100"/>  <-- custom, too lazy to get good value now XD -->
  <for>
    <effect count="1" name="SealOfLimit" time="10" val="0" stackOrder="1" stackType="SealOfLimit"/>
  </for>
</skill>
 

Attachments

Last edited:
Upvote 0
Back