Effect list rework.

Contributed by Liamxroy.
This commit is contained in:
MobiusDev
2017-09-22 17:02:39 +00:00
parent d279eb7aa7
commit d571278f5f
448 changed files with 11336 additions and 7576 deletions

View File

@@ -49,6 +49,7 @@
<admin command="admin_getbuffs" accessLevel="100" />
<admin command="admin_stopbuff" accessLevel="100" />
<admin command="admin_stopallbuffs" accessLevel="100" confirmDlg="true" />
<admin command="admin_viewblockedeffects" accessLevel="100" />
<admin command="admin_areacancel" accessLevel="100" />
<admin command="admin_removereuse" accessLevel="100" />
<admin command="admin_switch_gm_buffs" accessLevel="100" />
@@ -180,6 +181,7 @@
<admin command="admin_social" accessLevel="100" />
<admin command="admin_social_menu" accessLevel="100" />
<admin command="admin_effect" accessLevel="100" />
<admin command="admin_npc_use_skill" accessLevel="100" />
<admin command="admin_effect_menu" accessLevel="100" />
<admin command="admin_ave_abnormal" accessLevel="100" />
<admin command="admin_play_sounds" accessLevel="100" />

View File

@@ -0,0 +1,34 @@
<html>
<head>
<title>Effects of %targetName%</title>
</head>
<body>
<table width="100%">
<tr>
<td width=45>
<button value="Main" action="bypass -h admin_admin" width=45 height=21 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</td>
<td width=180>
<center><font color="LEVEL">Effects of %targetName%</font></center>
</td>
<td width=45>
<button value="Back" action="bypass -h admin_current_player" width=45 height=21 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</td>
</tr>
</table>
<br>
<table width="100%">
<tr>
<td width=200>Skill</td>
<td width=30>Rem. Time</td>
<td width=70>Action</td>
</tr>
%buffs%
</table>
<br>%pages%<br>
<button value="View Blocked Effects" action="bypass -h admin_viewblockedeffects %targetObjId%" width=160 height=21 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Remove All" action="bypass -h admin_stopallbuffs %targetObjId%" width=80 height=21 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
<br>
Total buff count: %effectSize%
</body>
</html>

View File

@@ -371,7 +371,7 @@ public final class Race extends Event
player.standUp();
}
player.getEffectList().stopSkillEffects(true, AbnormalType.SPEED_UP);
player.getEffectList().stopEffects(AbnormalType.SPEED_UP);
player.stopSkillEffects(true, 268);
player.stopSkillEffects(true, 298); // Rabbit Spirit Totem
SkillData.getInstance().getSkill(_skill, 1).applyEffects(player, player);

View File

@@ -19,6 +19,7 @@ package handlers.admincommandhandlers;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import com.l2jmobius.Config;
@@ -29,6 +30,9 @@ import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.html.PageBuilder;
import com.l2jmobius.gameserver.model.html.PageResult;
import com.l2jmobius.gameserver.model.html.styles.ButtonsStyle;
import com.l2jmobius.gameserver.model.skills.AbnormalType;
import com.l2jmobius.gameserver.model.skills.BuffInfo;
import com.l2jmobius.gameserver.model.skills.Skill;
@@ -39,8 +43,6 @@ import com.l2jmobius.gameserver.util.GMAudit;
public class AdminBuffs implements IAdminCommandHandler
{
private static final int PAGE_LIMIT = 20;
private static final String[] ADMIN_COMMANDS =
{
"admin_buff",
@@ -48,6 +50,7 @@ public class AdminBuffs implements IAdminCommandHandler
"admin_getbuffs_ps",
"admin_stopbuff",
"admin_stopallbuffs",
"admin_viewblockedeffects",
"admin_areacancel",
"admin_removereuse",
"admin_switch_gm_buffs"
@@ -109,7 +112,7 @@ public class AdminBuffs implements IAdminCommandHandler
final L2PcInstance player = L2World.getInstance().getPlayer(playername);
if (player != null)
{
int page = 1;
int page = 0;
if (st.hasMoreTokens())
{
page = Integer.parseInt(st.nextToken());
@@ -122,7 +125,7 @@ public class AdminBuffs implements IAdminCommandHandler
}
else if ((activeChar.getTarget() != null) && activeChar.getTarget().isCharacter())
{
showBuffs(activeChar, (L2Character) activeChar.getTarget(), 1, command.endsWith("_ps"));
showBuffs(activeChar, (L2Character) activeChar.getTarget(), 0, command.endsWith("_ps"));
return true;
}
else
@@ -168,6 +171,23 @@ public class AdminBuffs implements IAdminCommandHandler
return false;
}
}
else if (command.startsWith("admin_viewblockedeffects"))
{
try
{
StringTokenizer st = new StringTokenizer(command, " ");
st.nextToken();
int objectId = Integer.parseInt(st.nextToken());
viewBlockedEffects(activeChar, objectId);
return true;
}
catch (Exception e)
{
activeChar.sendMessage("Failed viewing blocked effects: " + e.getMessage());
activeChar.sendMessage("Usage: //viewblockedeffects <objectId>");
return false;
}
}
else if (command.startsWith("admin_areacancel"))
{
final StringTokenizer st = new StringTokenizer(command, " ");
@@ -283,115 +303,48 @@ public class AdminBuffs implements IAdminCommandHandler
effects.addAll(target.getEffectList().getPassives());
}
if ((page > ((effects.size() / PAGE_LIMIT) + 1)) || (page < 1))
{
return;
}
final String pageLink = "bypass -h admin_getbuffs" + (passive ? "_ps " : " ") + target.getName();
int max = effects.size() / PAGE_LIMIT;
if (effects.size() > (PAGE_LIMIT * max))
final PageResult result = PageBuilder.newBuilder(effects, 3, pageLink).currentPage(page).style(ButtonsStyle.INSTANCE).bodyHandler((pages, info, sb) ->
{
max++;
}
final StringBuilder html = new StringBuilder(500 + (effects.size() * 200));
html.append("<html><table width=\"100%\"><tr><td width=45><button value=\"Main\" action=\"bypass -h admin_admin\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td width=180><center><font color=\"LEVEL\">Effects of ");
html.append(target.getName());
html.append("</font></td><td width=45><button value=\"Back\" action=\"bypass -h admin_current_player\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table><br><table width=\"100%\"><tr><td width=200>Skill</td><td width=30>Rem. Time</td><td width=70>Action</td></tr>");
final int start = ((page - 1) * PAGE_LIMIT);
final int end = Math.min(((page - 1) * PAGE_LIMIT) + PAGE_LIMIT, effects.size());
int count = 0;
for (BuffInfo info : effects)
{
if ((count >= start) && (count < end))
for (AbstractEffect effect : info.getEffects())
{
final Skill skill = info.getSkill();
for (AbstractEffect effect : info.getEffects())
{
html.append("<tr><td>");
html.append(!info.isInUse() ? FONT_RED1 : "");
html.append(skill.getName());
html.append(" Lv ");
html.append(skill.getLevel());
html.append(" (");
html.append(effect.getClass().getSimpleName());
html.append(")");
html.append(!info.isInUse() ? FONT_RED2 : "");
html.append("</td><td>");
html.append(skill.isToggle() ? "T (" + info.getTickCount(effect) + ")" : skill.isPassive() ? "P" : info.getTime() + "s");
html.append("</td><td><button value=\"X\" action=\"bypass -h admin_stopbuff ");
html.append(target.getObjectId());
html.append(" ");
html.append(skill.getId());
html.append("\" width=30 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>");
}
sb.append("<tr><td>");
sb.append(!info.isInUse() ? FONT_RED1 : "");
sb.append(info.getSkill().getName());
sb.append(" Lv ");
sb.append(info.getSkill().getLevel());
sb.append(" (");
sb.append(effect.getClass().getSimpleName());
sb.append(")");
sb.append(!info.isInUse() ? FONT_RED2 : "");
sb.append("</td><td>");
sb.append(info.getSkill().isToggle() ? "T (" + info.getTickCount(effect) + ")" : info.getSkill().isPassive() ? "P" : info.getTime() + "s");
sb.append("</td><td><button value=\"X\" action=\"bypass -h admin_stopbuff ");
sb.append(target.getObjectId());
sb.append(" ");
sb.append(info.getSkill().getId());
sb.append("\" width=30 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>");
}
count++;
}).build();
final NpcHtmlMessage html = new NpcHtmlMessage(0, 1);
html.setFile(activeChar.getHtmlPrefix(), "data/html/admin/getbuffs.htm");
if (result.getPages() > 0)
{
html.replace("%pages%", "<table width=280 cellspacing=0><tr>" + result.getPagerTemplate() + "</tr></table>");
}
else
{
html.replace("%pages%", "");
}
html.append("</table><table width=300 bgcolor=444444><tr>");
for (int x = 0; x < max; x++)
{
final int pagenr = x + 1;
if (page == pagenr)
{
html.append("<td>Page ");
html.append(pagenr);
html.append("</td>");
}
else
{
html.append("<td><a action=\"bypass -h admin_getbuffs" + (passive ? "_ps " : " "));
html.append(target.getName());
html.append(" ");
html.append(x + 1);
html.append("\"> Page ");
html.append(pagenr);
html.append(" </a></td>");
}
}
html.append("</tr></table>");
// Buttons
html.append("<br><center><button value=\"Refresh\" action=\"bypass -h admin_getbuffs");
html.append(passive ? "_ps " : " ");
html.append(target.getName());
html.append("\" width=80 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">");
html.append("<button value=\"Remove All\" action=\"bypass -h admin_stopallbuffs ");
html.append(target.getObjectId());
html.append("\" width=80 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"><br>");
// Legend
if (!passive)
{
html.append(FONT_RED1);
html.append("Inactive buffs: ");
html.append(target.getEffectList().getHiddenBuffsCount());
html.append(FONT_RED2);
html.append("<br>");
}
html.append("Total");
html.append(passive ? " passive" : "");
html.append(" buff count: ");
html.append(effects.size());
if ((target.getEffectList().getBlockedAbnormalTypes() != null) && !target.getEffectList().getBlockedAbnormalTypes().isEmpty())
{
html.append("<br>Blocked buff slots: ");
String slots = "";
for (AbnormalType slot : target.getEffectList().getBlockedAbnormalTypes())
{
slots += slot + ", ";
}
if (!slots.isEmpty() && (slots.length() > 3))
{
html.append(slots.substring(0, slots.length() - 2));
}
}
html.append("</html>");
// Send the packet
activeChar.sendPacket(new NpcHtmlMessage(0, 1, html.toString()));
html.replace("%targetName%", target.getName());
html.replace("%targetObjId%", target.getObjectId());
html.replace("%buffs%", result.getBodyTemplate().toString());
html.replace("%effectSize%", effects.size());
activeChar.sendPacket(html);
if (Config.GMAUDIT)
{
@@ -418,7 +371,7 @@ public class AdminBuffs implements IAdminCommandHandler
activeChar.sendMessage("Removed skill ID: " + skillId + " effects from " + target.getName() + " (" + objId + ").");
}
showBuffs(activeChar, target, 1, false);
showBuffs(activeChar, target, 0, false);
if (Config.GMAUDIT)
{
GMAudit.auditGMAction(activeChar.getName() + " [" + activeChar.getObjectId() + "]", "stopbuff", target.getName() + " (" + objId + ")", Integer.toString(skillId));
@@ -441,11 +394,54 @@ public class AdminBuffs implements IAdminCommandHandler
{
target.stopAllEffects();
activeChar.sendMessage("Removed all effects from " + target.getName() + " (" + objId + ")");
showBuffs(activeChar, target, 1, false);
showBuffs(activeChar, target, 0, false);
if (Config.GMAUDIT)
{
GMAudit.auditGMAction(activeChar.getName() + " [" + activeChar.getObjectId() + "]", "stopallbuffs", target.getName() + " (" + objId + ")", "");
}
}
}
private static void viewBlockedEffects(L2PcInstance activeChar, int objId)
{
L2Character target = null;
try
{
target = (L2Character) L2World.getInstance().findObject(objId);
}
catch (Exception e)
{
activeChar.sendMessage("Target with object id " + objId + " not found.");
return;
}
if (target != null)
{
final Set<AbnormalType> blockedAbnormals = target.getEffectList().getBlockedAbnormalTypes();
final int blockedAbnormalsSize = blockedAbnormals != null ? blockedAbnormals.size() : 0;
final StringBuilder html = new StringBuilder(500 + (blockedAbnormalsSize * 50));
html.append("<html><table width=\"100%\"><tr><td width=45><button value=\"Main\" action=\"bypass -h admin_admin\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td width=180><center><font color=\"LEVEL\">Blocked effects of ");
html.append(target.getName());
html.append("</font></td><td width=45><button value=\"Back\" action=\"bypass -h admin_getbuffs" + (target.isPlayer() ? (" " + target.getName()) : "") + "\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table><br>");
if ((blockedAbnormals != null) && !blockedAbnormals.isEmpty())
{
html.append("<br>Blocked buff slots: ");
for (AbnormalType slot : blockedAbnormals)
{
html.append("<br>").append(slot.toString());
}
}
html.append("</html>");
// Send the packet
activeChar.sendPacket(new NpcHtmlMessage(0, 1, html.toString()));
if (Config.GMAUDIT)
{
GMAudit.auditGMAction(activeChar.getName() + " [" + activeChar.getObjectId() + "]", "viewblockedeffects", target.getName() + " (" + Integer.toString(target.getObjectId()) + ")", "");
}
}
}
}

View File

@@ -39,6 +39,7 @@ import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.Earthquake;
import com.l2jmobius.gameserver.network.serverpackets.ExRedSky;
import com.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect;
import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
import com.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
@@ -100,6 +101,7 @@ public class AdminEffects implements IAdminCommandHandler
"admin_setteam",
"admin_social",
"admin_effect",
"admin_npc_use_skill",
"admin_effect_menu",
"admin_ave_abnormal",
"admin_social_menu",
@@ -126,16 +128,16 @@ public class AdminEffects implements IAdminCommandHandler
{
activeChar.setInvisible(true);
activeChar.broadcastUserInfo();
activeChar.sendPacket(new ExUserInfoAbnormalVisualEffect(activeChar));
activeChar.decayMe();
activeChar.spawnMe();
activeChar.startAbnormalVisualEffect(AbnormalVisualEffect.STEALTH);
activeChar.sendMessage("You are now invisible.");
}
else
{
activeChar.setInvisible(false);
activeChar.broadcastUserInfo();
activeChar.stopAbnormalVisualEffect(AbnormalVisualEffect.STEALTH);
activeChar.sendPacket(new ExUserInfoAbnormalVisualEffect(activeChar));
activeChar.sendMessage("You are now visible.");
}
@@ -146,16 +148,16 @@ public class AdminEffects implements IAdminCommandHandler
{
activeChar.setInvisible(true);
activeChar.broadcastUserInfo();
activeChar.sendPacket(new ExUserInfoAbnormalVisualEffect(activeChar));
activeChar.decayMe();
activeChar.spawnMe();
activeChar.startAbnormalVisualEffect(AbnormalVisualEffect.STEALTH);
activeChar.sendMessage("You are now invisible.");
}
else if (command.startsWith("admin_vis"))
{
activeChar.setInvisible(false);
activeChar.broadcastUserInfo();
activeChar.stopAbnormalVisualEffect(AbnormalVisualEffect.STEALTH);
activeChar.sendPacket(new ExUserInfoAbnormalVisualEffect(activeChar));
activeChar.sendMessage("You are now visible.");
}
else if (command.startsWith("admin_setinvis"))
@@ -236,7 +238,7 @@ public class AdminEffects implements IAdminCommandHandler
{
if (!player.isGM())
{
player.startAbnormalVisualEffect(AbnormalVisualEffect.PARALYZE);
player.getEffectList().startAbnormalVisualEffect(AbnormalVisualEffect.PARALYZE);
player.setBlockActions(true);
player.startParalyze();
player.broadcastInfo();
@@ -247,7 +249,7 @@ public class AdminEffects implements IAdminCommandHandler
{
L2World.getInstance().forEachVisibleObject(activeChar, L2PcInstance.class, player ->
{
player.stopAbnormalVisualEffect(AbnormalVisualEffect.PARALYZE);
player.getEffectList().stopAbnormalVisualEffect(AbnormalVisualEffect.PARALYZE);
player.setBlockActions(false);
player.broadcastInfo();
@@ -272,11 +274,11 @@ public class AdminEffects implements IAdminCommandHandler
player = (L2Character) target;
if (type.equals("1"))
{
player.startAbnormalVisualEffect(AbnormalVisualEffect.PARALYZE);
player.getEffectList().startAbnormalVisualEffect(AbnormalVisualEffect.PARALYZE);
}
else
{
player.startAbnormalVisualEffect(AbnormalVisualEffect.FLESH_STONE);
player.getEffectList().startAbnormalVisualEffect(AbnormalVisualEffect.FLESH_STONE);
}
player.setBlockActions(true);
player.startParalyze();
@@ -306,11 +308,11 @@ public class AdminEffects implements IAdminCommandHandler
player = (L2Character) target;
if (type.equals("1"))
{
player.stopAbnormalVisualEffect(AbnormalVisualEffect.PARALYZE);
player.getEffectList().stopAbnormalVisualEffect(AbnormalVisualEffect.PARALYZE);
}
else
{
player.stopAbnormalVisualEffect(AbnormalVisualEffect.FLESH_STONE);
player.getEffectList().stopAbnormalVisualEffect(AbnormalVisualEffect.FLESH_STONE);
}
player.setBlockActions(false);
player.broadcastInfo();
@@ -329,7 +331,7 @@ public class AdminEffects implements IAdminCommandHandler
if (target instanceof L2Character)
{
player = (L2Character) target;
player.startAbnormalVisualEffect(AbnormalVisualEffect.BIG_HEAD);
player.getEffectList().startAbnormalVisualEffect(AbnormalVisualEffect.BIG_HEAD);
}
}
catch (Exception e)
@@ -345,7 +347,7 @@ public class AdminEffects implements IAdminCommandHandler
if (target instanceof L2Character)
{
player = (L2Character) target;
player.stopAbnormalVisualEffect(AbnormalVisualEffect.BIG_HEAD);
player.getEffectList().stopAbnormalVisualEffect(AbnormalVisualEffect.BIG_HEAD);
}
}
catch (Exception e)
@@ -604,7 +606,7 @@ public class AdminEffects implements IAdminCommandHandler
return true;
}
}
else if (command.startsWith("admin_effect"))
else if (command.startsWith("admin_effect") || command.startsWith("admin_npc_use_skill"))
{
try
{
@@ -707,13 +709,13 @@ public class AdminEffects implements IAdminCommandHandler
if (target instanceof L2Character)
{
final L2Character character = (L2Character) target;
if (!character.hasAbnormalVisualEffect(ave))
if (!character.getEffectList().hasAbnormalVisualEffect(ave))
{
character.startAbnormalVisualEffect(ave);
character.getEffectList().startAbnormalVisualEffect(ave);
}
else
{
character.stopAbnormalVisualEffect(ave);
character.getEffectList().stopAbnormalVisualEffect(ave);
}
return true;
}

View File

@@ -70,7 +70,7 @@ public final class Detection extends AbstractEffect
}
// Remove Hide.
target.getEffectList().stopSkillEffects(true, AbnormalType.HIDE);
target.getEffectList().stopEffects(AbnormalType.HIDE);
}
}
}

View File

@@ -17,18 +17,15 @@
package handlers.effecthandlers;
import java.util.Collections;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import com.l2jmobius.gameserver.model.CharEffectList;
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.effects.L2EffectType;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.AbnormalType;
import com.l2jmobius.gameserver.model.skills.BuffInfo;
import com.l2jmobius.gameserver.model.skills.Skill;
/**
@@ -42,10 +39,10 @@ public final class DispelBySlot extends AbstractEffect
public DispelBySlot(StatsSet params)
{
_dispel = params.getString("dispel", null);
_dispel = params.getString("dispel");
if ((_dispel != null) && !_dispel.isEmpty())
{
_dispelAbnormals = new EnumMap<>(AbnormalType.class);
_dispelAbnormals = new HashMap<>();
for (String ngtStack : _dispel.split(";"))
{
final String[] ngt = ngtStack.split(",");
@@ -78,32 +75,27 @@ public final class DispelBySlot extends AbstractEffect
return;
}
final CharEffectList effectList = effected.getEffectList();
// There is no need to iterate over all buffs,
// Just iterate once over all slots to dispel and get the buff with that abnormal if exists,
// Operation of O(n) for the amount of slots to dispel (which is usually small) and O(1) to get the buff.
for (Entry<AbnormalType, Short> entry : _dispelAbnormals.entrySet())
// Continue only if target has any of the abnormals. Save useless cycles.
if (effected.getEffectList().hasAbnormalType(_dispelAbnormals.keySet()))
{
// Dispel transformations (buff and by GM)
if ((entry.getKey() == AbnormalType.TRANSFORM))
final Short transformToDispel = _dispelAbnormals.get(AbnormalType.TRANSFORM);
if ((transformToDispel != null) && ((transformToDispel == effected.getTransformationId()) || (transformToDispel < 0)))
{
if ((entry.getValue() == effected.getTransformationId()) || (entry.getValue() < 0))
effected.stopTransformation(true);
}
effected.getEffectList().stopEffects(info ->
{
// We have already dealt with transformation from above.
if (info.isAbnormalType(AbnormalType.TRANSFORM))
{
effected.stopTransformation(true);
continue;
return false;
}
}
final BuffInfo toDispel = effectList.getBuffInfoByAbnormalType(entry.getKey());
if (toDispel == null)
{
continue;
}
if ((entry.getKey() == toDispel.getSkill().getAbnormalType()) && ((entry.getValue() < 0) || (entry.getValue() >= toDispel.getSkill().getAbnormalLvl())))
{
effectList.stopSkillEffects(true, entry.getKey());
}
final Short abnormalLevel = _dispelAbnormals.get(info.getSkill().getAbnormalType());
return (abnormalLevel != null) && ((abnormalLevel < 0) || (abnormalLevel >= info.getSkill().getAbnormalLvl()));
}, true);
}
}
}

View File

@@ -20,7 +20,6 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import com.l2jmobius.gameserver.model.CharEffectList;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
@@ -39,7 +38,7 @@ public final class DispelBySlotMyself extends AbstractEffect
public DispelBySlotMyself(StatsSet params)
{
final String dispel = params.getString("dispel", null);
String dispel = params.getString("dispel");
if ((dispel != null) && !dispel.isEmpty())
{
_dispelAbnormals = new HashSet<>();
@@ -74,14 +73,7 @@ public final class DispelBySlotMyself extends AbstractEffect
return;
}
final CharEffectList effectList = effected.getEffectList();
// There is no need to iterate over all buffs,
// Just iterate once over all slots to dispel and get the buff with that abnormal if exists,
// Operation of O(n) for the amount of slots to dispel (which is usually small) and O(1) to get the buff.
for (AbnormalType entry : _dispelAbnormals)
{
// The effectlist should already check if it has buff with this abnormal type or not.
effectList.stopSkillEffects(true, entry);
}
// The effectlist should already check if it has buff with this abnormal type or not.
effected.getEffectList().stopEffects(info -> !info.getSkill().isIrreplacableBuff() && _dispelAbnormals.contains(info.getSkill().getAbnormalType()), true);
}
}

View File

@@ -17,19 +17,16 @@
package handlers.effecthandlers;
import java.util.Collections;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import com.l2jmobius.commons.util.Rnd;
import com.l2jmobius.gameserver.model.CharEffectList;
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.effects.L2EffectType;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.AbnormalType;
import com.l2jmobius.gameserver.model.skills.BuffInfo;
import com.l2jmobius.gameserver.model.skills.Skill;
/**
@@ -44,14 +41,14 @@ public final class DispelBySlotProbability extends AbstractEffect
public DispelBySlotProbability(StatsSet params)
{
_dispel = params.getString("dispel", null);
_dispel = params.getString("dispel");
_rate = params.getInt("rate", 100);
if ((_dispel != null) && !_dispel.isEmpty())
{
_dispelAbnormals = new EnumMap<>(AbnormalType.class);
_dispelAbnormals = new HashMap<>();
for (String ngtStack : _dispel.split(";"))
{
final String[] ngt = ngtStack.split(",");
String[] ngt = ngtStack.split(",");
_dispelAbnormals.put(AbnormalType.getAbnormalType(ngt[0]), Short.MAX_VALUE);
}
}
@@ -81,34 +78,26 @@ public final class DispelBySlotProbability extends AbstractEffect
return;
}
final CharEffectList effectList = effected.getEffectList();
// There is no need to iterate over all buffs,
// Just iterate once over all slots to dispel and get the buff with that abnormal if exists,
// Operation of O(n) for the amount of slots to dispel (which is usually small) and O(1) to get the buff.
for (Entry<AbnormalType, Short> entry : _dispelAbnormals.entrySet())
// Dispel transformations (buff and by GM)
if ((Rnd.get(100) < _rate))
{
if ((Rnd.get(100) < _rate))
final Short transformToDispel = _dispelAbnormals.get(AbnormalType.TRANSFORM);
if ((transformToDispel != null) && ((transformToDispel == effected.getTransformationId()) || (transformToDispel < 0)))
{
// Dispel transformations (buff and by GM)
if ((entry.getKey() == AbnormalType.TRANSFORM))
{
if ((entry.getValue() == effected.getTransformationId()) || (entry.getValue() < 0))
{
effected.stopTransformation(true);
}
}
final BuffInfo toDispel = effectList.getBuffInfoByAbnormalType(entry.getKey());
if (toDispel == null)
{
continue;
}
if ((toDispel.getSkill().getAbnormalType() == entry.getKey()) && (entry.getValue() >= toDispel.getSkill().getAbnormalLvl()))
{
effectList.stopSkillEffects(true, entry.getKey());
}
effected.stopTransformation(true);
}
}
effected.getEffectList().stopEffects(info ->
{
// We have already dealt with transformation from above.
if (info.isAbnormalType(AbnormalType.TRANSFORM))
{
return false;
}
final Short abnormalLevel = (Rnd.get(100) < _rate) ? _dispelAbnormals.get(info.getSkill().getAbnormalType()) : null;
return (abnormalLevel != null) && ((abnormalLevel < 0) || (abnormalLevel >= info.getSkill().getAbnormalLvl()));
}, true);
}
}

View File

@@ -59,7 +59,7 @@ public final class MagicalAbnormalDispelAttack extends AbstractEffect
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{
// First dispells the effect, then does damage. Sometimes the damage is evaded, but debuff is still dispelled.
if (effector.isAlikeDead() || (_abnormalType == AbnormalType.NONE) || !effected.getEffectList().stopSkillEffects(true, _abnormalType))
if (effector.isAlikeDead() || (_abnormalType == AbnormalType.NONE) || !effected.getEffectList().stopEffects(_abnormalType))
{
return;
}

View File

@@ -82,7 +82,7 @@ public final class MagicalAttack extends AbstractEffect
double damage = Formulas.calcMagicDam(effector, effected, skill, effector.getMAtk(), _power, effected.getMDef(), sps, bss, mcrit);
// Apply debuff mod
if (effected.getEffectList().hasDebuffs())
if (effected.getEffectList().getDebuffCount() > 0)
{
damage *= _debuffModifier;
}

View File

@@ -76,7 +76,7 @@ public final class StealAbnormal extends AbstractEffect
stolen.setAbnormalTime(infoToSteal.getTime()); // Copy the remaining time.
// To include all the effects, it's required to go through the template rather the buff info.
infoToSteal.getSkill().applyEffectScope(EffectScope.GENERAL, stolen, true, true);
effected.getEffectList().remove(true, infoToSteal, null);
effected.getEffectList().remove(infoToSteal, true, true);
effector.getEffectList().add(stolen);
}
}

View File

@@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.skills.AbnormalType;
import com.l2jmobius.gameserver.model.skills.BuffInfo;
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
import com.l2jmobius.gameserver.model.skills.Skill;
@@ -45,12 +44,8 @@ public class OpCheckAbnormalSkillCondition implements ISkillCondition
{
if (target.isCharacter())
{
final BuffInfo info = ((L2Character) target).getEffectList().getBuffInfoByAbnormalType(_type);
if (_hasAbnormal)
{
return (info != null) && (info.getSkill().getAbnormalLvl() >= _level);
}
return (info == null) || (info.getSkill().getAbnormalLvl() < _level);
final boolean hasAbnormal = ((L2Character) target).getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level));
return _hasAbnormal ? hasAbnormal : !hasAbnormal;
}
return false;
}

View File

@@ -6465,6 +6465,7 @@
<value level="4">9</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>35</activateRate>
@@ -7132,6 +7133,7 @@
<value level="7">9</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>

View File

@@ -475,6 +475,7 @@
<value level="5">9</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>35</activateRate>
@@ -1719,6 +1720,7 @@
<value level="5">8</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>

View File

@@ -999,6 +999,7 @@
<value level="52">8</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>50</activateRate>

View File

@@ -5929,6 +5929,7 @@
<value level="10">8</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>50</activateRate>

View File

@@ -941,6 +941,7 @@
<!-- Confirmed CT2.5 -->
<abnormalLvl>1</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>50</activateRate>
@@ -2024,6 +2025,7 @@
<value level="4">7</value>
</abnormalLvl>
<abnormalTime>10</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>50</activateRate>
@@ -2545,6 +2547,7 @@
<value level="4">7</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>
@@ -3066,6 +3069,7 @@
<value level="4">7</value>
</abnormalLvl>
<abnormalTime>10</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<activateRate>50</activateRate>
<affectLimit>5-12</affectLimit>

View File

@@ -1711,6 +1711,7 @@
<skill id="688" toLevel="1" name="Divine Rogue Bleed Attack">
<abnormalLvl>3</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>50</activateRate>

View File

@@ -1590,6 +1590,7 @@
<!-- Confirmed CT2.5 -->
<abnormalLvl>8</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>
@@ -2052,6 +2053,7 @@
<!-- Confirmed CT2.5 -->
<abnormalLvl>3</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>50</activateRate>
@@ -3857,6 +3859,7 @@
<skill id="798" toLevel="1" name="Divine Warrior Crippling Attack">
<abnormalLvl>3</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>50</activateRate>

View File

@@ -247,6 +247,7 @@
<skill id="904" toLevel="6" name="Corpse Burst">
<abnormalLvl>8</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<activateRate>80</activateRate>
<affectLimit>6-12</affectLimit>
@@ -589,6 +590,7 @@
<skill id="909" toLevel="6" name="Ice Fog">
<abnormalLvl>8</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<activateRate>80</activateRate>
<affectLimit>6-12</affectLimit>
@@ -679,6 +681,7 @@
<skill id="910" toLevel="6" name="Water Jet">
<abnormalLvl>1</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<activateRate>80</activateRate>
<affectLimit>6-12</affectLimit>
@@ -2950,6 +2953,7 @@
<!-- Confirmed CT2.5 -->
<abnormalLvl>6</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>

View File

@@ -4457,6 +4457,7 @@
<value level="5">6</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>

View File

@@ -2892,6 +2892,7 @@
<value level="7">9</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>35</activateRate>
@@ -2975,6 +2976,7 @@
<value level="7">8</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>

View File

@@ -530,6 +530,7 @@
<value level="6">8</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>60</activateRate>
@@ -3944,6 +3945,7 @@
<value level="19">8</value>
</abnormalLvl>
<abnormalTime>15</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>50</activateRate>

View File

@@ -4221,7 +4221,7 @@
<slot>SONG_OF_WARDING</slot>
</effect>
<effect name="DispelBySlotProbability">
<slot>SONG_OF_WARDING</slot>
<dispel>SONG_OF_WARDING</dispel>
</effect>
<effect name="MAtk">
<amount>20</amount>
@@ -4259,7 +4259,7 @@
<slot>SONG_OF_WARDING</slot>
</effect>
<effect name="DispelBySlotProbability">
<slot>SONG_OF_WARDING</slot>
<dispel>SONG_OF_WARDING</dispel>
</effect>
<effect name="MAtk">
<amount>20</amount>
@@ -4305,7 +4305,7 @@
<slot>SONG_OF_EARTH</slot>
</effect>
<effect name="DispelBySlotProbability">
<slot>SONG_OF_EARTH</slot>
<dispel>SONG_OF_EARTH</dispel>
</effect>
<effect name="PAtk">
<amount>12</amount>
@@ -4343,7 +4343,7 @@
<slot>SONG_OF_EARTH</slot>
</effect>
<effect name="DispelBySlotProbability">
<slot>SONG_OF_EARTH</slot>
<dispel>SONG_OF_EARTH</dispel>
</effect>
<effect name="PAtk">
<amount>12</amount>
@@ -4389,7 +4389,7 @@
<slot>SONG_OF_VITALITY</slot>
</effect>
<effect name="DispelBySlotProbability">
<slot>SONG_OF_VITALITY</slot>
<dispel>SONG_OF_VITALITY</dispel>
</effect>
<effect name="MaxHp">
<amount>30</amount>
@@ -4427,7 +4427,7 @@
<slot>SONG_OF_VITALITY</slot>
</effect>
<effect name="DispelBySlotProbability">
<slot>SONG_OF_VITALITY</slot>
<dispel>SONG_OF_VITALITY</dispel>
</effect>
<effect name="MaxHp">
<amount>30</amount>
@@ -4473,7 +4473,7 @@
<slot>SONG_OF_VENGEANCE</slot>
</effect>
<effect name="DispelBySlotProbability">
<slot>SONG_OF_VENGEANCE</slot>
<dispel>SONG_OF_VENGEANCE</dispel>
</effect>
<effect name="VampiricAttack">
<amount>8</amount>
@@ -4510,7 +4510,7 @@
<slot>SONG_OF_VENGEANCE</slot>
</effect>
<effect name="DispelBySlotProbability">
<slot>SONG_OF_VENGEANCE</slot>
<dispel>SONG_OF_VENGEANCE</dispel>
</effect>
<effect name="VampiricAttack">
<amount>8</amount>
@@ -4555,7 +4555,7 @@
<slot>SONG_OF_RENEWAL</slot>
</effect>
<effect name="DispelBySlotProbability">
<slot>SONG_OF_RENEWAL</slot>
<dispel>SONG_OF_RENEWAL</dispel>
</effect>
<effect name="MagicCriticalRate">
<amount>100</amount>
@@ -4614,7 +4614,7 @@
<slot>SONG_OF_RENEWAL</slot>
</effect>
<effect name="DispelBySlotProbability">
<slot>SONG_OF_RENEWAL</slot>
<dispel>SONG_OF_RENEWAL</dispel>
</effect>
<effect name="MagicCriticalRate">
<amount>100</amount>
@@ -4693,7 +4693,7 @@
<slot>SONG_OF_MEDITATION</slot>
</effect>
<effect name="DispelBySlotProbability">
<slot>SONG_OF_MEDITATION</slot>
<dispel>SONG_OF_MEDITATION</dispel>
</effect>
<effect name="MagicalAttackSpeed">
<amount>30</amount>
@@ -4740,7 +4740,7 @@
<slot>SONG_OF_MEDITATION</slot>
</effect>
<effect name="DispelBySlotProbability">
<slot>SONG_OF_MEDITATION</slot>
<dispel>SONG_OF_MEDITATION</dispel>
</effect>
<effect name="MagicalAttackSpeed">
<amount>30</amount>

View File

@@ -23,6 +23,7 @@
<skill id="3005" toLevel="1" name="Bleed">
<abnormalLvl>5</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>50</activateRate>
@@ -432,6 +433,7 @@
<value level="6">7</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>
@@ -479,6 +481,7 @@
<!-- Confirmed CT2.5 -->
<abnormalLvl>5</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>
@@ -610,6 +613,7 @@
<value level="6">7</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>
@@ -1185,6 +1189,7 @@
<value level="6">7</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>
@@ -1250,6 +1255,7 @@
<value level="6">7</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>
@@ -1900,6 +1906,7 @@
<!-- Confirmed CT2.5 -->
<abnormalLvl>7</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>42</activateRate>
@@ -1929,6 +1936,7 @@
<!-- Confirmed CT2.5 -->
<abnormalLvl>7</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>35</activateRate>
@@ -1962,6 +1970,7 @@
<!-- Confirmed CT2.5 -->
<abnormalLvl>7</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>12</activateRate>
@@ -1995,6 +2004,7 @@
<!-- Confirmed CT2.5 -->
<abnormalLvl>7</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>24</activateRate>
@@ -2119,6 +2129,7 @@
<!-- Confirmed CT2.5 -->
<abnormalLvl>7</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>10</activateRate>
@@ -2156,6 +2167,7 @@
<!-- Confirmed CT2.5 -->
<abnormalLvl>7</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>18</activateRate>
@@ -3067,6 +3079,7 @@
<value level="20">8</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>40</activateRate>
@@ -3160,6 +3173,7 @@
<value level="20">8</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>40</activateRate>

View File

@@ -202,6 +202,7 @@
<value level="20">8</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>40</activateRate>
@@ -296,6 +297,7 @@
<value level="20">8</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>40</activateRate>
@@ -974,6 +976,7 @@
<value level="20">8</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>40</activateRate>
@@ -1067,6 +1070,7 @@
<value level="20">8</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>40</activateRate>
@@ -6753,6 +6757,7 @@
<value level="15">8</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>40</activateRate>
@@ -6883,6 +6888,7 @@
<value level="15">8</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>40</activateRate>

View File

@@ -929,6 +929,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>
@@ -1014,6 +1015,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>35</activateRate>
@@ -1836,6 +1838,7 @@
<value level="15">8</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>
@@ -3271,6 +3274,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>

View File

@@ -2014,6 +2014,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>5</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>10</activateRate>
@@ -2081,6 +2082,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>5</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>10</activateRate>
@@ -4027,6 +4029,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>90</activateRate>
@@ -4476,6 +4479,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>90</activateRate>
@@ -5139,6 +5143,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>90</activateRate>

View File

@@ -306,6 +306,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>90</activateRate>
@@ -1788,6 +1789,7 @@
<!-- Freya retail confirmed -->
<abnormalLvl>9</abnormalLvl>
<abnormalTime>3600</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<castRange>2000</castRange>
@@ -2611,6 +2613,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>35</activateRate>

View File

@@ -419,6 +419,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<castRange>1500</castRange>
@@ -2496,6 +2497,7 @@
<!-- Freya retail confirmed -->
<abnormalLvl>10</abnormalLvl>
<abnormalTime>120</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<castRange>600</castRange>
<effectPoint>100</effectPoint>

View File

@@ -2483,6 +2483,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>
@@ -2715,6 +2716,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>
@@ -3878,6 +3880,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>
@@ -3961,6 +3964,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>
@@ -4044,6 +4048,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>

View File

@@ -549,6 +549,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>35</activateRate>
@@ -1054,6 +1055,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>50</activateRate>
@@ -2931,6 +2933,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>35</activateRate>

View File

@@ -2705,6 +2705,7 @@
<value level="15">8</value>
</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>40</activateRate>
@@ -2787,6 +2788,7 @@
<value level="15">8</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>40</activateRate>

View File

@@ -1558,6 +1558,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>15</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>
@@ -1700,6 +1701,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>10</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>
@@ -2654,6 +2656,7 @@
<!-- Confirmed CT2.5 -->
<abnormalLvl>1</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>80</activateRate>

View File

@@ -130,6 +130,7 @@
<value level="9">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -214,6 +215,7 @@
<value level="9">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -352,6 +354,7 @@
<!-- Condition causing target to instantly decrease HP by poison. Effect 8-10. -->
<abnormalLvl>8</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>60</activateRate>
@@ -560,6 +563,7 @@
<value level="9">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -643,6 +647,7 @@
<value level="9">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -1795,6 +1800,7 @@
<value level="9">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -2930,6 +2936,7 @@
<value level="9">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -3014,6 +3021,7 @@
<value level="9">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -3129,6 +3137,7 @@
<!-- Condition causing target to instantly decrease HP by poison. Effect 8-10. -->
<abnormalLvl>8</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>60</activateRate>
@@ -3288,6 +3297,7 @@
<value level="9">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -3371,6 +3381,7 @@
<value level="9">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -4384,6 +4395,7 @@
<value level="9">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>80</activateRate>

View File

@@ -332,6 +332,7 @@
<!-- Condition causing target to be poisoned. -->
<abnormalLvl>1</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -392,6 +393,7 @@
<!-- Condition causing target to instantly decrease HP by bleeding. Effect 2-10. -->
<abnormalLvl>1</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -991,6 +993,7 @@
<skill id="5444" toLevel="2" name="Maul">
<abnormalLvl>3</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>50</activateRate>
@@ -1217,6 +1220,7 @@
<value level="7">8</value>
</abnormalLvl>
<abnormalTime>5</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<activateRate>80</activateRate>
<isTriggeredSkill>true</isTriggeredSkill>
@@ -1958,6 +1962,7 @@
<!-- Beleth Skills -->
<abnormalLvl>10</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>

View File

@@ -5,6 +5,7 @@
<!-- Darion Skills -->
<abnormalLvl>10</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>90</activateRate>
@@ -860,6 +861,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>10</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>
@@ -2877,6 +2879,7 @@
<skill id="5594" toLevel="1" name="Poison">
<abnormalLvl>10</abnormalLvl>
<abnormalTime>5</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>11</activateRate>
@@ -2897,6 +2900,7 @@
<skill id="5595" toLevel="1" name="Bleed">
<abnormalLvl>10</abnormalLvl>
<abnormalTime>5</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>11</activateRate>

View File

@@ -2961,6 +2961,7 @@
<!-- Masterwork Dagger of Poison (3861) -->
<abnormalLvl>8</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>

View File

@@ -151,6 +151,7 @@
<skill id="5706" toLevel="1" name="Poison">
<abnormalLvl>7</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>
@@ -2912,6 +2913,7 @@
<skill id="5795" toLevel="1" name="Poison">
<abnormalLvl>9</abnormalLvl>
<abnormalTime>30</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>
@@ -3000,6 +3002,7 @@
<skill id="5799" toLevel="1" name="Bleed">
<abnormalLvl>9</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>90</activateRate>

View File

@@ -1087,6 +1087,7 @@
<value level="12">10</value>
</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>
@@ -1467,6 +1468,7 @@
<value level="10">10</value>
</abnormalLvl>
<abnormalTime>60</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>
@@ -1514,6 +1516,7 @@
<value level="10">10</value>
</abnormalLvl>
<abnormalTime>60</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>
@@ -1565,6 +1568,7 @@
<value level="10">10</value>
</abnormalLvl>
<abnormalTime>60</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>
@@ -1615,6 +1619,7 @@
<value level="10">10</value>
</abnormalLvl>
<abnormalTime>60</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>
@@ -1663,6 +1668,7 @@
<value level="10">10</value>
</abnormalLvl>
<abnormalTime>60</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -1709,6 +1715,7 @@
<value level="10">10</value>
</abnormalLvl>
<abnormalTime>60</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -1758,6 +1765,7 @@
<value level="10">10</value>
</abnormalLvl>
<abnormalTime>60</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -1950,6 +1958,7 @@
<skill id="5879" toLevel="1" name="Cruel Expunge">
<abnormalLvl>9</abnormalLvl>
<abnormalTime>60</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -2059,6 +2068,7 @@
<skill id="5883" toLevel="1" name="Meggling Injury">
<abnormalLvl>9</abnormalLvl>
<abnormalTime>60</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>80</activateRate>

View File

@@ -1331,6 +1331,7 @@
<skill id="5960" toLevel="1" name="Stronghold Reactivate">
<abnormalLvl>2</abnormalLvl>
<abnormalTime>5</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>10</activateRate>

View File

@@ -27,6 +27,7 @@
<!-- Confirmed CT2.5 -->
<abnormalLvl>6</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -1178,6 +1179,7 @@
<skill id="6269" toLevel="1" name="Trojan Poison">
<abnormalLvl>10</abnormalLvl>
<abnormalTime>10</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>80</activateRate>

View File

@@ -180,6 +180,7 @@
<!-- Monastery of Silence Skills -->
<abnormalLvl>3</abnormalLvl>
<abnormalTime>10</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>
@@ -919,6 +920,7 @@
<!-- Sel Mahum Training Grounds Skills -->
<abnormalLvl>3</abnormalLvl>
<abnormalTime>3</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>1</activateRate>
@@ -1083,6 +1085,7 @@
<!-- Sel Mahum Training Grounds Skills -->
<abnormalLvl>3</abnormalLvl>
<abnormalTime>3</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>1</activateRate>
@@ -1609,6 +1612,7 @@
<!-- Profuse bleeding causes you to loss 93 HP per second for 15 seconds. -->
<abnormalLvl>3</abnormalLvl>
<abnormalTime>15</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>
@@ -1700,6 +1704,7 @@
<skill id="6382" toLevel="1" name="Bistakon Rolling Claw">
<abnormalLvl>3</abnormalLvl>
<abnormalTime>15</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>
@@ -1786,6 +1791,7 @@
<skill id="6385" toLevel="1" name="Bistakon Critical Claw">
<abnormalLvl>3</abnormalLvl>
<abnormalTime>15</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>

View File

@@ -604,6 +604,7 @@
<skill id="6437" toLevel="7" name="Freezing Core Area">
<abnormalLvl>10</abnormalLvl>
<abnormalTime>15</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -640,6 +641,7 @@
<skill id="6438" toLevel="1" name="Penalty Area">
<abnormalLvl>10</abnormalLvl>
<abnormalTime>15</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>80</activateRate>

View File

@@ -715,6 +715,7 @@
<!-- "For 5 seconds, inflicted with poison with 800 HP decrease per second." -->
<operateType>A2</operateType>
<effectPoint>-100</effectPoint>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<basicProperty>PHYSICAL</basicProperty>
<rideState>NONE</rideState>
@@ -882,6 +883,7 @@
<!-- FIXME: value unconfirmed -->
<abnormalLvl>9</abnormalLvl>
<abnormalTime>120</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>30</activateRate>
@@ -1172,6 +1174,7 @@
<!-- FIXME: value unconfirmed -->
<abnormalLvl>9</abnormalLvl>
<abnormalTime>120</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -1833,6 +1836,7 @@
<!-- High Five Skill -->
<abnormalLvl>9</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>80</activateRate>

View File

@@ -453,6 +453,7 @@
<skill id="6815" toLevel="16" name="Deadly Poison">
<!-- "Poison seeps deeper and for 10 seconds, 800 HP is decreased every second. If not treated, the poison will worsen." -->
<operateType>A2</operateType>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<basicProperty>PHYSICAL</basicProperty>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
@@ -490,6 +491,7 @@
<skill id="6816" toLevel="16" name="Deadly Bleed">
<!-- "Bleed becomes deeper and for 10 seconds, 800 HP is decreased every second. If not treated, the bleed will worsen." -->
<operateType>A2</operateType>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<basicProperty>PHYSICAL</basicProperty>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
@@ -723,6 +725,7 @@
<effectPoint>-10000</effectPoint>
<icon>icon.skill0096</icon>
<operateType>A2</operateType>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>-5</magicCriticalRate>
@@ -825,6 +828,7 @@
<effectPoint>-10000</effectPoint>
<icon>icon.skill0096</icon>
<operateType>A2</operateType>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>-5</magicCriticalRate>
@@ -1493,6 +1497,7 @@
<!-- FIXME: value unconfirmed -->
<abnormalLvl>9</abnormalLvl>
<abnormalTime>6</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>70</activateRate>
@@ -1525,6 +1530,7 @@
<!-- FIXME: value unconfirmed -->
<abnormalLvl>10</abnormalLvl>
<abnormalTime>10</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -1570,6 +1576,7 @@
<!-- FIXME: value unconfirmed -->
<abnormalLvl>9</abnormalLvl>
<abnormalTime>8</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<castRange>100</castRange>
@@ -1824,6 +1831,7 @@
<!-- FIXME: value unconfirmed -->
<abnormalLvl>10</abnormalLvl>
<abnormalTime>8</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<activateRate>80</activateRate>
@@ -2255,6 +2263,7 @@
<!-- "For 10 seconds, inflicts bleed and decreases 100 HP every second." -->
<operateType>A2</operateType>
<effectPoint>-10000</effectPoint>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<basicProperty>PHYSICAL</basicProperty>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>

View File

@@ -1469,6 +1469,7 @@
<skill id="7067" toLevel="1" name="Test Range Charge">
<abnormalLvl>1</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>
@@ -1571,6 +1572,7 @@
<skill id="7076" toLevel="1" name="Test - Delay Debuff">
<abnormalLvl>8</abnormalLvl>
<abnormalTime>20</abnormalTime>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<activateRate>100</activateRate>

View File

@@ -151,6 +151,7 @@
<mpConsume>10</mpConsume>
<hitTime>2000</hitTime>
<effectPoint>-100</effectPoint>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalType>BLEEDING</abnormalType>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
@@ -1347,15 +1348,19 @@
<affectScope>SINGLE</affectScope>
</skill>
<skill id="15291" toLevel="1" name="Bleed">
<!-- AUTO GENERATED SKILL -->
<!-- Glory Days confirmed -->
<!-- Energy that formed in Lidia's room because Giselle von Hellmann and Alfred von Hellmann were not eliminated. HP continues to decrease. -->
<abnormalLvl>2</abnormalLvl>
<abnormalTime>20</abnormalTime>
<abnormalType>BLEEDING</abnormalType>
<subordinationAbnormalType>BLEEDING</subordinationAbnormalType>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<icon>icon.skill0096</icon>
<operateType>A2</operateType>
<mpConsume>10</mpConsume>
<reuseDelay>5000</reuseDelay>
<isMagic>1</isMagic>
<effectPoint>-100</effectPoint>
<abnormalType>BLEEDING</abnormalType>
<basicProperty>NONE</basicProperty>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>-5</magicCriticalRate>
@@ -1363,53 +1368,78 @@
<lvlBonusRate>2</lvlBonusRate>
<activateRate>100</activateRate>
<magicLvl>95</magicLvl>
<abnormalLvl>2</abnormalLvl>
<abnormalTime>20</abnormalTime>
<trait>BLEED</trait>
<abnormalVisualEffect>DOT_BLEEDING</abnormalVisualEffect>
<isDebuff>true</isDebuff>
<targetType>ENEMY_ONLY</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="DamOverTime">
<power>900</power>
<ticks>5</ticks>
</effect>
</effects>
</skill>
<skill id="15292" toLevel="1" name="Logan's Revenge">
<!-- AUTO GENERATED SKILL -->
<!-- Glory Days confirmed -->
<!-- Logan's revenge left in his dying breath. Lidia's Atk. Spd. is greatly increased. -->
<abnormalLvl>1</abnormalLvl>
<abnormalTime>180</abnormalTime>
<abnormalType>SPEED_UP</abnormalType>
<icon>icon.skill0168</icon>
<operateType>A2</operateType>
<mpConsume>10</mpConsume>
<reuseDelay>5000</reuseDelay>
<abnormalType>SPEED_UP</abnormalType>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<magicLvl>95</magicLvl>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>180</abnormalTime>
<isMagic>1</isMagic>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="PhysicalAttackSpeed">
<amount>30</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="15293" toLevel="1" name="Logan's Revenge">
<!-- AUTO GENERATED SKILL -->
<!-- Glory Days confirmed -->
<!-- Logan's revenge left in his dying breath. Momentarily invincible. -->
<abnormalLvl>1</abnormalLvl>
<abnormalTime>40</abnormalTime>
<abnormalType>INVINCIBILITY_SPECIAL</abnormalType>
<abnormalVisualEffect>ULTIMATE_DEFENCE</abnormalVisualEffect>
<icon>icon.skill11758</icon>
<operateType>A2</operateType>
<mpConsume>10</mpConsume>
<reuseDelay>5000</reuseDelay>
<effectPoint>867</effectPoint>
<abnormalType>INVINCIBILITY_SPECIAL</abnormalType>
<basicProperty>NONE</basicProperty>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<magicLvl>95</magicLvl>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>40</abnormalTime>
<staticReuse>true</staticReuse>
<abnormalVisualEffect>ULTIMATE_DEFENCE</abnormalVisualEffect>
<isMagic>1</isMagic>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="DamageBlock">
<type>BLOCK_HP</type>
</effect>
<effect name="DamageBlock">
<type>BLOCK_MP</type>
</effect>
<effect name="DebuffBlock" />
<effect name="ResistDispelByCategory">
<amount>-100</amount>
<slot>ALL</slot>
</effect>
<effect name="BlockAbnormalSlot">
<slot>INVINCIBILITY_SPECIAL</slot>
</effect>
</effects>
</skill>
<skill id="15294" toLevel="1" name="Logan's Revenge">
<!-- AUTO GENERATED SKILL -->

File diff suppressed because it is too large Load Diff