-Implemented maxSkillDamage stat.

-Done skills Final Ultimate Defense (10017) & Party Rescue (10024) - maxSkillDamage & enchant groups.
-Small fix on Seed Talisman skill (added missing rEvas stat).

Contributed by NviX.
This commit is contained in:
MobiusDev
2015-06-30 19:12:17 +00:00
parent 04d53aedc9
commit 8a2faf6afc
9 changed files with 66 additions and 25 deletions

View File

@@ -77,6 +77,13 @@ public final class MagicalAttack extends AbstractEffect
if (damage > 0) if (damage > 0)
{ {
// reduce damage if target has maxdamage buff
double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
if (maxDamage > 0)
{
damage = (int) maxDamage;
}
// Manage attack or cast break of the target (calculating rate, sending message...) // Manage attack or cast break of the target (calculating rate, sending message...)
if (!target.isRaid() && Formulas.calcAtkBreak(target, damage)) if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
{ {

View File

@@ -79,6 +79,13 @@ public final class MagicalAttackByAbnormal extends AbstractEffect
if (damage > 0) if (damage > 0)
{ {
// reduce damage if target has maxdamage buff
double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
if (maxDamage > 0)
{
damage = (int) maxDamage;
}
// Manage attack or cast break of the target (calculating rate, sending message...) // Manage attack or cast break of the target (calculating rate, sending message...)
if (!target.isRaid() && Formulas.calcAtkBreak(target, damage)) if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
{ {

View File

@@ -83,6 +83,13 @@ public final class MagicalSoulAttack extends AbstractEffect
if (damage > 0) if (damage > 0)
{ {
// reduce damage if target has maxdamage buff
double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
if (maxDamage > 0)
{
damage = (int) maxDamage;
}
// Manage attack or cast break of the target (calculating rate, sending message...) // Manage attack or cast break of the target (calculating rate, sending message...)
if (!target.isRaid() && Formulas.calcAtkBreak(target, damage)) if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
{ {

View File

@@ -27,6 +27,7 @@ import com.l2jserver.gameserver.model.effects.L2EffectType;
import com.l2jserver.gameserver.model.skills.BuffInfo; import com.l2jserver.gameserver.model.skills.BuffInfo;
import com.l2jserver.gameserver.model.stats.BaseStats; import com.l2jserver.gameserver.model.stats.BaseStats;
import com.l2jserver.gameserver.model.stats.Formulas; import com.l2jserver.gameserver.model.stats.Formulas;
import com.l2jserver.gameserver.model.stats.Stats;
import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage; import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
@@ -102,6 +103,13 @@ public final class PhysicalAttack extends AbstractEffect
if (damage > 0) if (damage > 0)
{ {
// reduce damage if target has maxdamage buff
double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
if (maxDamage > 0)
{
damage = (int) maxDamage;
}
activeChar.sendDamageMessage(target, damage, false, crit, false); activeChar.sendDamageMessage(target, damage, false, crit, false);
target.reduceCurrentHp(damage, activeChar, info.getSkill()); target.reduceCurrentHp(damage, activeChar, info.getSkill());
target.notifyDamageReceived(damage, activeChar, info.getSkill(), crit, false); target.notifyDamageReceived(damage, activeChar, info.getSkill(), crit, false);

View File

@@ -27,6 +27,7 @@ import com.l2jserver.gameserver.model.effects.L2EffectType;
import com.l2jserver.gameserver.model.skills.BuffInfo; import com.l2jserver.gameserver.model.skills.BuffInfo;
import com.l2jserver.gameserver.model.stats.BaseStats; import com.l2jserver.gameserver.model.stats.BaseStats;
import com.l2jserver.gameserver.model.stats.Formulas; import com.l2jserver.gameserver.model.stats.Formulas;
import com.l2jserver.gameserver.model.stats.Stats;
import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage; import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
@@ -92,6 +93,13 @@ public final class PhysicalAttackHpLink extends AbstractEffect
if (damage > 0) if (damage > 0)
{ {
// reduce damage if target has maxdamage buff
double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
if (maxDamage > 0)
{
damage = (int) maxDamage;
}
activeChar.sendDamageMessage(target, damage, false, crit, false); activeChar.sendDamageMessage(target, damage, false, crit, false);
target.reduceCurrentHp(damage, activeChar, info.getSkill()); target.reduceCurrentHp(damage, activeChar, info.getSkill());
target.notifyDamageReceived(damage, activeChar, info.getSkill(), crit, false); target.notifyDamageReceived(damage, activeChar, info.getSkill(), crit, false);

View File

@@ -27,6 +27,7 @@ import com.l2jserver.gameserver.model.effects.L2EffectType;
import com.l2jserver.gameserver.model.skills.BuffInfo; import com.l2jserver.gameserver.model.skills.BuffInfo;
import com.l2jserver.gameserver.model.stats.BaseStats; import com.l2jserver.gameserver.model.stats.BaseStats;
import com.l2jserver.gameserver.model.stats.Formulas; import com.l2jserver.gameserver.model.stats.Formulas;
import com.l2jserver.gameserver.model.stats.Stats;
import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage; import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
@@ -108,6 +109,13 @@ public final class PhysicalSoulAttack extends AbstractEffect
if (damage > 0) if (damage > 0)
{ {
// reduce damage if target has maxdamage buff
double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
if (maxDamage > 0)
{
damage = (int) maxDamage;
}
activeChar.sendDamageMessage(target, damage, false, crit, false); activeChar.sendDamageMessage(target, damage, false, crit, false);
target.reduceCurrentHp(damage, activeChar, info.getSkill()); target.reduceCurrentHp(damage, activeChar, info.getSkill());
target.notifyDamageReceived(damage, activeChar, info.getSkill(), crit, false); target.notifyDamageReceived(damage, activeChar, info.getSkill(), crit, false);

View File

@@ -498,6 +498,7 @@
<add stat="accCombat" val="#addAccEvas" /> <add stat="accCombat" val="#addAccEvas" />
<add stat="accMagic" val="#addAccEvas" /> <add stat="accMagic" val="#addAccEvas" />
<add stat="pSkillEvas" val="#addAccEvas" /> <add stat="pSkillEvas" val="#addAccEvas" />
<add stat="rEvas" val="#addAccEvas" />
<add stat="mEvas" val="#addAccEvas" /> <add stat="mEvas" val="#addAccEvas" />
<add stat="absorbDam" val="#absorbDam" /> <add stat="absorbDam" val="#absorbDam" />
<add stat="pAtkSpd" val="#atkSpeed" /> <add stat="pAtkSpd" val="#atkSpeed" />

View File

@@ -750,7 +750,7 @@
<effect name="PhysicalAttack" /> <effect name="PhysicalAttack" />
</for> </for>
</skill> </skill>
<skill id="10017" levels="4" name="Final Ultimate Defense"> <skill id="10017" levels="4" name="Final Ultimate Defense" enchantGroup1="10" enchantGroup2="10" enchantGroup3="10" enchantGroup4="10" enchantGroup9="10">
<table name="#mpConsume">58 63 68 72</table> <table name="#mpConsume">58 63 68 72</table>
<table name="#ench1MpConsume">67 63 59 54 50 46 41 37 33 28</table> <table name="#ench1MpConsume">67 63 59 54 50 46 41 37 33 28</table>
<table name="#ench2abnormalTime">31 32 33 34 35 36 37 38 39 40</table> <table name="#ench2abnormalTime">31 32 33 34 35 36 37 38 39 40</table>
@@ -761,6 +761,7 @@
<table name="#reflectDam">40 60 80 100</table> <table name="#reflectDam">40 60 80 100</table>
<table name="#magicLvl">85 90 95 99</table> <table name="#magicLvl">85 90 95 99</table>
<table name="#maxSkillDamage">300 200 150 100</table> <table name="#maxSkillDamage">300 200 150 100</table>
<table name="#ench9Reuse"> 890000 880000 870000 860000 850000 840000 830000 820000 810000 800000 </table> <!-- NEED VERIFY -->
<set name="abnormalTime" val="30" /> <set name="abnormalTime" val="30" />
<set name="abnormalLvl" val="1" /> <set name="abnormalLvl" val="1" />
<set name="hitTime" val="1000" /> <set name="hitTime" val="1000" />
@@ -769,46 +770,37 @@
<set name="mpConsume" val="#mpConsume" /> <set name="mpConsume" val="#mpConsume" />
<set name="operateType" val="ACTIVE_CONTINUOUS" /> <set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="magicLvl" val="#magicLvl" /> <set name="magicLvl" val="#magicLvl" />
<set name="skillType" val="BUFF" />
<set name="targetType" val="SELF" /> <set name="targetType" val="SELF" />
<enchant1 name="mpConsume" val="#ench1MpConsume" /> <enchant1 name="mpConsume" val="#ench1MpConsume" />
<enchant2 name="abnormalTime" val="#ench2abnormalTime" /> <enchant2 name="abnormalTime" val="#ench2abnormalTime" />
<enchant9 name="reuseDelay" val="#ench9Reuse" />
<for> <for>
<effect name="Buff" val="0"> <effect name="Buff">
<add stat="pDef" val="#pDef" /> <add stat="pDef" val="#pDef" />
<add stat="mDef" val="#mDef" /> <add stat="mDef" val="#mDef" />
<add stat="reflectDam" val="#reflectDam" /> <add stat="reflectDam" val="#reflectDam" />
<add stat="cancelVuln" val="80" /> <add stat="cancelVuln" val="80" />
<!--<add stat="maxSkillDamage" val="#maxSkillDamage" />--> <add stat="maxSkillDamage" val="#maxSkillDamage" />
</effect> </effect>
</for> </for>
<enchant2for>
<effect name="Buff" val="0">
<add stat="pDef" val="10000" />
<add stat="mDef" val="10000" />
<add stat="reflectDam" val="100" />
<add stat="cancelVuln" val="80" />
<!--<add stat="maxSkillDamage" val="100" />-->
</effect>
</enchant2for>
<enchant3for> <enchant3for>
<effect name="Buff" val="0"> <effect name="Buff">
<add stat="pDef" val="10000" /> <add stat="pDef" val="10000" />
<add stat="mDef" val="10000" /> <add stat="mDef" val="10000" />
<add stat="reflectDam" val="100" /> <add stat="reflectDam" val="100" />
<add stat="cancelVuln" val="80" /> <add stat="cancelVuln" val="80" />
<add stat="runSpd" val="#ench3runSpd" /> <add stat="runSpd" val="#ench3runSpd" />
<!--<add stat="maxSkillDamage" val="100" />--> <add stat="maxSkillDamage" val="100" />
</effect> </effect>
</enchant3for> </enchant3for>
<enchant4for> <enchant4for>
<effect name="Buff" val="0"> <effect name="Buff">
<add stat="pDef" val="10000" /> <add stat="pDef" val="10000" />
<add stat="mDef" val="10000" /> <add stat="mDef" val="10000" />
<add stat="reflectDam" val="100" /> <add stat="reflectDam" val="100" />
<add stat="cancelVuln" val="80" /> <add stat="cancelVuln" val="80" />
<param SHOCK="#ench4stunRes" /> <param SHOCK="#ench4stunRes" />
<!--<add stat="maxSkillDamage" val="100" />--> <add stat="maxSkillDamage" val="100" />
</effect> </effect>
</enchant4for> </enchant4for>
</skill> </skill>
@@ -1019,7 +1011,7 @@
<effect abnormalLvl="1" abnormalTime="1" abnormalVisualEffect="sknockdown" effectPower="85" effectType="KNOCK_DOWN" name="KnockDown" val="0" /> <effect abnormalLvl="1" abnormalTime="1" abnormalVisualEffect="sknockdown" effectPower="85" effectType="KNOCK_DOWN" name="KnockDown" val="0" />
</for> </for>
</skill> </skill>
<skill id="10024" levels="1" name="Party Rescue"> <skill id="10024" levels="1" name="Party Rescue" enchantGroup1="10" enchantGroup2="10">
<table name="#ench1MpConsume">92 88 84 80 76 72 69 65 61 57</table> <table name="#ench1MpConsume">92 88 84 80 76 72 69 65 61 57</table>
<table name="#ench2HpHealPercent">1 2 3 4 5 6 7 8 9 10</table> <table name="#ench2HpHealPercent">1 2 3 4 5 6 7 8 9 10</table>
<set name="hitTime" val="3000" /> <set name="hitTime" val="3000" />
@@ -1038,18 +1030,18 @@
<using kind="SHIELD" /> <using kind="SHIELD" />
</cond> </cond>
<for> <for>
<effect name="TransferDamage" val="0"> <effect name="TransferDamage">
<add stat="transDamToPlayer" val="90" /> <add stat="transDamToPlayer" val="90" />
<!--<add stat="maxSkillDamage" val="10" />--> <add stat="maxSkillDamage" val="10" />
</effect> </effect>
<effect name="JumpToFriend" noicon="1" val="0" /> <effect name="JumpToFriend" noicon="1" />
</for> </for>
<enchant2for> <enchant2for>
<effect name="TransferDamage" val="0"> <effect name="TransferDamage">
<add stat="transDamToPlayer" val="90" /> <add stat="transDamToPlayer" val="90" />
<!--<add stat="maxSkillDamage" val="10" />--> <add stat="maxSkillDamage" val="10" />
</effect> </effect>
<effect name="JumpToFriend" noicon="1" val="0" /> <effect name="JumpToFriend" noicon="1" />
<effect name="HealPercent" noicon="1" val="#ench2HpHealPercent" /> <effect name="HealPercent" noicon="1" val="#ench2HpHealPercent" />
</enchant2for> </enchant2for>
</skill> </skill>

View File

@@ -206,7 +206,10 @@ public enum Stats
BROOCH_JEWELS("broochJewels"), BROOCH_JEWELS("broochJewels"),
// Summon Points // Summon Points
MAX_SUMMON_POINTS("summonPoints"); MAX_SUMMON_POINTS("summonPoints"),
// Max Skill Damage Receive
MAX_SKILL_DAMAGE("maxSkillDamage");
public static final int NUM_STATS = values().length; public static final int NUM_STATS = values().length;