瀏覽代碼

BETA: Misc changes:
* Fixing minor typo in trigger skill system reflected damage must be considered as damage for the reflected character.
* Reported by Nik
* Patch by: Nik
* Making Env's _value variable volatile.
* New method in L2Skill: hasEffectTypes()
* Returns '''true''' if at '''least one''' of specified L2EffectType types present on the current skill's effects, '''false''' otherwise.

Rumen Nikiforov 12 年之前
父節點
當前提交
4a10ddf811

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Character.java

@@ -5713,7 +5713,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder
 				// Maybe launch chance skills on us
 				if (_chanceSkills != null)
 				{
-					_chanceSkills.onHit(target, damage, false, crit);
+					_chanceSkills.onHit(target, reflectedDamage, false, crit);
 					// Reflect triggers onHit
 					if (reflectedDamage > 0)
 					{
@@ -5724,7 +5724,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder
 				// Maybe launch chance skills on target
 				if (target.getChanceSkills() != null)
 				{
-					target.getChanceSkills().onHit(this, damage, true, crit);
+					target.getChanceSkills().onHit(this, reflectedDamage, true, crit);
 				}
 			}
 			

+ 26 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/skills/L2Skill.java

@@ -51,6 +51,7 @@ import com.l2jserver.gameserver.model.actor.instance.L2SiegeFlagInstance;
 import com.l2jserver.gameserver.model.conditions.Condition;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
+import com.l2jserver.gameserver.model.effects.L2EffectType;
 import com.l2jserver.gameserver.model.entity.TvTEvent;
 import com.l2jserver.gameserver.model.holders.ItemHolder;
 import com.l2jserver.gameserver.model.interfaces.IChanceSkillTrigger;
@@ -2199,4 +2200,29 @@ public abstract class L2Skill implements IChanceSkillTrigger
 	{
 		return _hairStyleId;
 	}
+	
+	/**
+	 * @param types
+	 * @return {@code true} if at least one of specified {@link L2EffectType} types present on the current skill's effects, {@code false} otherwise.
+	 */
+	public boolean hasEffectType(L2EffectType... types)
+	{
+		if (hasEffects())
+		{
+			final Env env = new Env();
+			env.setSkill(this);
+			for (EffectTemplate et : _effectTemplates)
+			{
+				final L2Effect e = et.getEffect(env);
+				for (L2EffectType type : types)
+				{
+					if (e.getEffectType() == type)
+					{
+						return true;
+					}
+				}
+			}
+		}
+		return false;
+	}
 }

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/stats/Env.java

@@ -43,7 +43,7 @@ public final class Env
 	private boolean _soulShot = false;
 	private boolean _spiritShot = false;
 	private L2Character _target;
-	private double _value;
+	private volatile double _value;
 	
 	public Env()
 	{