Addition of CallLearnedSkill effect.

Contributed by Kazumi.
This commit is contained in:
MobiusDev 2019-02-16 15:26:21 +00:00
parent 25c8b60c26
commit 4e03ba0932
32 changed files with 709 additions and 274 deletions

View File

@ -66,6 +66,7 @@ public final class EffectMasterHandler
EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new); EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new);
EffectHandler.getInstance().registerHandler("Breath", Breath::new); EffectHandler.getInstance().registerHandler("Breath", Breath::new);
EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new); EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new);
EffectHandler.getInstance().registerHandler("CallLearnedSkill", CallLearnedSkill::new);
EffectHandler.getInstance().registerHandler("CallParty", CallParty::new); EffectHandler.getInstance().registerHandler("CallParty", CallParty::new);
EffectHandler.getInstance().registerHandler("CallPc", CallPc::new); EffectHandler.getInstance().registerHandler("CallPc", CallPc::new);
EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new); EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new);

View File

@ -0,0 +1,54 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
/**
* Call Learned Skill by Level effect implementation.
* @author Kazumi
*/
public final class CallLearnedSkill extends AbstractEffect
{
private final int _skillId;
public CallLearnedSkill(StatsSet params)
{
_skillId = params.getInt("skillId");
}
@Override
public boolean isInstant()
{
return true;
}
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
final Skill knownSkill = effector.getKnownSkill(_skillId);
if (knownSkill != null)
{
SkillCaster.triggerCast(effector, effected, knownSkill);
}
}
}

View File

@ -35,6 +35,7 @@ BonusDropRate: Bonus chance for dropping items. (l2jmobius)
BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius) BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius)
Breath: Underwater breathing stat. Breath: Underwater breathing stat.
BuffBlock: Blocks target from receiving buffs. BuffBlock: Blocks target from receiving buffs.
CallLearnedSkill: Calls existing learned skill. (l2jmobius)
CallParty: Recalls whole party. CallParty: Recalls whole party.
CallPc: Recalls a Player. CallPc: Recalls a Player.
CallRandomSkill: Triggers a random skill. (l2jmobius) CallRandomSkill: Triggers a random skill. (l2jmobius)

View File

@ -66,6 +66,7 @@ public final class EffectMasterHandler
EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new); EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new);
EffectHandler.getInstance().registerHandler("Breath", Breath::new); EffectHandler.getInstance().registerHandler("Breath", Breath::new);
EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new); EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new);
EffectHandler.getInstance().registerHandler("CallLearnedSkill", CallLearnedSkill::new);
EffectHandler.getInstance().registerHandler("CallParty", CallParty::new); EffectHandler.getInstance().registerHandler("CallParty", CallParty::new);
EffectHandler.getInstance().registerHandler("CallPc", CallPc::new); EffectHandler.getInstance().registerHandler("CallPc", CallPc::new);
EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new); EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new);

View File

@ -0,0 +1,54 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
/**
* Call Learned Skill by Level effect implementation.
* @author Kazumi
*/
public final class CallLearnedSkill extends AbstractEffect
{
private final int _skillId;
public CallLearnedSkill(StatsSet params)
{
_skillId = params.getInt("skillId");
}
@Override
public boolean isInstant()
{
return true;
}
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
final Skill knownSkill = effector.getKnownSkill(_skillId);
if (knownSkill != null)
{
SkillCaster.triggerCast(effector, effected, knownSkill);
}
}
}

View File

@ -35,6 +35,7 @@ BonusDropRate: Bonus chance for dropping items. (l2jmobius)
BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius) BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius)
Breath: Underwater breathing stat. Breath: Underwater breathing stat.
BuffBlock: Blocks target from receiving buffs. BuffBlock: Blocks target from receiving buffs.
CallLearnedSkill: Calls existing learned skill. (l2jmobius)
CallParty: Recalls whole party. CallParty: Recalls whole party.
CallPc: Recalls a Player. CallPc: Recalls a Player.
CallRandomSkill: Triggers a random skill. (l2jmobius) CallRandomSkill: Triggers a random skill. (l2jmobius)

View File

@ -66,6 +66,7 @@ public final class EffectMasterHandler
EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new); EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new);
EffectHandler.getInstance().registerHandler("Breath", Breath::new); EffectHandler.getInstance().registerHandler("Breath", Breath::new);
EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new); EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new);
EffectHandler.getInstance().registerHandler("CallLearnedSkill", CallLearnedSkill::new);
EffectHandler.getInstance().registerHandler("CallParty", CallParty::new); EffectHandler.getInstance().registerHandler("CallParty", CallParty::new);
EffectHandler.getInstance().registerHandler("CallPc", CallPc::new); EffectHandler.getInstance().registerHandler("CallPc", CallPc::new);
EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new); EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new);

View File

@ -0,0 +1,54 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
/**
* Call Learned Skill by Level effect implementation.
* @author Kazumi
*/
public final class CallLearnedSkill extends AbstractEffect
{
private final int _skillId;
public CallLearnedSkill(StatsSet params)
{
_skillId = params.getInt("skillId");
}
@Override
public boolean isInstant()
{
return true;
}
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
final Skill knownSkill = effector.getKnownSkill(_skillId);
if (knownSkill != null)
{
SkillCaster.triggerCast(effector, effected, knownSkill);
}
}
}

View File

@ -35,6 +35,7 @@ BonusDropRate: Bonus chance for dropping items. (l2jmobius)
BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius) BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius)
Breath: Underwater breathing stat. Breath: Underwater breathing stat.
BuffBlock: Blocks target from receiving buffs. BuffBlock: Blocks target from receiving buffs.
CallLearnedSkill: Calls existing learned skill. (l2jmobius)
CallParty: Recalls whole party. CallParty: Recalls whole party.
CallPc: Recalls a Player. CallPc: Recalls a Player.
CallRandomSkill: Triggers a random skill. (l2jmobius) CallRandomSkill: Triggers a random skill. (l2jmobius)

View File

@ -66,6 +66,7 @@ public final class EffectMasterHandler
EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new); EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new);
EffectHandler.getInstance().registerHandler("Breath", Breath::new); EffectHandler.getInstance().registerHandler("Breath", Breath::new);
EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new); EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new);
EffectHandler.getInstance().registerHandler("CallLearnedSkill", CallLearnedSkill::new);
EffectHandler.getInstance().registerHandler("CallParty", CallParty::new); EffectHandler.getInstance().registerHandler("CallParty", CallParty::new);
EffectHandler.getInstance().registerHandler("CallPc", CallPc::new); EffectHandler.getInstance().registerHandler("CallPc", CallPc::new);
EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new); EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new);

View File

@ -0,0 +1,54 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
/**
* Call Learned Skill by Level effect implementation.
* @author Kazumi
*/
public final class CallLearnedSkill extends AbstractEffect
{
private final int _skillId;
public CallLearnedSkill(StatsSet params)
{
_skillId = params.getInt("skillId");
}
@Override
public boolean isInstant()
{
return true;
}
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
final Skill knownSkill = effector.getKnownSkill(_skillId);
if (knownSkill != null)
{
SkillCaster.triggerCast(effector, effected, knownSkill);
}
}
}

View File

@ -35,6 +35,7 @@ BonusDropRate: Bonus chance for dropping items. (l2jmobius)
BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius) BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius)
Breath: Underwater breathing stat. Breath: Underwater breathing stat.
BuffBlock: Blocks target from receiving buffs. BuffBlock: Blocks target from receiving buffs.
CallLearnedSkill: Calls existing learned skill. (l2jmobius)
CallParty: Recalls whole party. CallParty: Recalls whole party.
CallPc: Recalls a Player. CallPc: Recalls a Player.
CallRandomSkill: Triggers a random skill. (l2jmobius) CallRandomSkill: Triggers a random skill. (l2jmobius)

View File

@ -67,6 +67,7 @@ public final class EffectMasterHandler
EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new); EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new);
EffectHandler.getInstance().registerHandler("Breath", Breath::new); EffectHandler.getInstance().registerHandler("Breath", Breath::new);
EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new); EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new);
EffectHandler.getInstance().registerHandler("CallLearnedSkill", CallLearnedSkill::new);
EffectHandler.getInstance().registerHandler("CallParty", CallParty::new); EffectHandler.getInstance().registerHandler("CallParty", CallParty::new);
EffectHandler.getInstance().registerHandler("CallPc", CallPc::new); EffectHandler.getInstance().registerHandler("CallPc", CallPc::new);
EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new); EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new);

View File

@ -0,0 +1,54 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
/**
* Call Learned Skill by Level effect implementation.
* @author Kazumi
*/
public final class CallLearnedSkill extends AbstractEffect
{
private final int _skillId;
public CallLearnedSkill(StatsSet params)
{
_skillId = params.getInt("skillId");
}
@Override
public boolean isInstant()
{
return true;
}
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
final Skill knownSkill = effector.getKnownSkill(_skillId);
if (knownSkill != null)
{
SkillCaster.triggerCast(effector, effected, knownSkill);
}
}
}

View File

@ -605,38 +605,31 @@
<!-- Casts owned Horn, Drum, Organ, and Guitar Melodies, all at once. --> <!-- Casts owned Horn, Drum, Organ, and Guitar Melodies, all at once. -->
<icon>icon.skill19421</icon> <icon>icon.skill19421</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<castRange>1000</castRange>
<effectPoint>696</effectPoint>
<mpConsume>140</mpConsume> <mpConsume>140</mpConsume>
<effectRange>1500</effectRange>
<hitTime>4000</hitTime>
<coolTime>300</coolTime>
<reuseDelay>2000</reuseDelay> <reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime> <magicLvl>97</magicLvl>
<abnormalTime>-1</abnormalTime> <isMagic>1</isMagic>
<abnormalType>MULTI_BUFF</abnormalType>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectRange>1000</affectRange>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<affectScope>PARTY</affectScope> <affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject> <affectObject>FRIEND</affectObject>
<isMagic>22</isMagic> <affectRange>1000</affectRange>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>103</magicLvl>
<effects> <effects>
<effect name="CallSkill"> <!-- Horn Melody --> <effect name="CallLearnedSkill">
<skillId>11517</skillId> <!-- Horn Melody --> <skillId>11517</skillId> <!-- Horn Melody -->
<skillLevel>0</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Drum Melody --> <effect name="CallLearnedSkill">
<skillId>11518</skillId> <!-- Drum Melody --> <skillId>11518</skillId> <!-- Drum Melody -->
<skillLevel>0</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Pipe Organ Melody --> <effect name="CallLearnedSkill">
<skillId>11519</skillId> <!-- Pipe Organ Melody --> <skillId>11519</skillId> <!-- Pipe Organ Melody -->
<skillLevel>0</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Guitar Melody --> <effect name="CallLearnedSkill">
<skillId>11520</skillId> <!-- Guitar Melody --> <skillId>11520</skillId> <!-- Guitar Melody -->
<skillLevel>0</skillLevel>
</effect> </effect>
</effects> </effects>
</skill> </skill>
@ -644,33 +637,28 @@
<!-- Casts owned Combat, Marching, and Relax Sonatas, all at once. --> <!-- Casts owned Combat, Marching, and Relax Sonatas, all at once. -->
<icon>icon.skill19422</icon> <icon>icon.skill19422</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<castRange>1000</castRange>
<effectPoint>696</effectPoint>
<mpConsume>140</mpConsume> <mpConsume>140</mpConsume>
<effectRange>1500</effectRange>
<hitTime>4000</hitTime>
<coolTime>300</coolTime>
<reuseDelay>2000</reuseDelay> <reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime> <magicLvl>97</magicLvl>
<abnormalTime>-1</abnormalTime> <isMagic>1</isMagic>
<abnormalType>MULTI_BUFF</abnormalType>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<affectRange>1000</affectRange>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<affectScope>PARTY</affectScope> <affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject> <affectObject>FRIEND</affectObject>
<isMagic>22</isMagic> <affectRange>1000</affectRange>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>101</magicLvl>
<effects> <effects>
<effect name="CallSkill"> <!-- Prevailing Sonata --> <effect name="CallLearnedSkill">
<skillId>11529</skillId> <!-- Prevailing Sonata --> <skillId>11529</skillId> <!-- Prevailing Sonata -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Daring Sonata --> <effect name="CallLearnedSkill">
<skillId>11530</skillId> <!-- Daring Sonata --> <skillId>11530</skillId> <!-- Daring Sonata -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Refreshing Sonata --> <effect name="CallLearnedSkill">
<skillId>11532</skillId> <!-- Refreshing Sonata --> <skillId>11532</skillId> <!-- Refreshing Sonata -->
<skillLevel>1</skillLevel>
</effect> </effect>
</effects> </effects>
</skill> </skill>
@ -678,33 +666,28 @@
<!-- Casts owned Prevailing Song, Marching Song, and Relax Song, all at once. --> <!-- Casts owned Prevailing Song, Marching Song, and Relax Song, all at once. -->
<icon>icon.skill19423</icon> <icon>icon.skill19423</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<castRange>1000</castRange>
<effectPoint>696</effectPoint>
<mpConsume>140</mpConsume> <mpConsume>140</mpConsume>
<effectRange>1500</effectRange>
<hitTime>4000</hitTime>
<coolTime>300</coolTime>
<reuseDelay>2000</reuseDelay> <reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime> <magicLvl>97</magicLvl>
<abnormalTime>-1</abnormalTime> <isMagic>1</isMagic>
<abnormalType>MULTI_BUFF</abnormalType>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<affectRange>1000</affectRange>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<affectScope>PARTY</affectScope> <affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject> <affectObject>FRIEND</affectObject>
<isMagic>22</isMagic> <affectRange>1000</affectRange>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>101</magicLvl>
<effects> <effects>
<effect name="CallSkill"> <!-- Prevailing Song --> <effect name="CallLearnedSkill">
<skillId>11607</skillId> <!-- Prevailing Song --> <skillId>11607</skillId> <!-- Prevailing Song -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Daring Song --> <effect name="CallLearnedSkill">
<skillId>11608</skillId> <!-- Daring Song --> <skillId>11608</skillId> <!-- Daring Song -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Refreshing Song --> <effect name="CallLearnedSkill">
<skillId>11609</skillId> <!-- Refreshing Song --> <skillId>11609</skillId> <!-- Refreshing Song -->
<skillLevel>1</skillLevel>
</effect> </effect>
</effects> </effects>
</skill> </skill>
@ -712,33 +695,28 @@
<!-- Casts owned Prevailing Dance, Marching Dance, and Relax Dance, all at once. --> <!-- Casts owned Prevailing Dance, Marching Dance, and Relax Dance, all at once. -->
<icon>icon.skill19424</icon> <icon>icon.skill19424</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<castRange>1000</castRange>
<effectPoint>696</effectPoint>
<mpConsume>140</mpConsume> <mpConsume>140</mpConsume>
<effectRange>1500</effectRange>
<hitTime>4000</hitTime>
<coolTime>300</coolTime>
<reuseDelay>2000</reuseDelay> <reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime> <magicLvl>97</magicLvl>
<abnormalTime>-1</abnormalTime> <isMagic>1</isMagic>
<abnormalType>MULTI_BUFF</abnormalType>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<affectRange>1000</affectRange>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<affectScope>PARTY</affectScope> <affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject> <affectObject>FRIEND</affectObject>
<isMagic>22</isMagic> <affectRange>1000</affectRange>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>101</magicLvl>
<effects> <effects>
<effect name="CallSkill"> <!-- Prevailing Dance --> <effect name="CallLearnedSkill">
<skillId>11610</skillId> <!-- Prevailing Dance --> <skillId>11610</skillId> <!-- Prevailing Dance -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Daring Dance --> <effect name="CallLearnedSkill">
<skillId>11611</skillId> <!-- Daring Dance --> <skillId>11611</skillId> <!-- Daring Dance -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Refreshing Dance --> <effect name="CallLearnedSkill">
<skillId>11612</skillId> <!-- Refreshing Dance --> <skillId>11612</skillId> <!-- Refreshing Dance -->
<skillLevel>1</skillLevel>
</effect> </effect>
</effects> </effects>
</skill> </skill>
@ -746,33 +724,26 @@
<!-- Casts owned Elemental Resistance, debuff, and Mental Attack Resistance, all at once. --> <!-- Casts owned Elemental Resistance, debuff, and Mental Attack Resistance, all at once. -->
<icon>icon.skill19425</icon> <icon>icon.skill19425</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<mpConsume>0</mpConsume> <castRange>1000</castRange>
<effectPoint>696</effectPoint>
<mpConsume>140</mpConsume>
<effectRange>1500</effectRange>
<hitTime>4000</hitTime>
<coolTime>300</coolTime>
<reuseDelay>2000</reuseDelay> <reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime> <magicLvl>97</magicLvl>
<abnormalTime>-1</abnormalTime> <isMagic>1</isMagic>
<abnormalType>MULTI_BUFF</abnormalType> <targetType>TARGET</targetType>
<abnormalLvl>1</abnormalLvl> <affectScope>SINGLE</affectScope>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<affectRange>1000</affectRange>
<targetType>SELF</targetType>
<affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject>
<isMagic>22</isMagic>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>99</magicLvl>
<effects> <effects>
<effect name="CallSkill"> <!-- Elemental Resistance --> <effect name="CallLearnedSkill">
<skillId>11565</skillId> <!-- Elemental Resistance --> <skillId>11565</skillId> <!-- Elemental Resistance -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Holy Attack Resistance --> <effect name="CallLearnedSkill">
<skillId>11566</skillId> <!-- Resistance Debuff --> <skillId>11566</skillId> <!-- Resistance Debuff -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Mental Attack Resistance --> <effect name="CallLearnedSkill">
<skillId>11567</skillId> <!-- Mental Attack Resistance --> <skillId>11567</skillId> <!-- Mental Attack Resistance -->
<skillLevel>1</skillLevel>
</effect> </effect>
</effects> </effects>
</skill> </skill>
@ -793,72 +764,36 @@
<isTriggeredSkill>true</isTriggeredSkill> <isTriggeredSkill>true</isTriggeredSkill>
</skill> </skill>
<skill id="19433" toLevel="11" name="Alluring Conduct"> <skill id="19433" toLevel="11" name="Alluring Conduct">
<!-- Casts owned War Drum, Marching Drum and Relax Drum all at once. --> <!-- Attacks the target and nearby enemies with $s1 Power added to P. Atk. and decreases Atk. Spd./ Casting Spd./ P. Def/ M. Def by $s3 for $s2. Increases cooldown of all skills by $s4and applies the Swift Praise effect to the caster. Can be used in the Triad state. Requires a sword, blunt, dual sword or dual blunt to be equipped. -->
<icon>icon.skill19433</icon> <icon>icon.skill19433</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<mpConsume>0</mpConsume>
<reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime>
<abnormalTime>-1</abnormalTime>
<abnormalType>MULTI_BUFF</abnormalType>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectRange>1000</affectRange>
<targetType>SELF</targetType>
<affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject>
<isMagic>22</isMagic>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>99</magicLvl>
<effects>
<effect name="CallSkill"> <!-- War Drum -->
<skillId>19444</skillId> <!-- War Drumb -->
<skillLevel>1</skillLevel>
</effect>
<effect name="CallSkill"> <!-- Marching Drum -->
<skillId>19445</skillId> <!-- Marching Drum -->
<skillLevel>1</skillLevel>
</effect>
<effect name="CallSkill"> <!-- Soothing Drum -->
<skillId>19446</skillId> <!-- Soothing Drum -->
<skillLevel>1</skillLevel>
</effect>
</effects>
</skill> </skill>
<skill id="19438" toLevel="1" name="Triple Stroke"> <skill id="19438" toLevel="1" name="Triple Stroke">
<!-- Casts owned War Drum, Marching Drum and Relax Drum all at once. --> <!-- Casts owned War Drum, Marching Drum and Relax Drum all at once. -->
<icon>icon.skill19433</icon> <icon>icon.skill19438</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<mpConsume>0</mpConsume> <castRange>1000</castRange>
<effectPoint>696</effectPoint>
<mpConsume>140</mpConsume>
<effectRange>1500</effectRange>
<hitTime>4000</hitTime>
<coolTime>300</coolTime>
<reuseDelay>2000</reuseDelay> <reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime> <magicLvl>97</magicLvl>
<abnormalTime>-1</abnormalTime> <isMagic>1</isMagic>
<abnormalType>MULTI_BUFF</abnormalType>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectRange>1000</affectRange>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<affectScope>PARTY</affectScope> <affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject> <affectObject>FRIEND</affectObject>
<isMagic>22</isMagic> <affectRange>1000</affectRange>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>99</magicLvl>
<effects> <effects>
<effect name="CallSkill"> <!-- War Drum --> <effect name="CallLearnedSkill">
<skillId>19444</skillId> <!-- War Drumb --> <skillId>19444</skillId> <!-- War Drumb -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Marching Drum --> <effect name="CallLearnedSkill">
<skillId>19445</skillId> <!-- Marching Drum --> <skillId>19445</skillId> <!-- Marching Drum -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Soothing Drum --> <effect name="CallLearnedSkill">
<skillId>19446</skillId> <!-- Soothing Drum --> <skillId>19446</skillId> <!-- Soothing Drum -->
<skillLevel>1</skillLevel>
</effect> </effect>
</effects> </effects>
</skill> </skill>

View File

@ -36,6 +36,7 @@ BonusDropRate: Bonus chance for dropping items. (l2jmobius)
BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius) BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius)
Breath: Underwater breathing stat. Breath: Underwater breathing stat.
BuffBlock: Blocks target from receiving buffs. BuffBlock: Blocks target from receiving buffs.
CallLearnedSkill: Calls existing learned skill. (l2jmobius)
CallParty: Recalls whole party. CallParty: Recalls whole party.
CallPc: Recalls a Player. CallPc: Recalls a Player.
CallRandomSkill: Triggers a random skill. (l2jmobius) CallRandomSkill: Triggers a random skill. (l2jmobius)

View File

@ -68,6 +68,7 @@ public final class EffectMasterHandler
EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new); EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new);
EffectHandler.getInstance().registerHandler("Breath", Breath::new); EffectHandler.getInstance().registerHandler("Breath", Breath::new);
EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new); EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new);
EffectHandler.getInstance().registerHandler("CallLearnedSkill", CallLearnedSkill::new);
EffectHandler.getInstance().registerHandler("CallParty", CallParty::new); EffectHandler.getInstance().registerHandler("CallParty", CallParty::new);
EffectHandler.getInstance().registerHandler("CallPc", CallPc::new); EffectHandler.getInstance().registerHandler("CallPc", CallPc::new);
EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new); EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new);

View File

@ -0,0 +1,54 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
/**
* Call Learned Skill by Level effect implementation.
* @author Kazumi
*/
public final class CallLearnedSkill extends AbstractEffect
{
private final int _skillId;
public CallLearnedSkill(StatsSet params)
{
_skillId = params.getInt("skillId");
}
@Override
public boolean isInstant()
{
return true;
}
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
final Skill knownSkill = effector.getKnownSkill(_skillId);
if (knownSkill != null)
{
SkillCaster.triggerCast(effector, effected, knownSkill);
}
}
}

View File

@ -605,38 +605,31 @@
<!-- Casts owned Horn, Drum, Organ, and Guitar Melodies, all at once. --> <!-- Casts owned Horn, Drum, Organ, and Guitar Melodies, all at once. -->
<icon>icon.skill19421</icon> <icon>icon.skill19421</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<castRange>1000</castRange>
<effectPoint>696</effectPoint>
<mpConsume>140</mpConsume> <mpConsume>140</mpConsume>
<effectRange>1500</effectRange>
<hitTime>4000</hitTime>
<coolTime>300</coolTime>
<reuseDelay>2000</reuseDelay> <reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime> <magicLvl>97</magicLvl>
<abnormalTime>-1</abnormalTime> <isMagic>1</isMagic>
<abnormalType>MULTI_BUFF</abnormalType>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectRange>1000</affectRange>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<affectScope>PARTY</affectScope> <affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject> <affectObject>FRIEND</affectObject>
<isMagic>22</isMagic> <affectRange>1000</affectRange>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>103</magicLvl>
<effects> <effects>
<effect name="CallSkill"> <!-- Horn Melody --> <effect name="CallLearnedSkill">
<skillId>11517</skillId> <!-- Horn Melody --> <skillId>11517</skillId> <!-- Horn Melody -->
<skillLevel>0</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Drum Melody --> <effect name="CallLearnedSkill">
<skillId>11518</skillId> <!-- Drum Melody --> <skillId>11518</skillId> <!-- Drum Melody -->
<skillLevel>0</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Pipe Organ Melody --> <effect name="CallLearnedSkill">
<skillId>11519</skillId> <!-- Pipe Organ Melody --> <skillId>11519</skillId> <!-- Pipe Organ Melody -->
<skillLevel>0</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Guitar Melody --> <effect name="CallLearnedSkill">
<skillId>11520</skillId> <!-- Guitar Melody --> <skillId>11520</skillId> <!-- Guitar Melody -->
<skillLevel>0</skillLevel>
</effect> </effect>
</effects> </effects>
</skill> </skill>
@ -644,33 +637,28 @@
<!-- Casts owned Combat, Marching, and Refreshing Sonatas, all at once. --> <!-- Casts owned Combat, Marching, and Refreshing Sonatas, all at once. -->
<icon>icon.skill19422</icon> <icon>icon.skill19422</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<castRange>1000</castRange>
<effectPoint>696</effectPoint>
<mpConsume>140</mpConsume> <mpConsume>140</mpConsume>
<effectRange>1500</effectRange>
<hitTime>4000</hitTime>
<coolTime>300</coolTime>
<reuseDelay>2000</reuseDelay> <reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime> <magicLvl>97</magicLvl>
<abnormalTime>-1</abnormalTime> <isMagic>1</isMagic>
<abnormalType>MULTI_BUFF</abnormalType>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<affectRange>1000</affectRange>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<affectScope>PARTY</affectScope> <affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject> <affectObject>FRIEND</affectObject>
<isMagic>22</isMagic> <affectRange>1000</affectRange>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>101</magicLvl>
<effects> <effects>
<effect name="CallSkill"> <!-- Prevailing Sonata --> <effect name="CallLearnedSkill">
<skillId>11529</skillId> <!-- Prevailing Sonata --> <skillId>11529</skillId> <!-- Prevailing Sonata -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Daring Sonata --> <effect name="CallLearnedSkill">
<skillId>11530</skillId> <!-- Daring Sonata --> <skillId>11530</skillId> <!-- Daring Sonata -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Refreshing Sonata --> <effect name="CallLearnedSkill">
<skillId>11532</skillId> <!-- Refreshing Sonata --> <skillId>11532</skillId> <!-- Refreshing Sonata -->
<skillLevel>1</skillLevel>
</effect> </effect>
</effects> </effects>
</skill> </skill>
@ -678,33 +666,28 @@
<!-- Casts owned Prevailing Song, Marching Song, and Relax Song, all at once. --> <!-- Casts owned Prevailing Song, Marching Song, and Relax Song, all at once. -->
<icon>icon.skill19423</icon> <icon>icon.skill19423</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<castRange>1000</castRange>
<effectPoint>696</effectPoint>
<mpConsume>140</mpConsume> <mpConsume>140</mpConsume>
<effectRange>1500</effectRange>
<hitTime>4000</hitTime>
<coolTime>300</coolTime>
<reuseDelay>2000</reuseDelay> <reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime> <magicLvl>97</magicLvl>
<abnormalTime>-1</abnormalTime> <isMagic>1</isMagic>
<abnormalType>MULTI_BUFF</abnormalType>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<affectRange>1000</affectRange>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<affectScope>PARTY</affectScope> <affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject> <affectObject>FRIEND</affectObject>
<isMagic>22</isMagic> <affectRange>1000</affectRange>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>101</magicLvl>
<effects> <effects>
<effect name="CallSkill"> <!-- Prevailing Song --> <effect name="CallLearnedSkill">
<skillId>11607</skillId> <!-- Prevailing Song --> <skillId>11607</skillId> <!-- Prevailing Song -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Daring Song --> <effect name="CallLearnedSkill">
<skillId>11608</skillId> <!-- Daring Song --> <skillId>11608</skillId> <!-- Daring Song -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Refreshing Song --> <effect name="CallLearnedSkill">
<skillId>11609</skillId> <!-- Refreshing Song --> <skillId>11609</skillId> <!-- Refreshing Song -->
<skillLevel>1</skillLevel>
</effect> </effect>
</effects> </effects>
</skill> </skill>
@ -712,33 +695,28 @@
<!-- Casts owned Prevailing Dance, Marching Dance, and Relax Dance, all at once. --> <!-- Casts owned Prevailing Dance, Marching Dance, and Relax Dance, all at once. -->
<icon>icon.skill19424</icon> <icon>icon.skill19424</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<castRange>1000</castRange>
<effectPoint>696</effectPoint>
<mpConsume>140</mpConsume> <mpConsume>140</mpConsume>
<effectRange>1500</effectRange>
<hitTime>4000</hitTime>
<coolTime>300</coolTime>
<reuseDelay>2000</reuseDelay> <reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime> <magicLvl>97</magicLvl>
<abnormalTime>-1</abnormalTime> <isMagic>1</isMagic>
<abnormalType>MULTI_BUFF</abnormalType>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<affectRange>1000</affectRange>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<affectScope>PARTY</affectScope> <affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject> <affectObject>FRIEND</affectObject>
<isMagic>22</isMagic> <affectRange>1000</affectRange>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>101</magicLvl>
<effects> <effects>
<effect name="CallSkill"> <!-- Prevailing Dance --> <effect name="CallLearnedSkill">
<skillId>11610</skillId> <!-- Prevailing Dance --> <skillId>11610</skillId> <!-- Prevailing Dance -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Daring Dance --> <effect name="CallLearnedSkill">
<skillId>11611</skillId> <!-- Daring Dance --> <skillId>11611</skillId> <!-- Daring Dance -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Refreshing Dance --> <effect name="CallLearnedSkill">
<skillId>11612</skillId> <!-- Refreshing Dance --> <skillId>11612</skillId> <!-- Refreshing Dance -->
<skillLevel>1</skillLevel>
</effect> </effect>
</effects> </effects>
</skill> </skill>
@ -746,33 +724,26 @@
<!-- Casts owned Elemental Resistance, Debuff Resistance, and Mental Attack Resistance, all at once. --> <!-- Casts owned Elemental Resistance, Debuff Resistance, and Mental Attack Resistance, all at once. -->
<icon>icon.skill19425</icon> <icon>icon.skill19425</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<mpConsume>0</mpConsume> <castRange>1000</castRange>
<effectPoint>696</effectPoint>
<mpConsume>140</mpConsume>
<effectRange>1500</effectRange>
<hitTime>4000</hitTime>
<coolTime>300</coolTime>
<reuseDelay>2000</reuseDelay> <reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime> <magicLvl>97</magicLvl>
<abnormalTime>-1</abnormalTime> <isMagic>1</isMagic>
<abnormalType>MULTI_BUFF</abnormalType> <targetType>TARGET</targetType>
<abnormalLvl>1</abnormalLvl> <affectScope>SINGLE</affectScope>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<affectRange>1000</affectRange>
<targetType>SELF</targetType>
<affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject>
<isMagic>22</isMagic>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>99</magicLvl>
<effects> <effects>
<effect name="CallSkill"> <!-- Elemental Resistance --> <effect name="CallLearnedSkill">
<skillId>11565</skillId> <!-- Elemental Resistance --> <skillId>11565</skillId> <!-- Elemental Resistance -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Holy Attack Resistance --> <effect name="CallLearnedSkill">
<skillId>11566</skillId> <!-- Resistance Debuff --> <skillId>11566</skillId> <!-- Resistance Debuff -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Mental Attack Resistance --> <effect name="CallLearnedSkill">
<skillId>11567</skillId> <!-- Mental Attack Resistance --> <skillId>11567</skillId> <!-- Mental Attack Resistance -->
<skillLevel>1</skillLevel>
</effect> </effect>
</effects> </effects>
</skill> </skill>
@ -782,6 +753,7 @@
<operateType>A1</operateType> <operateType>A1</operateType>
</skill> </skill>
<skill id="19431" toLevel="9" name="Sforzando Sting"> <skill id="19431" toLevel="9" name="Sforzando Sting">
<!-- Rushes at the target to reduce Speed by $s2 for $s1 and gives the Swift Praise effect to allies. Requires a sword, blunt, dual sword or dual blunt to be equipped. -->
<icon>icon.skill19431</icon> <icon>icon.skill19431</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
</skill> </skill>
@ -792,76 +764,41 @@
<isTriggeredSkill>true</isTriggeredSkill> <isTriggeredSkill>true</isTriggeredSkill>
</skill> </skill>
<skill id="19433" toLevel="11" name="Alluring Conduct"> <skill id="19433" toLevel="11" name="Alluring Conduct">
<!-- Casts owned War Drum, Marching Drum and Relax Drum all at once. --> <!-- Attacks the target and nearby enemies with $s1 Power added to P. Atk. and decreases Atk. Spd./ Casting Spd./ P. Def/ M. Def by $s3 for $s2. Increases cooldown of all skills by $s4and applies the Swift Praise effect to the caster. Can be used in the Triad state. Requires a sword, blunt, dual sword or dual blunt to be equipped. -->
<icon>icon.skill19433</icon> <icon>icon.skill19433</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<mpConsume>0</mpConsume>
<reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime>
<abnormalTime>-1</abnormalTime>
<abnormalType>MULTI_BUFF</abnormalType>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectRange>1000</affectRange>
<targetType>SELF</targetType>
<affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject>
<isMagic>22</isMagic>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>99</magicLvl>
<effects>
<effect name="CallSkill"> <!-- War Drum -->
<skillId>19444</skillId> <!-- War Drum -->
<skillLevel>1</skillLevel>
</effect>
<effect name="CallSkill"> <!-- Marching Drum -->
<skillId>19445</skillId> <!-- Marching Drum -->
<skillLevel>1</skillLevel>
</effect>
<effect name="CallSkill"> <!-- Soothing Drum -->
<skillId>19446</skillId> <!-- Soothing Drum -->
<skillLevel>1</skillLevel>
</effect>
</effects>
</skill> </skill>
<skill id="19438" toLevel="1" name="Triple Stroke"> <skill id="19438" toLevel="1" name="Triple Stroke">
<!-- Casts owned War Drum, Marching Drum and Relax Drum all at once. --> <!-- Casts owned War Drum, Marching Drum and Relax Drum all at once. -->
<icon>icon.skill19433</icon> <icon>icon.skill19438</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<mpConsume>0</mpConsume> <castRange>1000</castRange>
<effectPoint>696</effectPoint>
<mpConsume>140</mpConsume>
<effectRange>1500</effectRange>
<hitTime>4000</hitTime>
<coolTime>300</coolTime>
<reuseDelay>2000</reuseDelay> <reuseDelay>2000</reuseDelay>
<hitTime>4300</hitTime> <magicLvl>97</magicLvl>
<abnormalTime>-1</abnormalTime> <isMagic>1</isMagic>
<abnormalType>MULTI_BUFF</abnormalType>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>1200</abnormalTime>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectRange>1000</affectRange>
<targetType>SELF</targetType> <targetType>SELF</targetType>
<affectScope>PARTY</affectScope> <affectScope>PARTY</affectScope>
<affectObject>FRIEND</affectObject> <affectObject>FRIEND</affectObject>
<isMagic>22</isMagic> <affectRange>1000</affectRange>
<isMagic>1</isMagic> <!-- Magic Skill -->
<magicLvl>99</magicLvl>
<effects> <effects>
<effect name="CallSkill"> <!-- War Drum --> <effect name="CallLearnedSkill">
<skillId>19444</skillId> <!-- War Drumb --> <skillId>19444</skillId> <!-- War Drumb -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Marching Drum --> <effect name="CallLearnedSkill">
<skillId>19445</skillId> <!-- Marching Drum --> <skillId>19445</skillId> <!-- Marching Drum -->
<skillLevel>1</skillLevel>
</effect> </effect>
<effect name="CallSkill"> <!-- Soothing Drum --> <effect name="CallLearnedSkill">
<skillId>19446</skillId> <!-- Soothing Drum --> <skillId>19446</skillId> <!-- Soothing Drum -->
<skillLevel>1</skillLevel>
</effect> </effect>
</effects> </effects>
</skill> </skill>
<skill id="19439" toLevel="1" name="Overload's Dignity"> <skill id="19439" toLevel="1" name="Overload's Dignity">
<!-- For $s1, increases nearby party members' P. Atk., M. Atk., Atk. Spd. and Casting Spd. $s2 times. This effect cannot be stacked, and a limit applies after its duration is over. -->
<icon>icon.skill19439</icon> <icon>icon.skill19439</icon>
<abnormalTime>30</abnormalTime> <abnormalTime>30</abnormalTime>
<affectRange>1000</affectRange> <affectRange>1000</affectRange>
@ -927,6 +864,7 @@
<operateType>A1</operateType> <operateType>A1</operateType>
</skill> </skill>
<skill id="19444" toLevel="1" name="War Drum"> <skill id="19444" toLevel="1" name="War Drum">
<!-- For $s1, party members' Max HP +$s2, P. Atk. +$s3, M. Atk. +$s4, and magic cancel rate -$s5. A chance to apply $s6 Vampiric Rage effect. -->
<icon>icon.skill19444</icon> <icon>icon.skill19444</icon>
<abnormalType>BUFF_SPECIAL_AURA</abnormalType> <abnormalType>BUFF_SPECIAL_AURA</abnormalType>
<abnormalTime>150</abnormalTime> <abnormalTime>150</abnormalTime>
@ -972,6 +910,7 @@
</effects> </effects>
</skill> </skill>
<skill id="19445" toLevel="1" name="Marching Drum"> <skill id="19445" toLevel="1" name="Marching Drum">
<!-- For $s1, party members' Atk. Spd. +$s2, Casting Spd. +$s3, Speed +$s4, Damage Reflection +$s5, and Skill Cooldown -$s6. -->
<icon>icon.skill19445</icon> <icon>icon.skill19445</icon>
<abnormalType>ENCHANTER_MOD</abnormalType> <abnormalType>ENCHANTER_MOD</abnormalType>
<abnormalTime>150</abnormalTime> <abnormalTime>150</abnormalTime>
@ -1022,6 +961,7 @@
</effects> </effects>
</skill> </skill>
<skill id="19446" toLevel="1" name="Soothing Drum"> <skill id="19446" toLevel="1" name="Soothing Drum">
<!-- For $s1, party members' HP Recovery Bonus +$s2, MP Recovery Bonus +$s3, and P. Evasion/ M. Evasion +$s4, and Skill MP Consumption -$s5. -->
<icon>icon.skill19446</icon> <icon>icon.skill19446</icon>
<abnormalType>SYNERGY_IS</abnormalType> <abnormalType>SYNERGY_IS</abnormalType>
<abnormalTime>150</abnormalTime> <abnormalTime>150</abnormalTime>

View File

@ -37,6 +37,7 @@ BonusDropRate: Bonus chance for dropping items. (l2jmobius)
BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius) BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius)
Breath: Underwater breathing stat. Breath: Underwater breathing stat.
BuffBlock: Blocks target from receiving buffs. BuffBlock: Blocks target from receiving buffs.
CallLearnedSkill: Calls existing learned skill. (l2jmobius)
CallParty: Recalls whole party. CallParty: Recalls whole party.
CallPc: Recalls a Player. CallPc: Recalls a Player.
CallRandomSkill: Triggers a random skill. (l2jmobius) CallRandomSkill: Triggers a random skill. (l2jmobius)

View File

@ -65,6 +65,7 @@ public final class EffectMasterHandler
EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new); EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new);
EffectHandler.getInstance().registerHandler("Breath", Breath::new); EffectHandler.getInstance().registerHandler("Breath", Breath::new);
EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new); EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new);
EffectHandler.getInstance().registerHandler("CallLearnedSkill", CallLearnedSkill::new);
EffectHandler.getInstance().registerHandler("CallParty", CallParty::new); EffectHandler.getInstance().registerHandler("CallParty", CallParty::new);
EffectHandler.getInstance().registerHandler("CallPc", CallPc::new); EffectHandler.getInstance().registerHandler("CallPc", CallPc::new);
EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new); EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new);

View File

@ -0,0 +1,54 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
/**
* Call Learned Skill by Level effect implementation.
* @author Kazumi
*/
public final class CallLearnedSkill extends AbstractEffect
{
private final int _skillId;
public CallLearnedSkill(StatsSet params)
{
_skillId = params.getInt("skillId");
}
@Override
public boolean isInstant()
{
return true;
}
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
final Skill knownSkill = effector.getKnownSkill(_skillId);
if (knownSkill != null)
{
SkillCaster.triggerCast(effector, effected, knownSkill);
}
}
}

View File

@ -34,6 +34,7 @@ BonusDropRate: Bonus chance for dropping items. (l2jmobius)
BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius) BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius)
Breath: Underwater breathing stat. Breath: Underwater breathing stat.
BuffBlock: Blocks target from receiving buffs. BuffBlock: Blocks target from receiving buffs.
CallLearnedSkill: Calls existing learned skill. (l2jmobius)
CallParty: Recalls whole party. CallParty: Recalls whole party.
CallPc: Recalls a Player. CallPc: Recalls a Player.
CallRandomSkill: Triggers a random skill. (l2jmobius) CallRandomSkill: Triggers a random skill. (l2jmobius)

View File

@ -65,6 +65,7 @@ public final class EffectMasterHandler
EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new); EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new);
EffectHandler.getInstance().registerHandler("Breath", Breath::new); EffectHandler.getInstance().registerHandler("Breath", Breath::new);
EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new); EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new);
EffectHandler.getInstance().registerHandler("CallLearnedSkill", CallLearnedSkill::new);
EffectHandler.getInstance().registerHandler("CallParty", CallParty::new); EffectHandler.getInstance().registerHandler("CallParty", CallParty::new);
EffectHandler.getInstance().registerHandler("CallPc", CallPc::new); EffectHandler.getInstance().registerHandler("CallPc", CallPc::new);
EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new); EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new);

View File

@ -0,0 +1,54 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
/**
* Call Learned Skill by Level effect implementation.
* @author Kazumi
*/
public final class CallLearnedSkill extends AbstractEffect
{
private final int _skillId;
public CallLearnedSkill(StatsSet params)
{
_skillId = params.getInt("skillId");
}
@Override
public boolean isInstant()
{
return true;
}
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
final Skill knownSkill = effector.getKnownSkill(_skillId);
if (knownSkill != null)
{
SkillCaster.triggerCast(effector, effected, knownSkill);
}
}
}

View File

@ -34,6 +34,7 @@ BonusDropRate: Bonus chance for dropping items. (l2jmobius)
BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius) BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius)
Breath: Underwater breathing stat. Breath: Underwater breathing stat.
BuffBlock: Blocks target from receiving buffs. BuffBlock: Blocks target from receiving buffs.
CallLearnedSkill: Calls existing learned skill. (l2jmobius)
CallParty: Recalls whole party. CallParty: Recalls whole party.
CallPc: Recalls a Player. CallPc: Recalls a Player.
CallRandomSkill: Triggers a random skill. (l2jmobius) CallRandomSkill: Triggers a random skill. (l2jmobius)

View File

@ -66,6 +66,7 @@ public final class EffectMasterHandler
EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new); EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new);
EffectHandler.getInstance().registerHandler("Breath", Breath::new); EffectHandler.getInstance().registerHandler("Breath", Breath::new);
EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new); EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new);
EffectHandler.getInstance().registerHandler("CallLearnedSkill", CallLearnedSkill::new);
EffectHandler.getInstance().registerHandler("CallParty", CallParty::new); EffectHandler.getInstance().registerHandler("CallParty", CallParty::new);
EffectHandler.getInstance().registerHandler("CallPc", CallPc::new); EffectHandler.getInstance().registerHandler("CallPc", CallPc::new);
EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new); EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new);

View File

@ -0,0 +1,54 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
/**
* Call Learned Skill by Level effect implementation.
* @author Kazumi
*/
public final class CallLearnedSkill extends AbstractEffect
{
private final int _skillId;
public CallLearnedSkill(StatsSet params)
{
_skillId = params.getInt("skillId");
}
@Override
public boolean isInstant()
{
return true;
}
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
final Skill knownSkill = effector.getKnownSkill(_skillId);
if (knownSkill != null)
{
SkillCaster.triggerCast(effector, effected, knownSkill);
}
}
}

View File

@ -35,6 +35,7 @@ BonusDropRate: Bonus chance for dropping items. (l2jmobius)
BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius) BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius)
Breath: Underwater breathing stat. Breath: Underwater breathing stat.
BuffBlock: Blocks target from receiving buffs. BuffBlock: Blocks target from receiving buffs.
CallLearnedSkill: Calls existing learned skill. (l2jmobius)
CallParty: Recalls whole party. CallParty: Recalls whole party.
CallPc: Recalls a Player. CallPc: Recalls a Player.
CallRandomSkill: Triggers a random skill. (l2jmobius) CallRandomSkill: Triggers a random skill. (l2jmobius)

View File

@ -67,6 +67,7 @@ public final class EffectMasterHandler
EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new); EffectHandler.getInstance().registerHandler("BonusSpoilRate", BonusSpoilRate::new);
EffectHandler.getInstance().registerHandler("Breath", Breath::new); EffectHandler.getInstance().registerHandler("Breath", Breath::new);
EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new); EffectHandler.getInstance().registerHandler("BuffBlock", BuffBlock::new);
EffectHandler.getInstance().registerHandler("CallLearnedSkill", CallLearnedSkill::new);
EffectHandler.getInstance().registerHandler("CallParty", CallParty::new); EffectHandler.getInstance().registerHandler("CallParty", CallParty::new);
EffectHandler.getInstance().registerHandler("CallPc", CallPc::new); EffectHandler.getInstance().registerHandler("CallPc", CallPc::new);
EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new); EffectHandler.getInstance().registerHandler("CallRandomSkill", CallRandomSkill::new);

View File

@ -0,0 +1,54 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.effecthandlers;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
/**
* Call Learned Skill by Level effect implementation.
* @author Kazumi
*/
public final class CallLearnedSkill extends AbstractEffect
{
private final int _skillId;
public CallLearnedSkill(StatsSet params)
{
_skillId = params.getInt("skillId");
}
@Override
public boolean isInstant()
{
return true;
}
@Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
final Skill knownSkill = effector.getKnownSkill(_skillId);
if (knownSkill != null)
{
SkillCaster.triggerCast(effector, effected, knownSkill);
}
}
}

View File

@ -36,6 +36,7 @@ BonusDropRate: Bonus chance for dropping items. (l2jmobius)
BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius) BonusSpoilRate: Bonus chance for acquiring spoil items. (l2jmobius)
Breath: Underwater breathing stat. Breath: Underwater breathing stat.
BuffBlock: Blocks target from receiving buffs. BuffBlock: Blocks target from receiving buffs.
CallLearnedSkill: Calls existing learned skill. (l2jmobius)
CallParty: Recalls whole party. CallParty: Recalls whole party.
CallPc: Recalls a Player. CallPc: Recalls a Player.
CallRandomSkill: Triggers a random skill. (l2jmobius) CallRandomSkill: Triggers a random skill. (l2jmobius)