Sync with L2jServer HighFive Oct 10th 2015.

This commit is contained in:
MobiusDev
2015-10-10 13:28:13 +00:00
parent 2a827d8120
commit 2dd6094e0f
39 changed files with 601 additions and 556 deletions

View File

@@ -18,9 +18,7 @@
*/
package handlers.admincommandhandlers;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -123,16 +121,18 @@ public class AdminEventEngine implements IAdminCommandHandler
{
final NpcHtmlMessage adminReply = new NpcHtmlMessage();
DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "events/" + eventName)));
BufferedReader inbr = new BufferedReader(new InputStreamReader(in));
adminReply.setFile("en", "html/mods/EventEngine/Participation.htm");
adminReply.replace("%eventName%", eventName);
adminReply.replace("%eventCreator%", inbr.readLine());
adminReply.replace("%eventInfo%", inbr.readLine());
adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :)
adminReply.replace("button value=\"Participate\"", "button value=\"Back\"");
activeChar.sendPacket(adminReply);
inbr.close();
try (FileInputStream fis = new FileInputStream(Config.DATAPACK_ROOT + "events/" + eventName);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr))
{
adminReply.setFile("en", "html/mods/EventEngine/Participation.htm");
adminReply.replace("%eventName%", eventName);
adminReply.replace("%eventCreator%", br.readLine());
adminReply.replace("%eventInfo%", br.readLine());
adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :)
adminReply.replace("button value=\"Participate\"", "button value=\"Back\"");
activeChar.sendPacket(adminReply);
}
}
catch (Exception e)
{
@@ -165,12 +165,12 @@ public class AdminEventEngine implements IAdminCommandHandler
{
try
{
FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "events/" + tempName));
PrintStream p = new PrintStream(file);
p.println(activeChar.getName());
p.println(tempBuffer);
file.close();
p.close();
try (FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "events/" + tempName));
PrintStream p = new PrintStream(file))
{
p.println(activeChar.getName());
p.println(tempBuffer);
}
}
catch (Exception e)
{
@@ -476,7 +476,7 @@ public class AdminEventEngine implements IAdminCommandHandler
{
final NpcHtmlMessage adminReply = new NpcHtmlMessage();
final String replyMSG = StringUtil.concat("<html><title>[ L2J EVENT ENGINE ]</title><body>" + "<br><center><button value=\"Create NEW event \" action=\"bypass -h admin_event_new\" width=150 height=32 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<center><br><font color=LEVEL>Stored Events:</font><br></center>", showStoredEvents(), "</body></html>");
final String replyMSG = StringUtil.concat("<html><title>[ EVENT ENGINE ]</title><body>" + "<br><center><button value=\"Create NEW event \" action=\"bypass -h admin_event_new\" width=150 height=32 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<center><br><font color=LEVEL>Stored Events:</font><br></center>", showStoredEvents(), "</body></html>");
adminReply.setHtml(replyMSG);
activeChar.sendPacket(adminReply);
}

View File

@@ -27,6 +27,7 @@ import com.l2jserver.gameserver.model.effects.AbstractEffect;
import com.l2jserver.gameserver.model.entity.Instance;
import com.l2jserver.gameserver.model.entity.TvTEvent;
import com.l2jserver.gameserver.model.holders.SummonRequestHolder;
import com.l2jserver.gameserver.model.olympiad.OlympiadManager;
import com.l2jserver.gameserver.model.skills.BuffInfo;
import com.l2jserver.gameserver.model.zone.ZoneId;
import com.l2jserver.gameserver.network.SystemMessageId;
@@ -124,7 +125,7 @@ public final class CallPc extends AbstractEffect
return false;
}
if (target.isInOlympiadMode())
if (target.isInOlympiadMode() || OlympiadManager.getInstance().isRegisteredInComp(target))
{
activeChar.sendPacket(SystemMessageId.A_USER_PARTICIPATING_IN_THE_OLYMPIAD_CANNOT_USE_SUMMONING_OR_TELEPORTING);
return false;

View File

@@ -21,6 +21,8 @@ package handlers.effecthandlers;
import com.l2jserver.gameserver.instancemanager.MapRegionManager;
import com.l2jserver.gameserver.model.StatsSet;
import com.l2jserver.gameserver.model.TeleportWhereType;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2GuardInstance;
import com.l2jserver.gameserver.model.conditions.Condition;
import com.l2jserver.gameserver.model.effects.AbstractEffect;
import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -61,7 +63,15 @@ public final class Escape extends AbstractEffect
return;
}
info.getEffected().teleToLocation(MapRegionManager.getInstance().getTeleToLocation(info.getEffected(), _escapeType), true);
info.getEffected().setInstanceId(0);
if (info.getEffected() instanceof L2GuardInstance)
{
info.getEffected().teleToLocation(((L2Npc) info.getEffected()).getSpawn());
info.getEffected().setHeading(((L2Npc) info.getEffected()).getSpawn().getHeading());
}
else
{
info.getEffected().teleToLocation(MapRegionManager.getInstance().getTeleToLocation(info.getEffected(), _escapeType), true);
info.getEffected().setInstanceId(0);
}
}
}

View File

@@ -18,8 +18,8 @@
*/
package handlers.effecthandlers;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import com.l2jserver.gameserver.model.StatsSet;
import com.l2jserver.gameserver.model.actor.L2Attackable;
@@ -64,29 +64,15 @@ public final class RandomizeHate extends AbstractEffect
return;
}
L2Attackable effectedMob = (L2Attackable) info.getEffected();
final List<L2Character> targetList = new ArrayList<>();
for (L2Character cha : info.getEffected().getKnownList().getKnownCharacters())
{
if ((cha != null) && (cha != effectedMob) && (cha != info.getEffector()))
{
// Aggro cannot be transfered to a mob of the same faction.
if (cha.isAttackable() && ((L2Attackable) cha).isInMyClan(effectedMob))
{
continue;
}
targetList.add(cha);
}
}
// if there is no target, exit function
if (targetList.isEmpty())
final L2Attackable effectedMob = (L2Attackable) info.getEffected();
final List<L2Character> aggroList = effectedMob.getAggroList().keySet().stream().filter(c -> c != info.getEffector()).collect(Collectors.toList());
if (aggroList.isEmpty())
{
return;
}
// Choosing randomly a new target
final L2Character target = targetList.get(Rnd.get(targetList.size()));
final L2Character target = aggroList.get(Rnd.get(aggroList.size()));
final int hate = effectedMob.getHating(info.getEffector());
effectedMob.stopHating(info.getEffector());
effectedMob.addDamageHate(target, 0, hate);

View File

@@ -18,45 +18,47 @@
*/
package handlers.effecthandlers;
import com.l2jserver.gameserver.ThreadPoolManager;
import java.util.HashMap;
import java.util.Map;
import com.l2jserver.gameserver.model.StatsSet;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Summon;
import com.l2jserver.gameserver.model.conditions.Condition;
import com.l2jserver.gameserver.model.effects.AbstractEffect;
import com.l2jserver.gameserver.model.effects.EffectFlag;
import com.l2jserver.gameserver.model.effects.L2EffectType;
import com.l2jserver.gameserver.model.skills.BuffInfo;
import com.l2jserver.gameserver.model.stats.Stats;
/**
* Servitor Share effect implementation.<br>
* Synchronizing effects on player and servitor if one of them gets removed for some reason the same will happen to another. Partner's effect exit is executed in own thread, since there is no more queue to schedule the effects,<br>
* partner's effect is called while this effect is still exiting issuing an exit call for the effect, causing a stack over flow.
* @author UnAfraid, Zoey76
* Servitor Share effect implementation. Have effect only on servitor's but not on pets Important: Only one effect can be used on char per time.
* @author Zealar
*/
public final class ServitorShare extends AbstractEffect
{
private static final class ScheduledEffectExitTask implements Runnable
{
private final L2Character _effected;
private final int _skillId;
public ScheduledEffectExitTask(L2Character effected, int skillId)
{
_effected = effected;
_skillId = skillId;
}
@Override
public void run()
{
_effected.stopSkillEffects(false, _skillId);
}
}
private final Map<Stats, Double> stats = new HashMap<>(9);
public ServitorShare(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
{
super(attachCond, applyCond, set, params);
for (String key : params.getSet().keySet())
{
stats.put(Stats.valueOfXml(key), params.getDouble(key, 1.));
}
}
@Override
public void onStart(BuffInfo info)
{
super.onStart(info);
info.getEffected().getActingPlayer().setServitorShare(stats);
if (info.getEffected().getActingPlayer().getServitors() != null)
{
for (L2Summon summon : info.getEffected().getActingPlayer().getServitors().values())
{
summon.broadcastInfo();
}
}
}
@Override
@@ -74,11 +76,13 @@ public final class ServitorShare extends AbstractEffect
@Override
public void onExit(BuffInfo info)
{
final L2Character effected = info.getEffected().isSummon() ? ((L2Summon) info.getEffected()).getOwner() : info.getEffected();
if (effected != null)
info.getEffected().getActingPlayer().setServitorShare(null);
if (info.getEffected().getServitors() != null)
{
ThreadPoolManager.getInstance().scheduleEffect(new ScheduledEffectExitTask(effected, info.getSkill().getId()), 100);
for (L2Summon summon : info.getEffected().getActingPlayer().getServitors().values())
{
summon.broadcastInfo();
}
}
}
}

View File

@@ -41,6 +41,7 @@ public final class Q00160_NerupasRequest extends Quest
private static final int UNOS_RECEIPT = 1027;
private static final int CELS_TICKET = 1028;
private static final int NIGHTSHADE_LEAF = 1029;
// Reward
private static final int LESSER_HEALING_POTION = 1060;
// Misc
private static final int MIN_LEVEL = 3;
@@ -60,7 +61,10 @@ public final class Q00160_NerupasRequest extends Quest
if ((qs != null) && event.equals("30370-04.htm"))
{
qs.startQuest();
giveItems(player, SILVERY_SPIDERSILK, 1);
if (!hasQuestItems(player, SILVERY_SPIDERSILK))
{
giveItems(player, SILVERY_SPIDERSILK, 1);
}
return event;
}
return null;
@@ -103,18 +107,17 @@ public final class Q00160_NerupasRequest extends Quest
{
case NERUPA:
{
if (hasQuestItems(player, NIGHTSHADE_LEAF))
if (hasAtLeastOneQuestItem(player, SILVERY_SPIDERSILK, UNOS_RECEIPT, CELS_TICKET))
{
htmltext = "30370-05.html";
}
else if (hasQuestItems(player, NIGHTSHADE_LEAF))
{
takeItems(player, NIGHTSHADE_LEAF, -1);
rewardItems(player, LESSER_HEALING_POTION, 5);
addExpAndSp(player, 1000, 0);
qs.exitQuest(false, true);
htmltext = "30370-06.html";
}
else
{
htmltext = "30370-05.html";
}
break;
}
case UNOREN:
@@ -122,7 +125,10 @@ public final class Q00160_NerupasRequest extends Quest
if (hasQuestItems(player, SILVERY_SPIDERSILK))
{
takeItems(player, SILVERY_SPIDERSILK, -1);
giveItems(player, UNOS_RECEIPT, 1);
if (!hasQuestItems(player, UNOS_RECEIPT))
{
giveItems(player, UNOS_RECEIPT, 1);
}
qs.setCond(2, true);
htmltext = "30147-01.html";
}
@@ -141,7 +147,10 @@ public final class Q00160_NerupasRequest extends Quest
if (hasQuestItems(player, UNOS_RECEIPT))
{
takeItems(player, UNOS_RECEIPT, -1);
giveItems(player, CELS_TICKET, 1);
if (!hasQuestItems(player, CELS_TICKET))
{
giveItems(player, CELS_TICKET, 1);
}
qs.setCond(3, true);
htmltext = "30149-01.html";
}
@@ -160,7 +169,10 @@ public final class Q00160_NerupasRequest extends Quest
if (hasQuestItems(player, CELS_TICKET))
{
takeItems(player, CELS_TICKET, -1);
giveItems(player, NIGHTSHADE_LEAF, 1);
if (!hasQuestItems(player, NIGHTSHADE_LEAF))
{
giveItems(player, NIGHTSHADE_LEAF, 1);
}
qs.setCond(4, true);
htmltext = "30152-01.html";

View File

@@ -318,7 +318,7 @@
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="targetType" val="SELF" />
<cond>
<and>
<and>
<player canSummonServitor="true" />
<player hasFreeSummonPoints="4" />
</and>
@@ -1595,7 +1595,7 @@
<set name="hitTime" val="2500" />
<set name="icon" val="icon.skill0761" />
<set name="isMagic" val="1" /> <!-- Magic Skill -->
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="29" />
<set name="mpInitialConsume" val="8" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
@@ -1630,7 +1630,7 @@
<set name="ignoreShld" val="true" />
<set name="isDebuff" val="true" />
<set name="lvlBonusRate" val="1" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="80" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="overHit" val="true" />
@@ -1675,7 +1675,7 @@
<set name="icon" val="icon.skill0763" />
<set name="isDebuff" val="true" />
<set name="lvlBonusRate" val="1" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="87" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="reuseDelay" val="75000" />
@@ -1793,7 +1793,7 @@
<set name="effectPoint" val="679" />
<set name="hitTime" val="1000" />
<set name="icon" val="icon.skill0768" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="36" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="reuseDelay" val="900000" />
@@ -1817,7 +1817,7 @@
<set name="effectPoint" val="679" />
<set name="hitTime" val="1000" />
<set name="icon" val="icon.skill0769" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="36" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="reuseDelay" val="900000" />
@@ -1841,7 +1841,7 @@
<set name="effectPoint" val="679" />
<set name="hitTime" val="1000" />
<set name="icon" val="icon.skill0770" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="36" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="reuseDelay" val="900000" />
@@ -1922,7 +1922,7 @@
</for>
</skill>
<skill id="776" levels="1" name="Force of Destruction">
<!-- Confirmed CT2.5 and Partially Updated to H5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="abnormalLvl" val="10" />
<set name="abnormalTime" val="20" />
<set name="abnormalType" val="FORCE_OF_DESTRUCTION" />
@@ -1938,7 +1938,7 @@
<set name="icon" val="icon.skill0776" />
<set name="isDebuff" val="true" />
<set name="lvlBonusRate" val="1" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="37" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="overHit" val="true" />
@@ -1962,7 +1962,7 @@
</for>
</skill>
<skill id="777" levels="1" name="Demolition Impact">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="affectRange" val="500" />
<set name="baseCritRate" val="15" />
<set name="castRange" val="150" />
@@ -1971,7 +1971,7 @@
<set name="fanRange" val="0,0,500,60" />
<set name="hitTime" val="1200" />
<set name="icon" val="icon.skill0777" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="160" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="overHit" val="true" />
@@ -2095,7 +2095,7 @@
</for>
</skill>
<skill id="784" levels="1" name="Spirit of the Phoenix">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="abnormalLvl" val="1" />
<set name="abnormalTime" val="60" />
<set name="abnormalType" val="SEED_OF_KNIGHT" />
@@ -2103,7 +2103,7 @@
<set name="hitTime" val="2500" />
<set name="icon" val="icon.skill0784" />
<set name="isMagic" val="1" /> <!-- Magic Skill -->
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="29" />
<set name="mpInitialConsume" val="8" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
@@ -2131,7 +2131,7 @@
<set name="hitTime" val="1800" />
<set name="hpConsume" val="1253" />
<set name="icon" val="icon.skill0785" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="reuseDelay" val="150000" />
<set name="rideState" val="NONE" />
@@ -2159,7 +2159,7 @@
</for>
</skill>
<skill id="786" levels="1" name="Eva's Will">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="abnormalLvl" val="1" />
<set name="abnormalTime" val="60" />
<set name="abnormalType" val="SEED_OF_KNIGHT" />
@@ -2167,7 +2167,7 @@
<set name="hitTime" val="2500" />
<set name="icon" val="icon.skill0786" />
<set name="isMagic" val="1" /> <!-- Magic Skill -->
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="29" />
<set name="mpInitialConsume" val="8" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
@@ -2186,20 +2186,20 @@
</for>
</skill>
<skill id="787" levels="1" name="Touch of Eva">
<!-- Confirmed CT2.5 -->
<!-- set name="castRange" val="40" / -->
<!-- set name="effectRange" val="400" / -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="abnormalLvl" val="1" />
<set name="abnormalTime" val="60" />
<set name="abnormalType" val="TOUCH_OF_LIFE" />
<set name="affectRange" val="1000" />
<set name="castRange" val="40" />
<set name="effectPoint" val="835" />
<set name="effectRange" val="400" />
<set name="element" val="4" /> <!-- Holy -->
<set name="elementPower" val="20" />
<set name="hitTime" val="1800" />
<set name="hpConsume" val="1253" />
<set name="icon" val="icon.skill0787" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="reuseDelay" val="150000" />
<set name="rideState" val="NONE" />
@@ -2222,7 +2222,7 @@
</for>
</skill>
<skill id="788" levels="1" name="Pain of Shilen">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="abnormalLvl" val="1" />
<set name="abnormalTime" val="60" />
<set name="abnormalType" val="SEED_OF_KNIGHT" />
@@ -2230,7 +2230,7 @@
<set name="hitTime" val="2500" />
<set name="icon" val="icon.skill0788" />
<set name="isMagic" val="1" /> <!-- Magic Skill -->
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="29" />
<set name="mpInitialConsume" val="8" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
@@ -2258,7 +2258,7 @@
<set name="hitTime" val="1800" />
<set name="hpConsume" val="1253" />
<set name="icon" val="icon.skill0789" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="reuseDelay" val="150000" />
<set name="rideState" val="NONE" />
@@ -2295,7 +2295,7 @@
<set name="fanRange" val="0,0,900,40" />
<set name="hitTime" val="3500" />
<set name="icon" val="icon.skill0790" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="120" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="overHit" val="true" />

View File

@@ -327,12 +327,13 @@
</for>
</skill>
<skill id="912" levels="1" name="Summon Imperial Phoenix">
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="hitTime" val="15000" />
<set name="icon" val="icon.skill0912" />
<set name="isMagic" val="1" /> <!-- Magic Skill -->
<set name="itemConsumeCount" val="2" />
<set name="itemConsumeId" val="1461" /> <!-- Crystal (A-Grade) -->
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="145" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="reuseDelay" val="45000" />
@@ -373,7 +374,7 @@
</for>
</skill>
<skill id="914" levels="1" name="Song of Purification">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="abnormalLvl" val="1" />
<set name="abnormalTime" val="120" />
<set name="abnormalType" val="SONG_OF_PURIFICATION" />
@@ -382,7 +383,7 @@
<set name="hitTime" val="2500" />
<set name="icon" val="icon.skill0914" />
<set name="isMagic" val="3" /> <!-- Dance Skill -->
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="60" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="reuseDelay" val="240000" />
@@ -399,7 +400,7 @@
</for>
</skill>
<skill id="915" levels="1" name="Dance of Berserker">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="abnormalLvl" val="1" />
<set name="abnormalTime" val="120" />
<set name="abnormalType" val="DANCE_OF_BERSERKER" />
@@ -408,7 +409,7 @@
<set name="hitTime" val="2500" />
<set name="icon" val="icon.skill0915" />
<set name="isMagic" val="3" /> <!-- Dance Skill -->
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="60" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="reuseDelay" val="240000" />
@@ -478,12 +479,12 @@
</for>
</skill>
<skill id="918" levels="1" name="Maximum Force Focus">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="effectPoint" val="150" />
<set name="hitTime" val="900" />
<set name="hpConsume" val="80" />
<set name="icon" val="icon.skill0918" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="20" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="reuseDelay" val="75000" />
@@ -502,12 +503,12 @@
</for>
</skill>
<skill id="919" levels="1" name="Maximum Sonic Focus">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="effectPoint" val="150" />
<set name="hitTime" val="900" />
<set name="hpConsume" val="80" />
<set name="icon" val="icon.skill0919" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="20" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="reuseDelay" val="75000" />
@@ -979,7 +980,7 @@
</for>
</skill>
<skill id="947" levels="1" name="Lucky Strike">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="affectLimit" val="3-6" />
<set name="affectRange" val="150" />
<set name="baseCritRate" val="5" />
@@ -989,7 +990,7 @@
<set name="effectRange" val="400" />
<set name="hitTime" val="1700" />
<set name="icon" val="icon.skill0947" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="70" />
<set name="nextActionAttack" val="true" />
<set name="operateType" val="ACTIVE_INSTANT" />
@@ -1012,7 +1013,7 @@
<set name="effectPoint" val="340" />
<set name="hitTime" val="500" />
<set name="icon" val="icon.skill0948" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="29" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="reuseDelay" val="75000" />
@@ -1043,7 +1044,7 @@
<set name="icon" val="icon.skill0949" />
<set name="isDebuff" val="true" />
<set name="lvlBonusRate" val="1" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="35" />
<set name="nextActionAttack" val="true" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />

View File

@@ -156,7 +156,7 @@
</for>
</skill>
<skill id="1505" levels="1" name="Sublime Self-Sacrifice">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="abnormalLvl" val="2" />
<set name="abnormalTime" val="15" />
<set name="abnormalType" val="INVINCIBILITY" />
@@ -167,7 +167,7 @@
<set name="hpConsume" val="4000" />
<set name="icon" val="icon.skill1505" />
<set name="isMagic" val="1" /> <!-- Magic Skill -->
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="174" />
<set name="mpInitialConsume" val="44" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
@@ -188,14 +188,14 @@
</for>
</skill>
<skill id="1506" levels="1" name="Blessing of Eva">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="castRange" val="400" />
<set name="effectPoint" val="668" />
<set name="effectRange" val="900" />
<set name="hitTime" val="3000" />
<set name="icon" val="icon.skill1506" />
<set name="isMagic" val="1" /> <!-- Magic Skill -->
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="58" />
<set name="mpInitialConsume" val="15" />
<set name="operateType" val="ACTIVE_INSTANT" />
@@ -232,7 +232,7 @@
<set name="hitTime" val="4000" />
<set name="icon" val="icon.skill1507" />
<set name="isMagic" val="1" /> <!-- Magic Skill -->
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="29" />
<set name="mpInitialConsume" val="8" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
@@ -1274,8 +1274,7 @@
</for>
</skill>
<skill id="1542" levels="1" name="Counter Critical">
<!-- Confirmed CT2.5 -->
<!-- NOTE: Description in H5 Client is wrong -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="abnormalLvl" val="1" />
<set name="abnormalTime" val="1200" />
<set name="abnormalType" val="COUNTER_CRITICAL" />
@@ -1285,7 +1284,7 @@
<set name="hitTime" val="4000" />
<set name="icon" val="icon.skill1542" />
<set name="isMagic" val="1" /> <!-- Magic Skill -->
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="mpConsume" val="58" />
<set name="mpInitialConsume" val="15" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
@@ -1304,9 +1303,9 @@
</for>
</skill>
<skill id="1543" levels="1" name="Great Fury">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="icon" val="icon.skill1543" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="PASSIVE" />
<for>
<effect name="TriggerSkillBySkill">

View File

@@ -1087,7 +1087,7 @@
<set name="targetType" val="NONE" />
</skill>
<skill id="5561" levels="3" name="Seed of Revenge">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<table name="#abnormalLvls"> 2 3 4 </table>
<table name="#activationChance"> 10 10 0 </table>
<table name="#cAtk"> 1 1 1.25 </table>
@@ -1100,7 +1100,7 @@
<set name="icon" val="#icons" />
<set name="isMagic" val="2" /> <!-- Static Skill -->
<set name="isTriggeredSkill" val="true" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<for>
@@ -1117,7 +1117,7 @@
</for>
</skill>
<skill id="5562" levels="3" name="Spirit of the Phoenix">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<table name="#abnormalLvls"> 2 3 4 </table>
<table name="#activationChance"> 10 10 0 </table>
<table name="#elementRes"> 0 30 30 </table>
@@ -1130,7 +1130,7 @@
<set name="icon" val="#icons" />
<set name="isMagic" val="2" /> <!-- Static Skill -->
<set name="isTriggeredSkill" val="true" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<for>
@@ -1148,7 +1148,7 @@
</for>
</skill>
<skill id="5563" levels="3" name="Eva's Will">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<table name="#abnormalLvls"> 2 3 4 </table>
<table name="#activationChance"> 10 10 0 </table>
<table name="#icons"> icon.skill0786 icon.skill0786_2 icon.skill0786_3 </table>
@@ -1161,7 +1161,7 @@
<set name="icon" val="#icons" />
<set name="isMagic" val="2" /> <!-- Static Skill -->
<set name="isTriggeredSkill" val="true" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<for>
@@ -1178,7 +1178,7 @@
</for>
</skill>
<skill id="5564" levels="3" name="Pain of Shilen">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<table name="#abnormalLvls"> 2 3 4 </table>
<table name="#absorbDam"> 0 0 8 </table>
<table name="#activationChance"> 10 10 0 </table>
@@ -1191,7 +1191,7 @@
<set name="icon" val="#icons" />
<set name="isMagic" val="2" /> <!-- Static Skill -->
<set name="isTriggeredSkill" val="true" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<for>
@@ -1246,13 +1246,13 @@
<set name="targetType" val="NONE" />
</skill>
<skill id="5567" levels="1" name="Flame Armor">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="castRange" val="400" />
<set name="effectRange" val="900" />
<set name="icon" val="icon.skill1492" />
<set name="isMagic" val="2" /> <!-- Static Skill -->
<set name="isTriggeredSkill" val="true" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="ACTIVE_INSTANT" />
<set name="power" val="47" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
@@ -1262,7 +1262,7 @@
</for>
</skill>
<skill id="5568" levels="1" name="Frost Armor">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="abnormalLvl" val="3" />
<set name="abnormalTime" val="60" />
<set name="abnormalType" val="SPEED_DOWN" />
@@ -1275,7 +1275,7 @@
<set name="isMagic" val="2" /> <!-- Static Skill -->
<set name="isTriggeredSkill" val="true" />
<set name="lvlBonusRate" val="2" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="targetType" val="ONE" />
@@ -1286,7 +1286,7 @@
</for>
</skill>
<skill id="5569" levels="1" name="Hurricane Armor">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="abnormalLvl" val="3" />
<set name="abnormalTime" val="30" />
<set name="abnormalType" val="ATTACK_TIME_UP" />
@@ -1299,7 +1299,7 @@
<set name="isMagic" val="2" /> <!-- Static Skill -->
<set name="isTriggeredSkill" val="true" />
<set name="lvlBonusRate" val="2" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="targetType" val="ONE" />

View File

@@ -692,13 +692,13 @@
</for>
</skill>
<skill id="6059" levels="1" name="Counter Critical">
<!-- Confirmed CT2.5 -->
<!-- Confirmed CT2.5 and Updated to H5 -->
<set name="abnormalLvl" val="1" />
<set name="abnormalTime" val="8" />
<set name="abnormalType" val="COUNTER_CRITICAL_TRIGGER" />
<set name="icon" val="icon.skill1542" />
<set name="isTriggeredSkill" val="true" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="reuseDelay" val="15000" />
<set name="rideState" val="NONE" />
@@ -718,7 +718,7 @@
<set name="affectRange" val="1000" />
<set name="icon" val="icon.skill1543" />
<set name="isTriggeredSkill" val="true" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="reuseDelay" val="15000" />
<set name="rideState" val="NONE" />
@@ -975,7 +975,6 @@
</skill>
<skill id="6092" levels="1" name="Lightning Shock">
<!-- Confirmed CT2.5 and Updated to H5 -->
<!-- Lightning Shock end effect. -->
<set name="abnormalLvl" val="1" />
<set name="abnormalTime" val="5" />
<set name="abnormalType" val="PARALYZE" />
@@ -985,7 +984,7 @@
<set name="isDebuff" val="true" />
<set name="isMagic" val="2" /> <!-- Static Skill -->
<set name="isTriggeredSkill" val="true" />
<set name="magicLvl" val="81" />
<set name="magicLvl" val="83" />
<set name="operateType" val="ACTIVE_CONTINUOUS" />
<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
<set name="soulMaxConsumeCount" val="5" />