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())
|
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>
|
<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">
|
||||||
|
@ -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())
|
||||||
{
|
{
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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">
|
||||||
|
@ -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())
|
||||||
{
|
{
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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">
|
||||||
|
@ -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())
|
||||||
{
|
{
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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())
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user