Extra checks for trigger skills by attack.
This commit is contained in:
parent
99897b17c9
commit
23d3883d34
@ -151,7 +151,11 @@ public final class TriggerSkillByAttack extends AbstractEffect
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -199,17 +199,6 @@
|
||||
<value level="10">110</value>
|
||||
</magicLvl>
|
||||
<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">
|
||||
<stat>STR</stat>
|
||||
</effect>
|
||||
@ -529,6 +518,17 @@
|
||||
<minAttackerLevel>1</minAttackerLevel>
|
||||
<maxAttackerLevel>107</maxAttackerLevel>
|
||||
</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>
|
||||
</skill>
|
||||
<skill id="10256" toLevel="10" name="Superior HP Mastery">
|
||||
@ -2319,27 +2319,35 @@
|
||||
<isMagic>4</isMagic>
|
||||
<targetType>TARGET</targetType>
|
||||
<affectScope>SINGLE</affectScope>
|
||||
<isTriggeredSkill>true</isTriggeredSkill>
|
||||
<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">
|
||||
<isCritical>true</isCritical>
|
||||
<attackerType>L2Character</attackerType>
|
||||
<minAttackerLevel>1</minAttackerLevel>
|
||||
<maxAttackerLevel>107</maxAttackerLevel>
|
||||
<minDamage>1</minDamage>
|
||||
<chance>20</chance>
|
||||
<targetType>SELF</targetType>
|
||||
<isCritical>true</isCritical>
|
||||
<skillId>10284</skillId> <!-- Lightning Force -->
|
||||
<minDamage>1</minDamage>
|
||||
<skillId>10284</skillId>
|
||||
<skillLevel>2</skillLevel>
|
||||
</effect>
|
||||
<effect name="TriggerSkillByAttack" fromLevel="2" toLevel="2">
|
||||
<isCritical>true</isCritical>
|
||||
<attackerType>L2Character</attackerType>
|
||||
<minAttackerLevel>1</minAttackerLevel>
|
||||
<maxAttackerLevel>107</maxAttackerLevel>
|
||||
<minDamage>1</minDamage>
|
||||
<chance>10</chance>
|
||||
<targetType>SELF</targetType>
|
||||
<isCritical>true</isCritical>
|
||||
<skillId>10284</skillId> <!-- Lightning Force -->
|
||||
<minDamage>1</minDamage>
|
||||
<skillId>10284</skillId>
|
||||
<skillLevel>3</skillLevel>
|
||||
</effect>
|
||||
<effect name="PAtk">
|
||||
|
@ -1109,6 +1109,20 @@ public final class CharEffectList
|
||||
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
|
||||
if (skill.isPassive())
|
||||
{
|
||||
|
@ -151,7 +151,11 @@ public final class TriggerSkillByAttack extends AbstractEffect
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -199,17 +199,6 @@
|
||||
<value level="10">110</value>
|
||||
</magicLvl>
|
||||
<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">
|
||||
<stat>STR</stat>
|
||||
</effect>
|
||||
@ -529,6 +518,17 @@
|
||||
<minAttackerLevel>1</minAttackerLevel>
|
||||
<maxAttackerLevel>107</maxAttackerLevel>
|
||||
</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>
|
||||
</skill>
|
||||
<skill id="10256" toLevel="10" name="Superior HP Mastery">
|
||||
@ -2342,27 +2342,35 @@
|
||||
<isMagic>4</isMagic>
|
||||
<targetType>TARGET</targetType>
|
||||
<affectScope>SINGLE</affectScope>
|
||||
<isTriggeredSkill>true</isTriggeredSkill>
|
||||
<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">
|
||||
<isCritical>true</isCritical>
|
||||
<attackerType>L2Character</attackerType>
|
||||
<minAttackerLevel>1</minAttackerLevel>
|
||||
<maxAttackerLevel>107</maxAttackerLevel>
|
||||
<minDamage>1</minDamage>
|
||||
<chance>20</chance>
|
||||
<targetType>SELF</targetType>
|
||||
<isCritical>true</isCritical>
|
||||
<skillId>10284</skillId> <!-- Lightning Force -->
|
||||
<minDamage>1</minDamage>
|
||||
<skillId>10284</skillId>
|
||||
<skillLevel>2</skillLevel>
|
||||
</effect>
|
||||
<effect name="TriggerSkillByAttack" fromLevel="2" toLevel="2">
|
||||
<isCritical>true</isCritical>
|
||||
<attackerType>L2Character</attackerType>
|
||||
<minAttackerLevel>1</minAttackerLevel>
|
||||
<maxAttackerLevel>107</maxAttackerLevel>
|
||||
<minDamage>1</minDamage>
|
||||
<chance>10</chance>
|
||||
<targetType>SELF</targetType>
|
||||
<isCritical>true</isCritical>
|
||||
<skillId>10284</skillId> <!-- Lightning Force -->
|
||||
<minDamage>1</minDamage>
|
||||
<skillId>10284</skillId>
|
||||
<skillLevel>3</skillLevel>
|
||||
</effect>
|
||||
<effect name="PAtk">
|
||||
|
@ -1109,6 +1109,20 @@ public final class CharEffectList
|
||||
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
|
||||
if (skill.isPassive())
|
||||
{
|
||||
|
@ -151,7 +151,11 @@ public final class TriggerSkillByAttack extends AbstractEffect
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -199,17 +199,6 @@
|
||||
<value level="10">110</value>
|
||||
</magicLvl>
|
||||
<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">
|
||||
<stat>STR</stat>
|
||||
</effect>
|
||||
@ -529,6 +518,17 @@
|
||||
<minAttackerLevel>1</minAttackerLevel>
|
||||
<maxAttackerLevel>107</maxAttackerLevel>
|
||||
</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>
|
||||
</skill>
|
||||
<skill id="10256" toLevel="10" name="Superior HP Mastery">
|
||||
@ -2347,27 +2347,35 @@
|
||||
<isMagic>4</isMagic>
|
||||
<targetType>TARGET</targetType>
|
||||
<affectScope>SINGLE</affectScope>
|
||||
<isTriggeredSkill>true</isTriggeredSkill>
|
||||
<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">
|
||||
<isCritical>false</isCritical>
|
||||
<attackerType>L2Character</attackerType>
|
||||
<minAttackerLevel>1</minAttackerLevel>
|
||||
<maxAttackerLevel>107</maxAttackerLevel>
|
||||
<minDamage>1</minDamage>
|
||||
<chance>20</chance>
|
||||
<targetType>SELF</targetType>
|
||||
<isCritical>true</isCritical>
|
||||
<skillId>10284</skillId> <!-- Lightning Force -->
|
||||
<minDamage>1</minDamage>
|
||||
<skillId>10284</skillId>
|
||||
<skillLevel>2</skillLevel>
|
||||
</effect>
|
||||
<effect name="TriggerSkillByAttack" fromLevel="2" toLevel="2">
|
||||
<isCritical>false</isCritical>
|
||||
<attackerType>L2Character</attackerType>
|
||||
<minAttackerLevel>1</minAttackerLevel>
|
||||
<maxAttackerLevel>107</maxAttackerLevel>
|
||||
<minDamage>1</minDamage>
|
||||
<chance>10</chance>
|
||||
<targetType>SELF</targetType>
|
||||
<isCritical>true</isCritical>
|
||||
<skillId>10284</skillId> <!-- Lightning Force -->
|
||||
<minDamage>1</minDamage>
|
||||
<skillId>10284</skillId>
|
||||
<skillLevel>3</skillLevel>
|
||||
</effect>
|
||||
<effect name="PAtk">
|
||||
|
@ -1109,6 +1109,20 @@ public final class CharEffectList
|
||||
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
|
||||
if (skill.isPassive())
|
||||
{
|
||||
|
@ -151,7 +151,11 @@ public final class TriggerSkillByAttack extends AbstractEffect
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1109,6 +1109,20 @@ public final class CharEffectList
|
||||
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
|
||||
if (skill.isPassive())
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user