Pārlūkot izejas kodu

BETA: Datapack part for [L5992]:
* Updated most effect that always success, the rest will be reviewed and updated soon.
* Moved success formulas to proper place.

Zoey76 12 gadi atpakaļ
vecāks
revīzija
ad95d52f84
23 mainītis faili ar 198 papildinājumiem un 97 dzēšanām
  1. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Cancel.java
  2. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CancelAll.java
  3. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CancelDebuff.java
  4. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHeal.java
  5. 6 1
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHealOverTime.java
  6. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHealPercent.java
  7. 6 6
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java
  8. 37 37
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java
  9. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/FocusEnergy.java
  10. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/GiveSp.java
  11. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Heal.java
  12. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/HealOverTime.java
  13. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/HealPercent.java
  14. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Hide.java
  15. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/HpByLevel.java
  16. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Lethal.java
  17. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java
  18. 34 31
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackMp.java
  19. 7 7
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java
  20. 6 6
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java
  21. 9 6
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Spoil.java
  22. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/StaticDamage.java
  23. 3 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Continuous.java

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Cancel.java

@@ -37,6 +37,12 @@ public class Cancel extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CancelAll.java

@@ -34,6 +34,12 @@ public class CancelAll extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CancelDebuff.java

@@ -39,6 +39,12 @@ public class CancelDebuff extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHeal.java

@@ -37,6 +37,12 @@ public class CpHeal extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{

+ 6 - 1
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHealOverTime.java

@@ -33,12 +33,17 @@ public class CpHealOverTime extends L2Effect
 		super(env, template);
 	}
 	
-	// Special constructor to steal this effect
 	public CpHealOverTime(Env env, L2Effect effect)
 	{
 		super(env, effect);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public boolean canBeStolen()
 	{

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHealPercent.java

@@ -37,6 +37,12 @@ public class CpHealPercent extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{

+ 6 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java

@@ -39,6 +39,12 @@ public class EnergyAttack extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return !Formulas.calcPhysicalSkillEvasion(getEffector(), getEffected(), getSkill());
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{
@@ -55,12 +61,6 @@ public class EnergyAttack extends L2Effect
 			return false;
 		}
 		
-		// Check if skill is evaded
-		if (Formulas.calcPhysicalSkillEvasion(activeChar, target, getSkill()))
-		{
-			return false;
-		}
-		
 		boolean ss = getSkill().isPhysical() && activeChar.isChargedShot(ShotType.SOULSHOTS);
 		byte shld = Formulas.calcShldUse(activeChar, target, getSkill());
 		boolean crit = false;

+ 37 - 37
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java

@@ -39,6 +39,15 @@ public class FatalBlow extends L2Effect
 		super(env, template);
 	}
 	
+	/**
+	 * If is not evaded and blow lands.
+	 */
+	@Override
+	public boolean calcSuccess()
+	{
+		return !Formulas.calcPhysicalSkillEvasion(getEffector(), getEffected(), getSkill()) && Formulas.calcBlowSuccess(getEffector(), getEffected(), getSkill());
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{
@@ -56,47 +65,38 @@ public class FatalBlow extends L2Effect
 			return false;
 		}
 		
-		// Check if skill is evaded
-		if (Formulas.calcPhysicalSkillEvasion(activeChar, target, getSkill()))
+		boolean ss = getSkill().useSoulShot() && activeChar.isChargedShot(ShotType.SOULSHOTS);
+		byte shld = Formulas.calcShldUse(activeChar, target, getSkill());
+		double damage = (int) Formulas.calcBlowDamage(activeChar, target, getSkill(), shld, ss);
+		if ((getSkill().getMaxSoulConsumeCount() > 0) && activeChar.isPlayer())
 		{
-			return false;
+			// Souls Formula (each soul increase +4%)
+			int chargedSouls = (activeChar.getActingPlayer().getChargedSouls() <= getSkill().getMaxSoulConsumeCount()) ? activeChar.getActingPlayer().getChargedSouls() : getSkill().getMaxSoulConsumeCount();
+			damage *= 1 + (chargedSouls * 0.04);
+		}
+		
+		// Crit rate base crit rate for skill, modified with STR bonus
+		if (Formulas.calcCrit(getSkill().getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), true, target))
+		{
+			damage *= 2;
+		}
+		
+		target.reduceCurrentHp(damage, activeChar, getSkill());
+		
+		// Check if damage should be reflected
+		Formulas.calcDamageReflected(activeChar, target, getSkill(), true);
+		
+		// Manage attack or cast break of the target (calculating rate, sending message...)
+		if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
+		{
+			target.breakAttack();
+			target.breakCast();
 		}
 		
-		if (Formulas.calcBlowSuccess(activeChar, target, getSkill()))
+		if (activeChar.isPlayer())
 		{
-			boolean ss = getSkill().useSoulShot() && activeChar.isChargedShot(ShotType.SOULSHOTS);
-			byte shld = Formulas.calcShldUse(activeChar, target, getSkill());
-			double damage = (int) Formulas.calcBlowDamage(activeChar, target, getSkill(), shld, ss);
-			if ((getSkill().getMaxSoulConsumeCount() > 0) && activeChar.isPlayer())
-			{
-				// Souls Formula (each soul increase +4%)
-				int chargedSouls = (activeChar.getActingPlayer().getChargedSouls() <= getSkill().getMaxSoulConsumeCount()) ? activeChar.getActingPlayer().getChargedSouls() : getSkill().getMaxSoulConsumeCount();
-				damage *= 1 + (chargedSouls * 0.04);
-			}
-			
-			// Crit rate base crit rate for skill, modified with STR bonus
-			if (Formulas.calcCrit(getSkill().getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), true, target))
-			{
-				damage *= 2;
-			}
-			
-			target.reduceCurrentHp(damage, activeChar, getSkill());
-			
-			// Check if damage should be reflected
-			Formulas.calcDamageReflected(activeChar, target, getSkill(), true);
-			
-			// Manage attack or cast break of the target (calculating rate, sending message...)
-			if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
-			{
-				target.breakAttack();
-				target.breakCast();
-			}
-			
-			if (activeChar.isPlayer())
-			{
-				L2PcInstance activePlayer = activeChar.getActingPlayer();
-				activePlayer.sendDamageMessage(target, (int) damage, false, true, false);
-			}
+			L2PcInstance activePlayer = activeChar.getActingPlayer();
+			activePlayer.sendDamageMessage(target, (int) damage, false, true, false);
 		}
 		return true;
 	}

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/FocusEnergy.java

@@ -34,6 +34,12 @@ public class FocusEnergy extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/GiveSp.java

@@ -34,6 +34,12 @@ public class GiveSp extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Heal.java

@@ -48,6 +48,12 @@ public class Heal extends L2Effect
 		return L2EffectType.HEAL;
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public boolean onActionTime()
 	{

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/HealOverTime.java

@@ -39,6 +39,12 @@ public class HealOverTime extends L2Effect
 		super(env, effect);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public boolean canBeStolen()
 	{

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/HealPercent.java

@@ -43,6 +43,12 @@ public class HealPercent extends L2Effect
 		return L2EffectType.HEAL_PERCENT;
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public boolean onActionTime()
 	{

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Hide.java

@@ -45,6 +45,12 @@ public class Hide extends L2Effect
 		super(env, effect);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/HpByLevel.java

@@ -36,6 +36,12 @@ public class HpByLevel extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Lethal.java

@@ -38,6 +38,12 @@ public class Lethal extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java

@@ -39,6 +39,12 @@ public class MagicalAttack extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{

+ 34 - 31
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackMp.java

@@ -39,6 +39,17 @@ public class MagicalAttackMp extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		if (getEffected().isInvul() || !Formulas.calcMagicAffected(getEffector(), getEffected(), getSkill()))
+		{
+			getEffector().sendPacket(SystemMessageId.MISSED_TARGET);
+			return false;
+		}
+		return true;
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{
@@ -56,40 +67,32 @@ public class MagicalAttackMp extends L2Effect
 			return false;
 		}
 		
-		boolean acted = Formulas.calcMagicAffected(activeChar, target, getSkill());
-		if (target.isInvul() || !acted)
+		boolean sps = getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.SPIRITSHOTS);
+		boolean bss = getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.BLESSED_SPIRITSHOTS);
+		final byte shld = Formulas.calcShldUse(activeChar, target, getSkill());
+		final boolean mcrit = Formulas.calcMCrit(activeChar.getMCriticalHit(target, getSkill()));
+		double damage = Formulas.calcManaDam(activeChar, target, getSkill(), shld, sps, bss, mcrit);
+		double mp = (damage > target.getCurrentMp() ? target.getCurrentMp() : damage);
+		
+		if (damage > 0)
+		{
+			target.stopEffectsOnDamage(true);
+			target.setCurrentMp(target.getCurrentMp() - mp);
+		}
+		
+		if (target.isPlayer())
 		{
-			activeChar.sendPacket(SystemMessageId.MISSED_TARGET);
+			SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MP_HAS_BEEN_DRAINED_BY_C1);
+			sm.addCharName(activeChar);
+			sm.addNumber((int) mp);
+			target.sendPacket(sm);
 		}
-		else
+		
+		if (activeChar.isPlayer())
 		{
-			boolean sps = getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.SPIRITSHOTS);
-			boolean bss = getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.BLESSED_SPIRITSHOTS);
-			final byte shld = Formulas.calcShldUse(activeChar, target, getSkill());
-			final boolean mcrit = Formulas.calcMCrit(activeChar.getMCriticalHit(target, getSkill()));
-			double damage = Formulas.calcManaDam(activeChar, target, getSkill(), shld, sps, bss, mcrit);
-			double mp = (damage > target.getCurrentMp() ? target.getCurrentMp() : damage);
-			
-			if (damage > 0)
-			{
-				target.stopEffectsOnDamage(true);
-				target.setCurrentMp(target.getCurrentMp() - mp);
-			}
-			
-			if (target.isPlayer())
-			{
-				SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MP_HAS_BEEN_DRAINED_BY_C1);
-				sm.addCharName(activeChar);
-				sm.addNumber((int) mp);
-				target.sendPacket(sm);
-			}
-			
-			if (activeChar.isPlayer())
-			{
-				SystemMessage sm2 = SystemMessage.getSystemMessage(SystemMessageId.YOUR_OPPONENTS_MP_WAS_REDUCED_BY_S1);
-				sm2.addNumber((int) mp);
-				activeChar.sendPacket(sm2);
-			}
+			SystemMessage sm2 = SystemMessage.getSystemMessage(SystemMessageId.YOUR_OPPONENTS_MP_WAS_REDUCED_BY_S1);
+			sm2.addNumber((int) mp);
+			activeChar.sendPacket(sm2);
 		}
 		return true;
 	}

+ 7 - 7
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java

@@ -40,6 +40,12 @@ public class PhysicalAttack extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return !Formulas.calcPhysicalSkillEvasion(getEffector(), getEffected(), getSkill());
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{
@@ -59,7 +65,7 @@ public class PhysicalAttack extends L2Effect
 		
 		if (((getSkill().getFlyRadius() > 0) || (getSkill().getFlyType() != null)) && activeChar.isMovementDisabled())
 		{
-			SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED);
+			final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED);
 			sm.addSkillName(getSkill());
 			activeChar.sendPacket(sm);
 			return false;
@@ -70,12 +76,6 @@ public class PhysicalAttack extends L2Effect
 			target.stopFakeDeath(true);
 		}
 		
-		// Check if skill is evaded
-		if (Formulas.calcPhysicalSkillEvasion(activeChar, target, getSkill()))
-		{
-			return false;
-		}
-		
 		int damage = 0;
 		boolean ss = getSkill().isPhysical() && activeChar.isChargedShot(ShotType.SOULSHOTS);
 		final byte shld = Formulas.calcShldUse(activeChar, target, getSkill());

+ 6 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java

@@ -40,6 +40,12 @@ public class PhysicalAttackHpLink extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return !Formulas.calcPhysicalSkillEvasion(getEffector(), getEffected(), getSkill());
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{
@@ -65,12 +71,6 @@ public class PhysicalAttackHpLink extends L2Effect
 			return false;
 		}
 		
-		// Check if skill is evaded.
-		if (Formulas.calcPhysicalSkillEvasion(activeChar, target, getSkill()))
-		{
-			return false;
-		}
-		
 		final byte shld = Formulas.calcShldUse(activeChar, target, getSkill());
 		// Physical damage critical rate is only affected by STR.
 		boolean crit = false;

+ 9 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Spoil.java

@@ -38,6 +38,12 @@ public class Spoil extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return Formulas.calcMagicSuccess(getEffector(), getEffected(), getSkill());
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{
@@ -60,12 +66,9 @@ public class Spoil extends L2Effect
 			return false;
 		}
 		
-		if (Formulas.calcMagicSuccess(getEffector(), target, getSkill()))
-		{
-			target.setSpoil(true);
-			target.setIsSpoiledBy(getEffector().getObjectId());
-			getEffector().sendPacket(SystemMessageId.SPOIL_SUCCESS);
-		}
+		target.setSpoil(true);
+		target.setIsSpoiledBy(getEffector().getObjectId());
+		getEffector().sendPacket(SystemMessageId.SPOIL_SUCCESS);
 		target.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, getEffector());
 		return true;
 	}

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/StaticDamage.java

@@ -34,6 +34,12 @@ public class StaticDamage extends L2Effect
 		super(env, template);
 	}
 	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
 	@Override
 	public L2EffectType getEffectType()
 	{

+ 3 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Continuous.java

@@ -158,11 +158,11 @@ public class Continuous implements ISkillHandler
 				}
 				else
 				{
-					L2Effect[] effects = skill.getEffects(activeChar, target, new Env(shld, ss, sps, bss));
+					List<L2Effect> effects = skill.getEffects(activeChar, target, new Env(shld, ss, sps, bss));
 					L2Summon summon = target.getSummon();
-					if ((summon != null) && (summon != activeChar) && summon.isServitor() && (effects.length > 0))
+					if ((summon != null) && (summon != activeChar) && summon.isServitor() && !effects.isEmpty())
 					{
-						if (effects[0].canBeStolen() || skill.isHeroSkill() || skill.isStatic())
+						if (effects.get(0).canBeStolen() || skill.isHeroSkill() || skill.isStatic())
 						{
 							skill.getEffects(activeChar, target.getSummon(), new Env(shld, ss, sps, bss));
 						}