Pārlūkot izejas kodu

Core support for skill static damage <set name="staticDamage" val="true" />
If skill has static damage, it means that it will do damage equal to the skill's power.

Nik 13 gadi atpakaļ
vecāks
revīzija
6de28cb3fb

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

@@ -172,6 +172,7 @@ public abstract class L2Skill implements IChanceSkillTrigger
 	private final SkillTraitType _traitType;
 	private final boolean _staticReuse;
 	private final boolean _staticHitTime;
+	private final boolean _staticDamage; // Damage dealing skills do static damage based on the power value.
 	private final int _mpConsume;
 	private final int _mpInitialConsume;
 	private final int _hpConsume;
@@ -331,6 +332,7 @@ public abstract class L2Skill implements IChanceSkillTrigger
 		_traitType = set.getEnum("trait", SkillTraitType.class, SkillTraitType.NONE);
 		_staticReuse = set.getBool("staticReuse", false);
 		_staticHitTime = set.getBool("staticHitTime", false);
+		_staticDamage = set.getBool("staticDamage", false);
 		_isPotion = set.getBool("isPotion", false);
 		_mpConsume = set.getInteger("mpConsume", 0);
 		_mpInitialConsume = set.getInteger("mpInitialConsume", 0);
@@ -980,6 +982,11 @@ public abstract class L2Skill implements IChanceSkillTrigger
 		return _staticHitTime;
 	}
 	
+	public final boolean isStaticDamage()
+	{
+		return _staticDamage;
+	}
+	
 	/**
 	 * @return Returns the mpConsume.
 	 */

+ 3 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/skills/l2skills/L2SkillChargeDmg.java

@@ -94,10 +94,10 @@ public class L2SkillChargeDmg extends L2Skill
 			//boolean dual  = caster.isUsingDualWeapon();
 			byte shld = Formulas.calcShldUse(caster, target, this);
 			boolean crit = false;
-			if (this.getBaseCritRate() > 0)
+			if (getBaseCritRate() > 0 && !isStaticDamage())
 				crit = Formulas.calcCrit(this.getBaseCritRate() * 10 * BaseStats.STR.calcBonus(caster), true, target);
 			// damage calculation, crit is static 2x
-			double damage = Formulas.calcPhysDam(caster, target, this, shld, false, false, soul);
+			double damage = isStaticDamage() ? getPower() : Formulas.calcPhysDam(caster, target, this, shld, false, false, soul);
 			if (crit)
 				damage *= 2;
 			
@@ -136,7 +136,7 @@ public class L2SkillChargeDmg extends L2Skill
 					}
 				}
 				
-				double finalDamage = damage*modifier;
+				double finalDamage = isStaticDamage() ? damage : damage*modifier;
 				
 				if (Config.LOG_GAME_DAMAGE
 						&& caster instanceof L2Playable

+ 1 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/skills/l2skills/L2SkillDrain.java

@@ -103,8 +103,7 @@ public class L2SkillDrain extends L2Skill
 			
 			boolean mcrit = Formulas.calcMCrit(activeChar.getMCriticalHit(target, this));
 			byte shld = Formulas.calcShldUse(activeChar, target, this);
-			int damage = (int)Formulas.calcMagicDam(
-					activeChar, target, this, shld, ss, bss, mcrit);
+			int damage = isStaticDamage() ? (int)getPower() : (int)Formulas.calcMagicDam(activeChar, target, this, shld, ss, bss, mcrit);
 			
 			int _drain = 0;
 			int _cp = (int)target.getCurrentCp();