rendered paste bodyIndex: java/net/sf/l2j/gameserver/skills/Formulas.java
===================================================================
--- java/net/sf/l2j/gameserver/skills/Formulas.java (revision 835)
+++ java/net/sf/l2j/gameserver/skills/Formulas.java (working copy)
@@ -1413,22 +1413,31 @@
}
rate = value;
break;
+ case POISON:
+ case BLEED:
+ value = 3000 + (int) (7000 * ((float) skill.getLevel() / maxLevel));
+ modifier = 10 * target.getCON() / 3;
+ if (modifier > 0) value /= modifier;
+ value *= ssmodifier;
+ value /= 100;
+ break;
case MDOT:
case MANADAM:
case CONFUSION:
- mAtk = player.getMAtk(target, skill);
- mDef = target.getMDef(player, skill);
- value = 3000 + (int) (7000 * ((float) skill.getLevel() / maxLevel));
- if (mDef > 0 && mAtk > 0) value *= 0.6 * mAtk / mDef;
- modifier = 20 * target.getMEN() / 3;
- //_log.fine(player.getName()+" matk:"+mAtk+",mdef="+mDef+",value="+value+",modifier="+modifier+",maxlevel="+maxLevel+",level="+skill.getLevel());
- break;
case MUTE:
+ case DEBUFF:
+ case WEAKNESS:
+ case BETRAY:
+ case AGGREDUCE_CHAR:
+ case FEAR:
mAtk = player.getMAtk(target, skill);
mDef = target.getMDef(player, skill);
value = 3000 + (int) (7000 * ((float) skill.getLevel() / maxLevel));
if (mDef > 0 && mAtk > 0) value *= 0.6 * mAtk / mDef;
modifier = 20 * target.getMEN() / 3;
+ if (modifier > 0) value /= modifier;
+ value *= ssmodifier;
+ value /= 100;
//_log.fine(player.getName()+" matk:"+mAtk+",mdef="+mDef+",value="+value+",modifier="+modifier+",maxlevel="+maxLevel+",level="+skill.getLevel());
break;
case MDAM:
@@ -1477,7 +1486,7 @@
value = 5000 + (int) (5000 * ((float) skill.getLevel() / maxLevel));
mDef = target.calcStat(Stats.ROOT_RES, mDef, target, null);
if (mDef > 0 && mAtk > 0) value *= 0.6 * mAtk / mDef;
- modifier = 10 * target.getDEX() / 3;
+ modifier = 10 * target.getMEN() / 3;
if (modifier > 0) value /= modifier;
value *= ssmodifier;
value /= 100;
@@ -1570,12 +1579,15 @@
case SLEEP:
return (int) target.calcStat(Stats.SLEEP_RES, 0, target, null);
case MUTE:
- return (int) target.calcStat(Stats.MUTE_RES, 0, target, null);
case FEAR:
+ case BETRAY:
+ case AGGREDUCE_CHAR:
+ return (int) target.calcStat(Stats.DERANGEMENT_RES, 0, target, null);
case CONFUSION:
return (int) target.calcStat(Stats.CONFUSION_RES, 0, target, null);
- case CANCEL:
- return (int) target.calcStat(Stats.CONFUSION_RES, 0, target, null);
+ case DEBUFF:
+ case WEAKNESS:
+ return (int) target.calcStat(Stats.DEBUFF_RES, 0, target, null);
default:
return 0;
}
@@ -1587,13 +1599,20 @@
switch (type)
{
case STUN:
+ case BLEED:
+ case POISON:
return (int) (Math.sqrt(CONbonus[target.getCON()]) * 100 - 100);
- case ROOT:
- return (int) (Math.sqrt(DEXbonus[target.getDEX()]) * 100 - 100);
case SLEEP:
return (int) (Math.sqrt(WITbonus[target.getWIT()]) * 100 - 100);
+ case DEBUFF:
+ case WEAKNESS:
+ case ERASE:
+ case ROOT:
case MUTE:
+ case FEAR:
+ case BETRAY:
case CONFUSION:
+ case AGGREDUCE_CHAR:
case PARALYZE:
return (int) (Math.sqrt(MENbonus[target.getMEN()]) * 100 - 100);
default:
Index: java/net/sf/l2j/gameserver/skills/Stats.java
===================================================================
--- java/net/sf/l2j/gameserver/skills/Stats.java (revision 835)
+++ java/net/sf/l2j/gameserver/skills/Stats.java (working copy)
@@ -113,8 +113,7 @@
PARALYZE_RES ("paralyzeRes"),
ROOT_RES ("rootRes"),
SLEEP_RES ("sleepRes"),
- CONFUSION_RES ("confusionRes"),
- MUTE_RES ("muteRes"),
+ CONFUSION_RES ("confusionRes"),
MOVEMENT_RES ("movementRes"),
FIRE_RES ("fireRes"),
WIND_RES ("windRes"),
@@ -123,6 +122,8 @@
HOLY_RES ("holyRes"),
DARK_RES ("darkRes"),
CANCEL_RES ("cancelRes"), // Resistance for cancel type skills
+ DERANGEMENT_RES ("derangementRes"),
+ DEBUFF_RES ("debuffRes"),
NONE_WPN_RES ("noneWpnRes"), // Shields!!!
SWORD_WPN_RES ("swordWpnRes"),