Explorar el Código

BETA: ConditionTargetLevelRange support.

Rumen Nikiforov hace 13 años
padre
commit
bf4ef698c4

+ 12 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/engines/DocumentBase.java

@@ -96,6 +96,7 @@ import com.l2jserver.gameserver.model.conditions.ConditionTargetAggro;
 import com.l2jserver.gameserver.model.conditions.ConditionTargetClassIdRestriction;
 import com.l2jserver.gameserver.model.conditions.ConditionTargetInvSize;
 import com.l2jserver.gameserver.model.conditions.ConditionTargetLevel;
+import com.l2jserver.gameserver.model.conditions.ConditionTargetLevelRange;
 import com.l2jserver.gameserver.model.conditions.ConditionTargetNpcId;
 import com.l2jserver.gameserver.model.conditions.ConditionTargetNpcType;
 import com.l2jserver.gameserver.model.conditions.ConditionTargetPlayable;
@@ -806,6 +807,17 @@ public abstract class DocumentBase
 				int lvl = Integer.decode(getValue(a.getNodeValue(), template));
 				cond = joinAnd(cond, new ConditionTargetLevel(lvl));
 			}
+			else if ("levelRange".equalsIgnoreCase(a.getNodeName()))
+			{
+				String[] range = getValue(a.getNodeValue(), template).split(";");
+				if (range.length == 2)
+				{
+					int[] lvlRange = new int[2];
+					lvlRange[0] = Integer.decode(getValue(a.getNodeValue(), template).split(";")[0]);
+					lvlRange[1] = Integer.decode(getValue(a.getNodeValue(), template).split(";")[1]);
+					cond = joinAnd(cond, new ConditionTargetLevelRange(lvlRange));
+				}
+			}
 			else if ("playable".equalsIgnoreCase(a.getNodeName()))
 			{
 				cond = joinAnd(cond, new ConditionTargetPlayable());

+ 45 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/conditions/ConditionTargetLevelRange.java

@@ -0,0 +1,45 @@
+/*
+ * This program 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.
+ * 
+ * This program 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.conditions;
+
+import com.l2jserver.gameserver.model.stats.Env;
+
+/**
+ * @author UnAfraid
+ */
+public class ConditionTargetLevelRange extends Condition
+{
+	private final int[] _levels;
+	
+	/**
+	 * Instantiates a new condition target levels range.
+	 * @param levels the {@code levels} range.
+	 */
+	public ConditionTargetLevelRange(int[] levels)
+	{
+		_levels = levels;
+	}
+	
+	@Override
+	public boolean testImpl(Env env)
+	{
+		if (env.getTarget() == null)
+		{
+			return false;
+		}
+		final int level = env.getTarget().getLevel();
+		return ((level >= _levels[0]) && (level <= _levels[1]));
+	}
+}