Extra checks for trigger skills by attack.

This commit is contained in:
MobiusDev 2017-09-21 22:04:12 +00:00
parent 99897b17c9
commit 23d3883d34
11 changed files with 151 additions and 55 deletions

View File

@ -151,7 +151,11 @@ public final class TriggerSkillByAttack extends AbstractEffect
if ((target != null) && target.isCharacter()) if ((target != null) && target.isCharacter())
{ {
SkillCaster.triggerCast(event.getAttacker(), (L2Character) target, triggerSkill); final BuffInfo info = ((L2Character) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId());
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
{
SkillCaster.triggerCast(event.getAttacker(), (L2Character) target, triggerSkill);
}
} }
} }

View File

@ -199,17 +199,6 @@
<value level="10">110</value> <value level="10">110</value>
</magicLvl> </magicLvl>
<effects> <effects>
<effect name="TriggerSkillByAttack">
<attackerType>L2Character</attackerType>
<minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel>
<minDamage>1</minDamage>
<chance>50</chance>
<targetType>SELF</targetType>
<isCritical>true</isCritical>
<skillId>10284</skillId> <!-- Lightning Force -->
<skillLevel>1</skillLevel>
</effect>
<effect name="SkillCritical"> <effect name="SkillCritical">
<stat>STR</stat> <stat>STR</stat>
</effect> </effect>
@ -529,6 +518,17 @@
<minAttackerLevel>1</minAttackerLevel> <minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel> <maxAttackerLevel>107</maxAttackerLevel>
</effect> </effect>
<effect name="TriggerSkillByAttack">
<isCritical>true</isCritical>
<attackerType>L2Character</attackerType>
<minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel>
<chance>50</chance>
<targetType>SELF</targetType>
<minDamage>1</minDamage>
<skillId>10284</skillId>
<skillLevel>1</skillLevel>
</effect>
</effects> </effects>
</skill> </skill>
<skill id="10256" toLevel="10" name="Superior HP Mastery"> <skill id="10256" toLevel="10" name="Superior HP Mastery">
@ -2319,27 +2319,35 @@
<isMagic>4</isMagic> <isMagic>4</isMagic>
<targetType>TARGET</targetType> <targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope> <affectScope>SINGLE</affectScope>
<isTriggeredSkill>true</isTriggeredSkill>
<effects> <effects>
<effect name="DispelBySlotProbability">
<dispel>WEAPON_MASTER_SPECIAL</dispel>
<rate>100</rate>
</effect>
<effect name="BlockAbnormalSlot" fromLevel="3" toLevel="3">
<slot>WEAPON_MASTER_SPECIAL</slot>
</effect>
<effect name="TriggerSkillByAttack" fromLevel="1" toLevel="1"> <effect name="TriggerSkillByAttack" fromLevel="1" toLevel="1">
<isCritical>true</isCritical>
<attackerType>L2Character</attackerType> <attackerType>L2Character</attackerType>
<minAttackerLevel>1</minAttackerLevel> <minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel> <maxAttackerLevel>107</maxAttackerLevel>
<minDamage>1</minDamage>
<chance>20</chance> <chance>20</chance>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<isCritical>true</isCritical> <minDamage>1</minDamage>
<skillId>10284</skillId> <!-- Lightning Force --> <skillId>10284</skillId>
<skillLevel>2</skillLevel> <skillLevel>2</skillLevel>
</effect> </effect>
<effect name="TriggerSkillByAttack" fromLevel="2" toLevel="2"> <effect name="TriggerSkillByAttack" fromLevel="2" toLevel="2">
<isCritical>true</isCritical>
<attackerType>L2Character</attackerType> <attackerType>L2Character</attackerType>
<minAttackerLevel>1</minAttackerLevel> <minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel> <maxAttackerLevel>107</maxAttackerLevel>
<minDamage>1</minDamage>
<chance>10</chance> <chance>10</chance>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<isCritical>true</isCritical> <minDamage>1</minDamage>
<skillId>10284</skillId> <!-- Lightning Force --> <skillId>10284</skillId>
<skillLevel>3</skillLevel> <skillLevel>3</skillLevel>
</effect> </effect>
<effect name="PAtk"> <effect name="PAtk">

View File

@ -1109,6 +1109,20 @@ public final class CharEffectList
return; return;
} }
// Fix for stacking trigger skills
if (skill.isTriggeredSkill())
{
final BuffInfo triggerInfo = info.getEffected().getEffectList().getBuffInfoBySkillId(skill.getId());
if (triggerInfo != null)
{
if (triggerInfo.getSkill().getLevel() >= skill.getLevel())
{
return;
}
stopAndRemove(triggerInfo);
}
}
// Passive effects are treated specially // Passive effects are treated specially
if (skill.isPassive()) if (skill.isPassive())
{ {

View File

@ -151,7 +151,11 @@ public final class TriggerSkillByAttack extends AbstractEffect
if ((target != null) && target.isCharacter()) if ((target != null) && target.isCharacter())
{ {
SkillCaster.triggerCast(event.getAttacker(), (L2Character) target, triggerSkill); final BuffInfo info = ((L2Character) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId());
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
{
SkillCaster.triggerCast(event.getAttacker(), (L2Character) target, triggerSkill);
}
} }
} }

View File

@ -199,17 +199,6 @@
<value level="10">110</value> <value level="10">110</value>
</magicLvl> </magicLvl>
<effects> <effects>
<effect name="TriggerSkillByAttack">
<attackerType>L2Character</attackerType>
<minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel>
<minDamage>1</minDamage>
<chance>50</chance>
<targetType>SELF</targetType>
<isCritical>true</isCritical>
<skillId>10284</skillId> <!-- Lightning Force -->
<skillLevel>1</skillLevel>
</effect>
<effect name="SkillCritical"> <effect name="SkillCritical">
<stat>STR</stat> <stat>STR</stat>
</effect> </effect>
@ -529,6 +518,17 @@
<minAttackerLevel>1</minAttackerLevel> <minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel> <maxAttackerLevel>107</maxAttackerLevel>
</effect> </effect>
<effect name="TriggerSkillByAttack">
<isCritical>true</isCritical>
<attackerType>L2Character</attackerType>
<minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel>
<chance>50</chance>
<targetType>SELF</targetType>
<minDamage>1</minDamage>
<skillId>10284</skillId>
<skillLevel>1</skillLevel>
</effect>
</effects> </effects>
</skill> </skill>
<skill id="10256" toLevel="10" name="Superior HP Mastery"> <skill id="10256" toLevel="10" name="Superior HP Mastery">
@ -2342,27 +2342,35 @@
<isMagic>4</isMagic> <isMagic>4</isMagic>
<targetType>TARGET</targetType> <targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope> <affectScope>SINGLE</affectScope>
<isTriggeredSkill>true</isTriggeredSkill>
<effects> <effects>
<effect name="DispelBySlotProbability">
<dispel>WEAPON_MASTER_SPECIAL</dispel>
<rate>100</rate>
</effect>
<effect name="BlockAbnormalSlot" fromLevel="3" toLevel="3">
<slot>WEAPON_MASTER_SPECIAL</slot>
</effect>
<effect name="TriggerSkillByAttack" fromLevel="1" toLevel="1"> <effect name="TriggerSkillByAttack" fromLevel="1" toLevel="1">
<isCritical>true</isCritical>
<attackerType>L2Character</attackerType> <attackerType>L2Character</attackerType>
<minAttackerLevel>1</minAttackerLevel> <minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel> <maxAttackerLevel>107</maxAttackerLevel>
<minDamage>1</minDamage>
<chance>20</chance> <chance>20</chance>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<isCritical>true</isCritical> <minDamage>1</minDamage>
<skillId>10284</skillId> <!-- Lightning Force --> <skillId>10284</skillId>
<skillLevel>2</skillLevel> <skillLevel>2</skillLevel>
</effect> </effect>
<effect name="TriggerSkillByAttack" fromLevel="2" toLevel="2"> <effect name="TriggerSkillByAttack" fromLevel="2" toLevel="2">
<isCritical>true</isCritical>
<attackerType>L2Character</attackerType> <attackerType>L2Character</attackerType>
<minAttackerLevel>1</minAttackerLevel> <minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel> <maxAttackerLevel>107</maxAttackerLevel>
<minDamage>1</minDamage>
<chance>10</chance> <chance>10</chance>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<isCritical>true</isCritical> <minDamage>1</minDamage>
<skillId>10284</skillId> <!-- Lightning Force --> <skillId>10284</skillId>
<skillLevel>3</skillLevel> <skillLevel>3</skillLevel>
</effect> </effect>
<effect name="PAtk"> <effect name="PAtk">

View File

@ -1109,6 +1109,20 @@ public final class CharEffectList
return; return;
} }
// Fix for stacking trigger skills
if (skill.isTriggeredSkill())
{
final BuffInfo triggerInfo = info.getEffected().getEffectList().getBuffInfoBySkillId(skill.getId());
if (triggerInfo != null)
{
if (triggerInfo.getSkill().getLevel() >= skill.getLevel())
{
return;
}
stopAndRemove(triggerInfo);
}
}
// Passive effects are treated specially // Passive effects are treated specially
if (skill.isPassive()) if (skill.isPassive())
{ {

View File

@ -151,7 +151,11 @@ public final class TriggerSkillByAttack extends AbstractEffect
if ((target != null) && target.isCharacter()) if ((target != null) && target.isCharacter())
{ {
SkillCaster.triggerCast(event.getAttacker(), (L2Character) target, triggerSkill); final BuffInfo info = ((L2Character) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId());
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
{
SkillCaster.triggerCast(event.getAttacker(), (L2Character) target, triggerSkill);
}
} }
} }

View File

@ -199,17 +199,6 @@
<value level="10">110</value> <value level="10">110</value>
</magicLvl> </magicLvl>
<effects> <effects>
<effect name="TriggerSkillByAttack">
<attackerType>L2Character</attackerType>
<minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel>
<minDamage>1</minDamage>
<chance>50</chance>
<targetType>SELF</targetType>
<isCritical>true</isCritical>
<skillId>10284</skillId> <!-- Lightning Force -->
<skillLevel>1</skillLevel>
</effect>
<effect name="SkillCritical"> <effect name="SkillCritical">
<stat>STR</stat> <stat>STR</stat>
</effect> </effect>
@ -529,6 +518,17 @@
<minAttackerLevel>1</minAttackerLevel> <minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel> <maxAttackerLevel>107</maxAttackerLevel>
</effect> </effect>
<effect name="TriggerSkillByAttack">
<isCritical>false</isCritical>
<attackerType>L2Character</attackerType>
<minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel>
<chance>50</chance>
<targetType>SELF</targetType>
<minDamage>1</minDamage>
<skillId>10284</skillId>
<skillLevel>1</skillLevel>
</effect>
</effects> </effects>
</skill> </skill>
<skill id="10256" toLevel="10" name="Superior HP Mastery"> <skill id="10256" toLevel="10" name="Superior HP Mastery">
@ -2347,27 +2347,35 @@
<isMagic>4</isMagic> <isMagic>4</isMagic>
<targetType>TARGET</targetType> <targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope> <affectScope>SINGLE</affectScope>
<isTriggeredSkill>true</isTriggeredSkill>
<effects> <effects>
<effect name="DispelBySlotProbability">
<dispel>WEAPON_MASTER_SPECIAL</dispel>
<rate>100</rate>
</effect>
<effect name="BlockAbnormalSlot" fromLevel="3" toLevel="3">
<slot>WEAPON_MASTER_SPECIAL</slot>
</effect>
<effect name="TriggerSkillByAttack" fromLevel="1" toLevel="1"> <effect name="TriggerSkillByAttack" fromLevel="1" toLevel="1">
<isCritical>false</isCritical>
<attackerType>L2Character</attackerType> <attackerType>L2Character</attackerType>
<minAttackerLevel>1</minAttackerLevel> <minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel> <maxAttackerLevel>107</maxAttackerLevel>
<minDamage>1</minDamage>
<chance>20</chance> <chance>20</chance>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<isCritical>true</isCritical> <minDamage>1</minDamage>
<skillId>10284</skillId> <!-- Lightning Force --> <skillId>10284</skillId>
<skillLevel>2</skillLevel> <skillLevel>2</skillLevel>
</effect> </effect>
<effect name="TriggerSkillByAttack" fromLevel="2" toLevel="2"> <effect name="TriggerSkillByAttack" fromLevel="2" toLevel="2">
<isCritical>false</isCritical>
<attackerType>L2Character</attackerType> <attackerType>L2Character</attackerType>
<minAttackerLevel>1</minAttackerLevel> <minAttackerLevel>1</minAttackerLevel>
<maxAttackerLevel>107</maxAttackerLevel> <maxAttackerLevel>107</maxAttackerLevel>
<minDamage>1</minDamage>
<chance>10</chance> <chance>10</chance>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<isCritical>true</isCritical> <minDamage>1</minDamage>
<skillId>10284</skillId> <!-- Lightning Force --> <skillId>10284</skillId>
<skillLevel>3</skillLevel> <skillLevel>3</skillLevel>
</effect> </effect>
<effect name="PAtk"> <effect name="PAtk">

View File

@ -1109,6 +1109,20 @@ public final class CharEffectList
return; return;
} }
// Fix for stacking trigger skills
if (skill.isTriggeredSkill())
{
final BuffInfo triggerInfo = info.getEffected().getEffectList().getBuffInfoBySkillId(skill.getId());
if (triggerInfo != null)
{
if (triggerInfo.getSkill().getLevel() >= skill.getLevel())
{
return;
}
stopAndRemove(triggerInfo);
}
}
// Passive effects are treated specially // Passive effects are treated specially
if (skill.isPassive()) if (skill.isPassive())
{ {

View File

@ -151,7 +151,11 @@ public final class TriggerSkillByAttack extends AbstractEffect
if ((target != null) && target.isCharacter()) if ((target != null) && target.isCharacter())
{ {
SkillCaster.triggerCast(event.getAttacker(), (L2Character) target, triggerSkill); final BuffInfo info = ((L2Character) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId());
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
{
SkillCaster.triggerCast(event.getAttacker(), (L2Character) target, triggerSkill);
}
} }
} }

View File

@ -1109,6 +1109,20 @@ public final class CharEffectList
return; return;
} }
// Fix for stacking trigger skills
if (skill.isTriggeredSkill())
{
final BuffInfo triggerInfo = info.getEffected().getEffectList().getBuffInfoBySkillId(skill.getId());
if (triggerInfo != null)
{
if (triggerInfo.getSkill().getLevel() >= skill.getLevel())
{
return;
}
stopAndRemove(triggerInfo);
}
}
// Passive effects are treated specially // Passive effects are treated specially
if (skill.isPassive()) if (skill.isPassive())
{ {