Drops rework.

This commit is contained in:
MobiusDev
2017-10-06 00:53:49 +00:00
parent 2c61857b12
commit fc94704b2d
408 changed files with 741952 additions and 835872 deletions
@@ -265,7 +265,7 @@ public class AdminAdmin implements IAdminCommandHandler
}
case "RateDropSpoil":
{
Config.RATE_CORPSE_DROP_CHANCE_MULTIPLIER = Float.valueOf(pValue);
Config.RATE_SPOIL_DROP_CHANCE_MULTIPLIER = Float.valueOf(pValue);
break;
}
case "EnchantChanceElementStone":
@@ -462,7 +462,7 @@ public class AdminAdmin implements IAdminCommandHandler
replyMSG.append("<tr><td><font color=\"00AA00\">Drop:</font></td><td></td><td></td></tr>");
replyMSG.append("<tr><td><font color=\"LEVEL\">Rate EXP</font> = " + Config.RATE_XP + "</td><td><edit var=\"param1\" width=40 height=15></td><td><button value=\"Set\" action=\"bypass -h admin_setconfig RateXp $param1\" width=40 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>");
replyMSG.append("<tr><td><font color=\"LEVEL\">Rate SP</font> = " + Config.RATE_SP + "</td><td><edit var=\"param2\" width=40 height=15></td><td><button value=\"Set\" action=\"bypass -h admin_setconfig RateSp $param2\" width=40 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>");
replyMSG.append("<tr><td><font color=\"LEVEL\">Rate Drop Spoil</font> = " + Config.RATE_CORPSE_DROP_CHANCE_MULTIPLIER + "</td><td><edit var=\"param4\" width=40 height=15></td><td><button value=\"Set\" action=\"bypass -h admin_setconfig RateDropSpoil $param4\" width=40 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>");
replyMSG.append("<tr><td><font color=\"LEVEL\">Rate Drop Spoil</font> = " + Config.RATE_SPOIL_DROP_CHANCE_MULTIPLIER + "</td><td><edit var=\"param4\" width=40 height=15></td><td><button value=\"Set\" action=\"bypass -h admin_setconfig RateDropSpoil $param4\" width=40 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>");
replyMSG.append("<tr><td width=140></td><td width=40></td><td width=40></td></tr>");
replyMSG.append("<tr><td><font color=\"00AA00\">Enchant:</font></td><td></td><td></td></tr>");
replyMSG.append("<tr><td><font color=\"LEVEL\">Enchant Element Stone</font> = " + Config.ENCHANT_CHANCE_ELEMENT_STONE + "</td><td><edit var=\"param8\" width=40 height=15></td><td><button value=\"Set\" action=\"bypass -h admin_setconfig EnchantChanceElementStone $param8\" width=40 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>");
@@ -18,14 +18,15 @@ package handlers.bypasshandlers;
import java.text.DecimalFormat;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.concurrent.TimeUnit;
import com.l2jmobius.Config;
import com.l2jmobius.commons.util.CommonUtil;
import com.l2jmobius.gameserver.cache.HtmCache;
import com.l2jmobius.gameserver.datatables.ItemTable;
import com.l2jmobius.gameserver.enums.AttributeType;
import com.l2jmobius.gameserver.enums.DropType;
import com.l2jmobius.gameserver.handler.IBypassHandler;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.L2Spawn;
@@ -34,10 +35,7 @@ import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.drops.DropListScope;
import com.l2jmobius.gameserver.model.drops.GeneralDropItem;
import com.l2jmobius.gameserver.model.drops.GroupedGeneralDropItem;
import com.l2jmobius.gameserver.model.drops.IDropItem;
import com.l2jmobius.gameserver.model.holders.DropHolder;
import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jmobius.gameserver.util.HtmlUtil;
@@ -106,10 +104,10 @@ public class NpcViewMod implements IBypassHandler
return false;
}
final String dropListScopeString = st.nextToken();
final String dropListTypeString = st.nextToken();
try
{
final DropListScope dropListScope = Enum.valueOf(DropListScope.class, dropListScopeString);
final DropType dropListType = Enum.valueOf(DropType.class, dropListTypeString);
final L2Object target = L2World.getInstance().findObject(Integer.parseInt(st.nextToken()));
final L2Npc npc = target instanceof L2Npc ? (L2Npc) target : null;
if (npc == null)
@@ -117,7 +115,7 @@ public class NpcViewMod implements IBypassHandler
return false;
}
final int page = st.hasMoreElements() ? Integer.parseInt(st.nextToken()) : 0;
sendNpcDropList(activeChar, npc, dropListScope, page);
sendNpcDropList(activeChar, npc, dropListType, page);
}
catch (NumberFormatException e)
{
@@ -125,7 +123,7 @@ public class NpcViewMod implements IBypassHandler
}
catch (IllegalArgumentException e)
{
_log.warning("Bypass[NpcViewMod] unknown drop list scope: " + dropListScopeString);
_log.warning("Bypass[NpcViewMod] unknown drop list scope: " + dropListTypeString);
return false;
}
break;
@@ -336,21 +334,22 @@ public class NpcViewMod implements IBypassHandler
activeChar.sendPacket(html);
}
public static String getDropListButtons(L2Npc npc)
private static String getDropListButtons(L2Npc npc)
{
final StringBuilder sb = new StringBuilder();
final Map<DropListScope, List<IDropItem>> dropLists = npc.getTemplate().getDropLists();
if ((dropLists != null) && !dropLists.isEmpty() && (dropLists.containsKey(DropListScope.DEATH) || dropLists.containsKey(DropListScope.CORPSE)))
final List<DropHolder> dropListDeath = npc.getTemplate().getDropList(DropType.DROP);
final List<DropHolder> dropListSpoil = npc.getTemplate().getDropList(DropType.SPOIL);
if ((dropListDeath != null) || (dropListSpoil != null))
{
sb.append("<table width=275 cellpadding=0 cellspacing=0><tr>");
if (dropLists.containsKey(DropListScope.DEATH))
if (dropListDeath != null)
{
sb.append("<td align=center><button value=\"Show Drop\" width=100 height=25 action=\"bypass NpcViewMod dropList DEATH " + npc.getObjectId() + "\" back=\"L2UI_CT1.Button_DF_Calculator_Down\" fore=\"L2UI_CT1.Button_DF_Calculator\"></td>");
sb.append("<td align=center><button value=\"Show Drop\" width=100 height=25 action=\"bypass NpcViewMod dropList DROP " + npc.getObjectId() + "\" back=\"L2UI_CT1.Button_DF_Calculator_Down\" fore=\"L2UI_CT1.Button_DF_Calculator\"></td>");
}
if (dropLists.containsKey(DropListScope.CORPSE))
if (dropListSpoil != null)
{
sb.append("<td align=center><button value=\"Show Spoil\" width=100 height=25 action=\"bypass NpcViewMod dropList CORPSE " + npc.getObjectId() + "\" back=\"L2UI_CT1.Button_DF_Calculator_Down\" fore=\"L2UI_CT1.Button_DF_Calculator\"></td>");
sb.append("<td align=center><button value=\"Show Spoil\" width=100 height=25 action=\"bypass NpcViewMod dropList SPOIL " + npc.getObjectId() + "\" back=\"L2UI_CT1.Button_DF_Calculator_Down\" fore=\"L2UI_CT1.Button_DF_Calculator\"></td>");
}
sb.append("</tr></table>");
@@ -358,10 +357,10 @@ public class NpcViewMod implements IBypassHandler
return sb.toString();
}
public static void sendNpcDropList(L2PcInstance activeChar, L2Npc npc, DropListScope dropListScope, int page)
private static void sendNpcDropList(L2PcInstance activeChar, L2Npc npc, DropType dropType, int page)
{
final List<IDropItem> dropList = npc.getTemplate().getDropList(dropListScope);
if ((dropList == null) || dropList.isEmpty())
final List<DropHolder> dropList = npc.getTemplate().getDropList(dropType);
if (dropList == null)
{
return;
}
@@ -378,7 +377,7 @@ public class NpcViewMod implements IBypassHandler
pagesSb.append("<table><tr>");
for (int i = 0; i < pages; i++)
{
pagesSb.append("<td align=center><button value=\"" + (i + 1) + "\" width=20 height=20 action=\"bypass NpcViewMod dropList " + dropListScope + " " + npc.getObjectId() + " " + i + "\" back=\"L2UI_CT1.Button_DF_Calculator_Down\" fore=\"L2UI_CT1.Button_DF_Calculator\"></td>");
pagesSb.append("<td align=center><button value=\"" + (i + 1) + "\" width=20 height=20 action=\"bypass NpcViewMod dropList " + dropType + " " + npc.getObjectId() + " " + i + "\" back=\"L2UI_CT1.Button_DF_Calculator_Down\" fore=\"L2UI_CT1.Button_DF_Calculator\"></td>");
}
pagesSb.append("</tr></table>");
}
@@ -409,124 +408,126 @@ public class NpcViewMod implements IBypassHandler
final StringBuilder sb = new StringBuilder();
int height = 64;
final IDropItem dropItem = dropList.get(i);
if (dropItem instanceof GeneralDropItem)
final DropHolder dropItem = dropList.get(i);
final L2Item item = ItemTable.getInstance().getTemplate(dropItem.getItemId());
// real time server rate calculations
double rateChance = 1;
double rateAmount = 1;
if (dropType == DropType.SPOIL)
{
final GeneralDropItem generalDropItem = (GeneralDropItem) dropItem;
final L2Item item = ItemTable.getInstance().getTemplate(generalDropItem.getItemId());
sb.append("<table width=332 cellpadding=2 cellspacing=0 background=\"L2UI_CT1.Windows.Windows_DF_TooltipBG\">");
sb.append("<tr><td width=32 valign=top>");
sb.append("<img src=\"" + item.getIcon() + "\" width=32 height=32>");
sb.append("</td><td fixwidth=300 align=center><font name=\"hs9\" color=\"CD9000\">");
sb.append(item.getName());
sb.append("</font></td></tr><tr><td width=32></td><td width=300><table width=295 cellpadding=0 cellspacing=0>");
sb.append("<tr><td width=48 align=right valign=top><font color=\"LEVEL\">Amount:</font></td>");
sb.append("<td width=247 align=center>");
rateChance = Config.RATE_SPOIL_DROP_CHANCE_MULTIPLIER;
rateAmount = Config.RATE_SPOIL_DROP_AMOUNT_MULTIPLIER;
final long min = generalDropItem.getMin(npc, activeChar);
final long max = generalDropItem.getMax(npc, activeChar);
if (min == max)
// also check premium rates if available
if (Config.PREMIUM_SYSTEM_ENABLED && activeChar.hasPremiumStatus())
{
sb.append(amountFormat.format(min));
rateChance *= Config.PREMIUM_RATE_SPOIL_CHANCE;
rateAmount *= Config.PREMIUM_RATE_SPOIL_AMOUNT;
}
}
else
{
if (Config.RATE_DROP_CHANCE_BY_ID.get(dropItem.getItemId()) != null)
{
rateChance *= Config.RATE_DROP_CHANCE_BY_ID.get(dropItem.getItemId());
}
else if (item.hasExImmediateEffect())
{
rateChance *= Config.RATE_HERB_DROP_CHANCE_MULTIPLIER;
}
else if (npc.isRaid())
{
rateChance *= Config.RATE_RAID_DROP_CHANCE_MULTIPLIER;
}
else
{
sb.append(amountFormat.format(min));
sb.append(" - ");
sb.append(amountFormat.format(max));
rateChance *= Config.RATE_DEATH_DROP_CHANCE_MULTIPLIER;
}
sb.append("</td></tr><tr><td width=48 align=right valign=top><font color=\"LEVEL\">Chance:</font></td>");
sb.append("<td width=247 align=center>");
sb.append(chanceFormat.format(Math.min(generalDropItem.getChance(npc, activeChar), 100)));
sb.append("%</td></tr></table></td></tr><tr><td width=32></td><td width=300>&nbsp;</td></tr></table>");
}
else if (dropItem instanceof GroupedGeneralDropItem)
{
final GroupedGeneralDropItem generalGroupedDropItem = (GroupedGeneralDropItem) dropItem;
if (generalGroupedDropItem.getItems().size() == 1)
if (Config.RATE_DROP_AMOUNT_BY_ID.get(dropItem.getItemId()) != null)
{
final GeneralDropItem generalDropItem = generalGroupedDropItem.getItems().get(0);
final L2Item item = ItemTable.getInstance().getTemplate(generalDropItem.getItemId());
sb.append("<table width=332 cellpadding=2 cellspacing=0 background=\"L2UI_CT1.Windows.Windows_DF_TooltipBG\">");
sb.append("<tr><td width=32 valign=top>");
sb.append("<img src=\"" + item.getIcon() + "\" width=32 height=32>");
sb.append("</td><td fixwidth=300 align=center><font name=\"hs9\" color=\"CD9000\">");
sb.append(item.getName());
sb.append("</font></td></tr><tr><td width=32></td><td width=300><table width=295 cellpadding=0 cellspacing=0>");
sb.append("<tr><td width=48 align=right valign=top><font color=\"LEVEL\">Amount:</font></td>");
sb.append("<td width=247 align=center>");
final long min = generalDropItem.getMin(npc, activeChar);
final long max = generalDropItem.getMax(npc, activeChar);
if (min == max)
rateAmount *= Config.RATE_DROP_AMOUNT_BY_ID.get(dropItem.getItemId());
}
else if (item.hasExImmediateEffect())
{
rateAmount *= Config.RATE_HERB_DROP_AMOUNT_MULTIPLIER;
}
else if (npc.isRaid())
{
rateAmount *= Config.RATE_RAID_DROP_AMOUNT_MULTIPLIER;
}
else
{
rateAmount *= Config.RATE_DEATH_DROP_AMOUNT_MULTIPLIER;
}
// also check premium rates if available
if (Config.PREMIUM_SYSTEM_ENABLED && activeChar.hasPremiumStatus())
{
if (Config.PREMIUM_RATE_DROP_CHANCE_BY_ID.get(dropItem.getItemId()) != null)
{
sb.append(amountFormat.format(min));
rateChance *= Config.PREMIUM_RATE_DROP_CHANCE_BY_ID.get(dropItem.getItemId());
}
else if (item.hasExImmediateEffect())
{
// TODO: Premium herb chance? :)
}
else if (npc.isRaid())
{
// TODO: Premium raid chance? :)
}
else
{
sb.append(amountFormat.format(min));
sb.append(" - ");
sb.append(amountFormat.format(max));
rateChance *= Config.PREMIUM_RATE_DROP_CHANCE;
}
sb.append("</td></tr><tr><td width=48 align=right valign=top><font color=\"LEVEL\">Chance:</font></td>");
sb.append("<td width=247 align=center>");
sb.append(chanceFormat.format(Math.min(generalGroupedDropItem.getChance(npc, activeChar), 100)));
sb.append("%</td></tr></table></td></tr><tr><td width=32></td><td width=300>&nbsp;</td></tr></table>");
}
else
{
sb.append("<table width=332 cellpadding=2 cellspacing=0 background=\"L2UI_CT1.Windows.Windows_DF_TooltipBG\">");
sb.append("<tr><td width=32 valign=top><img src=\"L2UI_CT1.ICON_DF_premiumItem\" width=32 height=32></td>");
sb.append("<td fixwidth=300 align=center><font name=\"ScreenMessageSmall\" color=\"CD9000\">One from group</font>");
sb.append("</td></tr><tr><td width=32></td><td width=300><table width=295 cellpadding=0 cellspacing=0><tr>");
sb.append("<td width=48 align=right valign=top><font color=\"LEVEL\">Chance:</font></td>");
sb.append("<td width=247 align=center>");
sb.append(chanceFormat.format(Math.min(generalGroupedDropItem.getChance(npc, activeChar), 100)));
sb.append("%</td></tr></table><br>");
for (GeneralDropItem generalDropItem : generalGroupedDropItem.getItems())
if (Config.PREMIUM_RATE_DROP_AMOUNT_BY_ID.get(dropItem.getItemId()) != null)
{
final L2Item item = ItemTable.getInstance().getTemplate(generalDropItem.getItemId());
sb.append("<table width=291 cellpadding=2 cellspacing=0 background=\"L2UI_CT1.Windows.Windows_DF_TooltipBG\">");
sb.append("<tr><td width=32 valign=top>");
String icon = item.getIcon();
if (icon == null)
{
icon = "icon.etc_question_mark_i00";
}
sb.append("<img src=\"" + icon + "\" width=32 height=32>");
sb.append("</td><td fixwidth=259 align=center><font name=\"hs9\" color=\"CD9000\">");
sb.append(item.getName());
sb.append("</font></td></tr><tr><td width=32></td><td width=259><table width=253 cellpadding=0 cellspacing=0>");
sb.append("<tr><td width=48 align=right valign=top><font color=\"LEVEL\">Amount:</font></td><td width=205 align=center>");
final long min = generalDropItem.getMin(npc, activeChar);
final long max = generalDropItem.getMax(npc, activeChar);
if (min == max)
{
sb.append(amountFormat.format(min));
}
else
{
sb.append(amountFormat.format(min));
sb.append(" - ");
sb.append(amountFormat.format(max));
}
sb.append("</td></tr><tr><td width=48 align=right valign=top><font color=\"LEVEL\">Chance:</font></td>");
sb.append("<td width=205 align=center>");
sb.append(chanceFormat.format(Math.min(generalDropItem.getChance(npc, activeChar), 100)));
sb.append("%</td></tr></table></td></tr><tr><td width=32></td><td width=259>&nbsp;</td></tr></table>");
height += 64;
rateAmount *= Config.PREMIUM_RATE_DROP_AMOUNT_BY_ID.get(dropItem.getItemId());
}
else if (item.hasExImmediateEffect())
{
// TODO: Premium herb amount? :)
}
else if (npc.isRaid())
{
// TODO: Premium raid amount? :)
}
else
{
rateAmount *= Config.PREMIUM_RATE_DROP_AMOUNT;
}
sb.append("</td></tr><tr><td width=32></td><td width=300>&nbsp;</td></tr></table>");
}
}
sb.append("<table width=332 cellpadding=2 cellspacing=0 background=\"L2UI_CT1.Windows.Windows_DF_TooltipBG\">");
sb.append("<tr><td width=32 valign=top>");
sb.append("<img src=\"" + (item.getIcon() == null ? "icon.etc_question_mark_i00" : item.getIcon()) + "\" width=32 height=32>");
sb.append("</td><td fixwidth=300 align=center><font name=\"hs9\" color=\"CD9000\">");
sb.append(item.getName());
sb.append("</font></td></tr><tr><td width=32></td><td width=300><table width=295 cellpadding=0 cellspacing=0>");
sb.append("<tr><td width=48 align=right valign=top><font color=\"LEVEL\">Amount:</font></td>");
sb.append("<td width=247 align=center>");
final long min = (long) (dropItem.getMin() * rateAmount);
final long max = (long) (dropItem.getMax() * rateAmount);
if (min == max)
{
sb.append(amountFormat.format(min));
}
else
{
sb.append(amountFormat.format(min));
sb.append(" - ");
sb.append(amountFormat.format(max));
}
sb.append("</td></tr><tr><td width=48 align=right valign=top><font color=\"LEVEL\">Chance:</font></td>");
sb.append("<td width=247 align=center>");
sb.append(chanceFormat.format(Math.min((long) dropItem.getChance() * rateChance, 100)));
sb.append("%</td></tr></table></td></tr><tr><td width=32></td><td width=300>&nbsp;</td></tr></table>");
if ((sb.length() + rightSb.length() + leftSb.length()) < 16000) // limit of 32766?
{
if (leftHeight >= (rightHeight + height))
@@ -22,23 +22,21 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.StringJoiner;
import com.l2jmobius.Config;
import com.l2jmobius.commons.util.Rnd;
import com.l2jmobius.gameserver.cache.HtmCache;
import com.l2jmobius.gameserver.data.xml.impl.NpcData;
import com.l2jmobius.gameserver.data.xml.impl.SpawnsData;
import com.l2jmobius.gameserver.datatables.ItemTable;
import com.l2jmobius.gameserver.enums.DropType;
import com.l2jmobius.gameserver.handler.CommunityBoardHandler;
import com.l2jmobius.gameserver.handler.IParseBoardHandler;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate;
import com.l2jmobius.gameserver.model.drops.DropListScope;
import com.l2jmobius.gameserver.model.drops.GeneralDropItem;
import com.l2jmobius.gameserver.model.drops.GroupedGeneralDropItem;
import com.l2jmobius.gameserver.model.drops.IDropItem;
import com.l2jmobius.gameserver.model.holders.DropHolder;
import com.l2jmobius.gameserver.model.itemcontainer.Inventory;
import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
@@ -56,40 +54,40 @@ public class DropSearchBoard implements IParseBoardHandler
"_bbs_npc_trace"
};
class DropHolder
class CBDropHolder
{
int itemId;
int npcId;
byte npcLevel;
long basemin;
long basemax;
double baseGroupChance;
double basechance;
boolean isSweep;
long min;
long max;
double chance;
boolean isSpoil;
boolean isRaid;
public DropHolder(L2NpcTemplate npc, GeneralDropItem item, double groupChance, boolean isSweep)
public CBDropHolder(L2NpcTemplate npcTemplate, DropHolder dropHolder)
{
itemId = item.getItemId();
npcId = npc.getId();
npcLevel = npc.getLevel();
basemin = item.getMin();
basemax = item.getMax();
baseGroupChance = groupChance;
basechance = item.getChance();
this.isSweep = isSweep;
isSpoil = dropHolder.getDropType() == DropType.SPOIL;
itemId = dropHolder.getItemId();
npcId = npcTemplate.getId();
npcLevel = npcTemplate.getLevel();
min = dropHolder.getMin();
max = dropHolder.getMax();
chance = dropHolder.getChance();
isRaid = npcTemplate.getType().equals("L2RaidBoss") || npcTemplate.getType().equals("L2GrandBoss");
}
/**
* only for debug'/;
* only for debug
*/
@Override
public String toString()
{
return "DropHolder [itemId=" + itemId + ", npcId=" + npcId + ", npcLevel=" + npcLevel + ", basemin=" + basemin + ", basemax=" + basemax + ", baseGroupChance=" + baseGroupChance + ", basechance=" + basechance + ", isSweep=" + isSweep + "]";
return "DropHolder [itemId=" + itemId + ", npcId=" + npcId + ", npcLevel=" + npcLevel + ", min=" + min + ", max=" + max + ", chance=" + chance + ", isSpoil=" + isSpoil + "]";
}
}
private final Map<Integer, List<DropHolder>> DROP_INDEX_CACHE = new HashMap<>();
private final Map<Integer, List<CBDropHolder>> DROP_INDEX_CACHE = new HashMap<>();
// nonsupport items
private final Set<Integer> BLOCK_ID = new HashSet<>();
@@ -104,44 +102,39 @@ public class DropSearchBoard implements IParseBoardHandler
private void buildDropIndex()
{
NpcData.getInstance().getTemplates(npc -> npc.getDropLists() != null).forEach(npcTemplate ->
NpcData.getInstance().getTemplates(npc -> npc.getDropList(DropType.DROP) != null).forEach(npcTemplate ->
{
for (Entry<DropListScope, List<IDropItem>> entry : npcTemplate.getDropLists().entrySet())
for (DropHolder dropHolder : npcTemplate.getDropList(DropType.DROP))
{
entry.getValue().forEach(idrop ->
{
if (idrop instanceof GroupedGeneralDropItem)
{
GroupedGeneralDropItem ggd = (GroupedGeneralDropItem) idrop;
ggd.getItems().stream().forEach(gd -> addToDropList(npcTemplate, gd, ggd.getChance(), entry.getKey() == DropListScope.CORPSE));
}
else
{
GeneralDropItem gd = (GeneralDropItem) idrop;
addToDropList(npcTemplate, gd, 100.0, entry.getKey() == DropListScope.CORPSE);
}
});
addToDropList(npcTemplate, dropHolder);
}
});
NpcData.getInstance().getTemplates(npc -> npc.getDropList(DropType.SPOIL) != null).forEach(npcTemplate ->
{
for (DropHolder dropHolder : npcTemplate.getDropList(DropType.SPOIL))
{
addToDropList(npcTemplate, dropHolder);
}
});
DROP_INDEX_CACHE.values().stream().forEach(l -> l.sort((d1, d2) -> Byte.valueOf(d1.npcLevel).compareTo(Byte.valueOf(d2.npcLevel))));
}
private void addToDropList(L2NpcTemplate npcTemplate, GeneralDropItem gd, double groupChance, boolean isSweep)
private void addToDropList(L2NpcTemplate npcTemplate, DropHolder dropHolder)
{
if (BLOCK_ID.contains(gd.getItemId()))
if (BLOCK_ID.contains(dropHolder.getItemId()))
{
return;
}
List<DropHolder> dropList = DROP_INDEX_CACHE.get(gd.getItemId());
List<CBDropHolder> dropList = DROP_INDEX_CACHE.get(dropHolder.getItemId());
if (dropList == null)
{
dropList = new ArrayList<>();
DROP_INDEX_CACHE.put(gd.getItemId(), dropList);
DROP_INDEX_CACHE.put(dropHolder.getItemId(), dropList);
}
dropList.add(new DropHolder(npcTemplate, gd, groupChance, isSweep));
dropList.add(new CBDropHolder(npcTemplate, dropHolder));
}
@Override
@@ -164,7 +157,7 @@ public class DropSearchBoard implements IParseBoardHandler
final DecimalFormat chanceFormat = new DecimalFormat("0.00##");
int itemId = Integer.parseInt(params[1]);
int page = Integer.parseInt(params[2]);
List<DropHolder> list = DROP_INDEX_CACHE.get(itemId);
List<CBDropHolder> list = DROP_INDEX_CACHE.get(itemId);
int pages = list.size() / 14;
if (pages == 0)
{
@@ -176,13 +169,106 @@ public class DropSearchBoard implements IParseBoardHandler
StringBuilder builder = new StringBuilder();
for (int index = start; index <= end; index++)
{
DropHolder dropHolder = list.get(index);
CBDropHolder cbDropHolder = list.get(index);
// real time server rate calculations
double rateChance = 1;
double rateAmount = 1;
if (cbDropHolder.isSpoil)
{
rateChance = Config.RATE_SPOIL_DROP_CHANCE_MULTIPLIER;
rateAmount = Config.RATE_SPOIL_DROP_AMOUNT_MULTIPLIER;
// also check premium rates if available
if (Config.PREMIUM_SYSTEM_ENABLED && player.hasPremiumStatus())
{
rateChance *= Config.PREMIUM_RATE_SPOIL_CHANCE;
rateAmount *= Config.PREMIUM_RATE_SPOIL_AMOUNT;
}
}
else
{
final L2Item item = ItemTable.getInstance().getTemplate(cbDropHolder.itemId);
if (Config.RATE_DROP_CHANCE_BY_ID.get(cbDropHolder.itemId) != null)
{
rateChance *= Config.RATE_DROP_CHANCE_BY_ID.get(cbDropHolder.itemId);
}
else if (item.hasExImmediateEffect())
{
rateChance *= Config.RATE_HERB_DROP_CHANCE_MULTIPLIER;
}
else if (cbDropHolder.isRaid)
{
rateAmount *= Config.RATE_RAID_DROP_CHANCE_MULTIPLIER;
}
else
{
rateChance *= Config.RATE_DEATH_DROP_CHANCE_MULTIPLIER;
}
if (Config.RATE_DROP_AMOUNT_BY_ID.get(cbDropHolder.itemId) != null)
{
rateAmount *= Config.RATE_DROP_AMOUNT_BY_ID.get(cbDropHolder.itemId);
}
else if (cbDropHolder.isRaid)
{
rateAmount *= Config.RATE_RAID_DROP_AMOUNT_MULTIPLIER;
}
else if (item.hasExImmediateEffect())
{
rateAmount *= Config.RATE_HERB_DROP_AMOUNT_MULTIPLIER;
}
else
{
rateAmount *= Config.RATE_DEATH_DROP_AMOUNT_MULTIPLIER;
}
// also check premium rates if available
if (Config.PREMIUM_SYSTEM_ENABLED && player.hasPremiumStatus())
{
if (Config.PREMIUM_RATE_DROP_CHANCE_BY_ID.get(cbDropHolder.itemId) != null)
{
rateChance *= Config.PREMIUM_RATE_DROP_CHANCE_BY_ID.get(cbDropHolder.itemId);
}
else if (item.hasExImmediateEffect())
{
// TODO: Premium herb chance? :)
}
else if (cbDropHolder.isRaid)
{
// TODO: Premium raid chance? :)
}
else
{
rateChance *= Config.PREMIUM_RATE_DROP_CHANCE;
}
if (Config.PREMIUM_RATE_DROP_AMOUNT_BY_ID.get(cbDropHolder.itemId) != null)
{
rateAmount *= Config.PREMIUM_RATE_DROP_AMOUNT_BY_ID.get(cbDropHolder.itemId);
}
else if (item.hasExImmediateEffect())
{
// TODO: Premium herb amount? :)
}
else if (cbDropHolder.isRaid)
{
// TODO: Premium raid amount? :)
}
else
{
rateAmount *= Config.PREMIUM_RATE_DROP_AMOUNT;
}
}
}
builder.append("<tr>");
builder.append("<td width=30>").append(dropHolder.npcLevel).append("</td>");
builder.append("<td width=170>").append("<a action=\"bypass _bbs_npc_trace " + dropHolder.npcId + "\">").append("&@").append(dropHolder.npcId).append(";").append("</a>").append("</td>");
builder.append("<td width=80 align=CENTER>").append(dropHolder.basemin).append("-").append(dropHolder.basemax).append("</td>");
builder.append("<td width=50 align=CENTER>").append(chanceFormat.format((dropHolder.basechance * dropHolder.baseGroupChance) / 100)).append("%").append("</td>");
builder.append("<td width=50 align=CENTER>").append(dropHolder.isSweep ? "Sweep" : "Drop").append("</td>");
builder.append("<td width=30>").append(cbDropHolder.npcLevel).append("</td>");
builder.append("<td width=170>").append("<a action=\"bypass _bbs_npc_trace " + cbDropHolder.npcId + "\">").append("&@").append(cbDropHolder.npcId).append(";").append("</a>").append("</td>");
builder.append("<td width=80 align=CENTER>").append(cbDropHolder.min * rateAmount).append("-").append(cbDropHolder.max * rateAmount).append("</td>");
builder.append("<td width=50 align=CENTER>").append(chanceFormat.format(cbDropHolder.chance * rateChance)).append("%").append("</td>");
builder.append("<td width=50 align=CENTER>").append(cbDropHolder.isSpoil ? "Spoil" : "Drop").append("</td>");
builder.append("</tr>");
}
@@ -204,7 +290,7 @@ public class DropSearchBoard implements IParseBoardHandler
List<NpcSpawnTemplate> spawnList = SpawnsData.getInstance().getNpcSpawns(npc -> npc.getId() == npcId);
if (spawnList.isEmpty())
{
player.sendMessage("cant find any spawn maybe boss or instance mob");
player.sendMessage("Cannot find any spawn. Maybe dropped by a boss or instance monster.");
}
else
{
@@ -49,15 +49,15 @@ public class Premium implements IVoicedCommandHandler
html.append("<tr><td>Rate SP: <font color=\"LEVEL\"> x" + Config.RATE_SP + "<br1></font></td></tr>");
html.append("<tr><td>Drop Chance: <font color=\"LEVEL\"> x" + Config.RATE_DEATH_DROP_CHANCE_MULTIPLIER + "<br1></font></td></tr><br>");
html.append("<tr><td>Drop Amount: <font color=\"LEVEL\"> x" + Config.RATE_DEATH_DROP_AMOUNT_MULTIPLIER + "<br1></font></td></tr><br>");
html.append("<tr><td>Spoil Chance: <font color=\"LEVEL\"> x" + Config.RATE_CORPSE_DROP_CHANCE_MULTIPLIER + "<br1></font></td></tr><br>");
html.append("<tr><td>Spoil Amount: <font color=\"LEVEL\"> x" + Config.RATE_CORPSE_DROP_AMOUNT_MULTIPLIER + "<br><br></font></td></tr><br>");
html.append("<tr><td>Spoil Chance: <font color=\"LEVEL\"> x" + Config.RATE_SPOIL_DROP_CHANCE_MULTIPLIER + "<br1></font></td></tr><br>");
html.append("<tr><td>Spoil Amount: <font color=\"LEVEL\"> x" + Config.RATE_SPOIL_DROP_AMOUNT_MULTIPLIER + "<br><br></font></td></tr><br>");
html.append("<tr><td><center>Premium Info & Rules<br></td></tr>");
html.append("<tr><td>Rate XP: <font color=\"LEVEL\"> x" + (Config.RATE_XP * Config.PREMIUM_RATE_XP) + "<br1></font></td></tr>");
html.append("<tr><td>Rate SP: <font color=\"LEVEL\"> x" + (Config.RATE_SP * Config.PREMIUM_RATE_SP) + "<br1></font></td></tr>");
html.append("<tr><td>Drop Chance: <font color=\"LEVEL\"> x" + (Config.RATE_DEATH_DROP_CHANCE_MULTIPLIER * Config.RATE_DEATH_DROP_CHANCE_MULTIPLIER * Config.PREMIUM_RATE_DROP_CHANCE) + "<br1></font></td></tr>");
html.append("<tr><td>Drop Amount: <font color=\"LEVEL\"> x" + (Config.RATE_DEATH_DROP_AMOUNT_MULTIPLIER * Config.PREMIUM_RATE_DROP_AMOUNT) + "<br1></font></td></tr>");
html.append("<tr><td>Spoil Chance: <font color=\"LEVEL\"> x" + (Config.RATE_CORPSE_DROP_CHANCE_MULTIPLIER * Config.PREMIUM_RATE_SPOIL_CHANCE) + "<br1></font></td></tr>");
html.append("<tr><td>Spoil Amount: <font color=\"LEVEL\"> x" + (Config.RATE_CORPSE_DROP_AMOUNT_MULTIPLIER * Config.PREMIUM_RATE_SPOIL_AMOUNT) + "<br1></font></td></tr>");
html.append("<tr><td>Spoil Chance: <font color=\"LEVEL\"> x" + (Config.RATE_SPOIL_DROP_CHANCE_MULTIPLIER * Config.PREMIUM_RATE_SPOIL_CHANCE) + "<br1></font></td></tr>");
html.append("<tr><td>Spoil Amount: <font color=\"LEVEL\"> x" + (Config.RATE_SPOIL_DROP_AMOUNT_MULTIPLIER * Config.PREMIUM_RATE_SPOIL_AMOUNT) + "<br1></font></td></tr>");
html.append("<tr><td> <font color=\"70FFCA\">1. Premium benefits CAN NOT BE TRANSFERED.<br1></font></td></tr>");
html.append("<tr><td> <font color=\"70FFCA\">2. Premium does not effect party members.<br1></font></td></tr>");
html.append("<tr><td> <font color=\"70FFCA\">3. Premium benefits effect ALL characters in same account.</font></td></tr>");
@@ -71,8 +71,8 @@ public class Premium implements IVoicedCommandHandler
html.append("<tr><td>Rate SP: <font color=\"LEVEL\">x" + (Config.RATE_SP * Config.PREMIUM_RATE_SP) + " <br1></font></td></tr>");
html.append("<tr><td>Drop Chance: <font color=\"LEVEL\">x" + (Config.RATE_DEATH_DROP_CHANCE_MULTIPLIER * Config.PREMIUM_RATE_DROP_CHANCE) + " <br1></font></td></tr>");
html.append("<tr><td>Drop Amount: <font color=\"LEVEL\">x" + (Config.RATE_DEATH_DROP_AMOUNT_MULTIPLIER * Config.PREMIUM_RATE_DROP_AMOUNT) + " <br1></font></td></tr>");
html.append("<tr><td>Spoil Chance: <font color=\"LEVEL\">x" + (Config.RATE_CORPSE_DROP_CHANCE_MULTIPLIER * Config.PREMIUM_RATE_SPOIL_CHANCE) + " <br1></font></td></tr>");
html.append("<tr><td>Spoil Amount: <font color=\"LEVEL\">x" + (Config.RATE_CORPSE_DROP_AMOUNT_MULTIPLIER * Config.PREMIUM_RATE_SPOIL_AMOUNT) + " <br1></font></td></tr>");
html.append("<tr><td>Spoil Chance: <font color=\"LEVEL\">x" + (Config.RATE_SPOIL_DROP_CHANCE_MULTIPLIER * Config.PREMIUM_RATE_SPOIL_CHANCE) + " <br1></font></td></tr>");
html.append("<tr><td>Spoil Amount: <font color=\"LEVEL\">x" + (Config.RATE_SPOIL_DROP_AMOUNT_MULTIPLIER * Config.PREMIUM_RATE_SPOIL_AMOUNT) + " <br1></font></td></tr>");
html.append("<tr><td>Expires: <font color=\"00A5FF\">" + format.format(endDate) + "</font></td></tr>");
html.append("<tr><td>Current Date: <font color=\"70FFCA\">" + format.format(System.currentTimeMillis()) + "<br><br></font></td></tr>");
html.append("<tr><td><center>Premium Info & Rules<br></center></td></tr>");
+236 -272
View File
@@ -1,272 +1,236 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/npcs.xsd">
<npc id="2081" level="82" type="L2Monster" name="Canabion of Plague">
<!-- TODO: Must be confirmed -->
<parameters>
<param name="MoveAroundSocial" value="100" />
<param name="MoveAroundSocial1" value="100" />
<param name="MoveAroundSocial2" value="100" />
<param name="Skill01_Probablity" value="2000" />
<param name="Type" value="0" />
<param name="PrivatesNorm" value="2081" />
<param name="PrivatesSpA" value="2082" />
<param name="PrivatesSpB" value="2083" />
<param name="MyMakerName" value="inzone03_2111_80m1" />
<param name="SoulShot" value="200" />
<param name="SoulShotRate" value="5" />
<param name="SpiritShot" value="100" />
<param name="SpiritShotRate" value="10" />
<param name="LongRangeGuardRate" value="5" />
<skill name="Skill01_ID" id="4032" level="8" />
<skill name="Debuff" id="5719" level="1" />
</parameters>
<race>HUMANOID</race>
<sex>MALE</sex>
<acquire exp="12707" sp="3" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="3643" mp="1743" hpRegen="8.5" mpRegen="3" />
<attack physical="1055.28566004965" magical="720.623302603812" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" critical="4" accuracy="5" />
<defence physical="349.77477" magical="255.95" />
<attribute>
<defence fire="20" water="20" wind="20" earth="20" holy="20" dark="20" />
</attribute>
<speed>
<walk ground="8" />
<run ground="120" />
</speed>
<abnormalResist physical="10" magical="10" />
</stats>
<skill_list>
<skill id="4032" level="1" /> <!-- NPC Strike -->
<skill id="4416" level="9" /> <!-- Demons -->
<skill id="5565" level="1" /> <!-- Expose Weak Point -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
</skill_list>
<ai clanHelpRange="200" aggroRange="300">
<clan_list>
<clan>RIM</clan>
</clan_list>
</ai>
<drop_lists>
<death>
<group chance="42">
<item id="8600" min="1" max="1" chance="20" /> <!-- Herb of Life -->
<item id="8601" min="1" max="1" chance="45" /> <!-- Major Herb of Life -->
<item id="8602" min="1" max="1" chance="35" /> <!-- Superior Herb of Life -->
</group>
<group chance="11">
<item id="8603" min="1" max="1" chance="10" /> <!-- Herb of Mana -->
<item id="8604" min="1" max="1" chance="54" /> <!-- Major Herb of Mana -->
<item id="8605" min="1" max="1" chance="36" /> <!-- Superior Herb of Mana -->
</group>
<group chance="25">
<item id="8606" min="1" max="1" chance="20" /> <!-- Herb of Power -->
<item id="8608" min="1" max="1" chance="20" /> <!-- Haste Herb -->
<item id="8610" min="1" max="1" chance="20" /> <!-- Herb of Critical Attack - Probability -->
<item id="10655" min="1" max="1" chance="20" /> <!-- Herb of HP Drain -->
<item id="10656" min="1" max="1" chance="20" /> <!-- Herb of Critical Attack - Power -->
</group>
<group chance="10">
<item id="8607" min="1" max="1" chance="50" /> <!-- Herb of Magic -->
<item id="8609" min="1" max="1" chance="50" /> <!-- Herb of Casting Spd. -->
</group>
<group chance="1">
<item id="8612" min="1" max="1" chance="33" /> <!-- Herb of the Warrior -->
<item id="8613" min="1" max="1" chance="33" /> <!-- Wizard Herb -->
<item id="8614" min="1" max="1" chance="34" /> <!-- Herb of Recovery -->
</group>
<group chance="11">
<item id="8611" min="1" max="1" chance="94" /> <!-- Wind Walk Herb -->
<item id="10657" min="1" max="1" chance="6" /> <!-- Mysterious Herb -->
</group>
</death>
</drop_lists>
<status undying="false" />
<collision>
<radius normal="9" />
<height normal="29" />
</collision>
</npc>
<npc id="2082" level="82" type="L2Monster" name="Canabion of Plague" title="Doppler">
<!-- TODO: Must be confirmed -->
<parameters>
<param name="MoveAroundSocial" value="160" />
<param name="MoveAroundSocial1" value="160" />
<param name="MoveAroundSocial2" value="160" />
<param name="IsAggressive" value="1" />
<param name="Aggressive_Time" value="1" />
<param name="Skill01_Probablity" value="3500" />
<param name="Type" value="1" />
<param name="PrivatesNorm" value="2081" />
<param name="PrivatesSpA" value="2082" />
<param name="PrivatesSpB" value="2083" />
<param name="MyMakerName" value="inzone03_2111_80m1" />
<param name="SoulShot" value="200" />
<param name="SoulShotRate" value="5" />
<param name="SpiritShot" value="100" />
<param name="SpiritShotRate" value="10" />
<param name="LongRangeGuardRate" value="5" />
<skill name="Skill01_ID" id="4032" level="8" />
<skill name="Debuff" id="5719" level="1" />
</parameters>
<race>DEMONIC</race>
<sex>FEMALE</sex>
<acquire exp="12707" sp="3" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="3643" mp="1743" hpRegen="8.5" mpRegen="3" />
<attack physical="1055.28566004965" magical="720.623302603812" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" critical="4" accuracy="5" />
<defence physical="349.77477" magical="255.95" />
<attribute>
<defence fire="20" water="20" wind="20" earth="20" holy="20" dark="20" />
</attribute>
<speed>
<walk ground="10" />
<run ground="120" />
</speed>
<abnormalResist physical="10" magical="10" />
</stats>
<skill_list>
<skill id="4032" level="1" /> <!-- NPC Strike -->
<skill id="4416" level="9" /> <!-- Demons -->
<skill id="5565" level="1" /> <!-- Expose Weak Point -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
</skill_list>
<ai clanHelpRange="200" aggroRange="300">
<clan_list>
<clan>RIM</clan>
<ignore_npc_id>2081</ignore_npc_id>
</clan_list>
</ai>
<drop_lists>
<death>
<group chance="42">
<item id="8600" min="1" max="1" chance="20" /> <!-- Herb of Life -->
<item id="8601" min="1" max="1" chance="45" /> <!-- Major Herb of Life -->
<item id="8602" min="1" max="1" chance="35" /> <!-- Superior Herb of Life -->
</group>
<group chance="11">
<item id="8603" min="1" max="1" chance="10" /> <!-- Herb of Mana -->
<item id="8604" min="1" max="1" chance="54" /> <!-- Major Herb of Mana -->
<item id="8605" min="1" max="1" chance="36" /> <!-- Superior Herb of Mana -->
</group>
<group chance="25">
<item id="8606" min="1" max="1" chance="20" /> <!-- Herb of Power -->
<item id="8608" min="1" max="1" chance="20" /> <!-- Haste Herb -->
<item id="8610" min="1" max="1" chance="20" /> <!-- Herb of Critical Attack - Probability -->
<item id="10655" min="1" max="1" chance="20" /> <!-- Herb of HP Drain -->
<item id="10656" min="1" max="1" chance="20" /> <!-- Herb of Critical Attack - Power -->
</group>
<group chance="10">
<item id="8607" min="1" max="1" chance="50" /> <!-- Herb of Magic -->
<item id="8609" min="1" max="1" chance="50" /> <!-- Herb of Casting Spd. -->
</group>
<group chance="1">
<item id="8612" min="1" max="1" chance="33" /> <!-- Herb of the Warrior -->
<item id="8613" min="1" max="1" chance="33" /> <!-- Wizard Herb -->
<item id="8614" min="1" max="1" chance="34" /> <!-- Herb of Recovery -->
</group>
<group chance="11">
<item id="8611" min="1" max="1" chance="94" /> <!-- Wind Walk Herb -->
<item id="10657" min="1" max="1" chance="6" /> <!-- Mysterious Herb -->
</group>
</death>
</drop_lists>
<status undying="false" />
<collision>
<radius normal="9" />
<height normal="31.5" />
</collision>
</npc>
<npc id="2083" level="83" type="L2Monster" name="Canabion of Plague" title="Void">
<!-- TODO: Must be confirmed -->
<parameters>
<param name="MoveAroundSocial" value="160" />
<param name="MoveAroundSocial1" value="160" />
<param name="MoveAroundSocial2" value="160" />
<param name="IsAggressive" value="1" />
<param name="Aggressive_Time" value="1" />
<param name="Skill01_Probablity" value="4500" />
<param name="Type" value="2" />
<param name="PrivatesNorm" value="2081" />
<param name="PrivatesSpA" value="2082" />
<param name="PrivatesSpB" value="2083" />
<param name="MyMakerName" value="inzone03_2111_80m1" />
<param name="SoulShot" value="200" />
<param name="SoulShotRate" value="5" />
<param name="SpiritShot" value="100" />
<param name="SpiritShotRate" value="10" />
<param name="LongRangeGuardRate" value="5" />
<skill name="Skill01_ID" id="4032" level="8" />
<skill name="Buff" id="4340" level="1" />
<skill name="Debuff" id="5719" level="1" />
</parameters>
<race>HUMANOID</race>
<sex>MALE</sex>
<acquire exp="13020" sp="3" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="3835" mp="1777" hpRegen="8.5" mpRegen="3" />
<attack physical="1099.42361669366" magical="750.763809564873" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" critical="4" accuracy="5" />
<defence physical="353.86144" magical="258.94045" />
<attribute>
<defence fire="20" water="20" wind="20" earth="20" holy="20" dark="20" />
</attribute>
<speed>
<walk ground="15" />
<run ground="120" />
</speed>
<abnormalResist physical="10" magical="10" />
</stats>
<skill_list>
<skill id="4032" level="1" /> <!-- NPC Strike -->
<skill id="4340" level="1" /> <!-- Ultimate Buff, 2nd -->
<skill id="4416" level="9" /> <!-- Demons -->
<skill id="5565" level="1" /> <!-- Expose Weak Point -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
</skill_list>
<ai clanHelpRange="300" aggroRange="300">
<clan_list>
<clan>RIM</clan>
<ignore_npc_id>2081</ignore_npc_id>
</clan_list>
</ai>
<drop_lists>
<death>
<group chance="42">
<item id="8600" min="1" max="1" chance="20" /> <!-- Herb of Life -->
<item id="8601" min="1" max="1" chance="45" /> <!-- Major Herb of Life -->
<item id="8602" min="1" max="1" chance="35" /> <!-- Superior Herb of Life -->
</group>
<group chance="11">
<item id="8603" min="1" max="1" chance="10" /> <!-- Herb of Mana -->
<item id="8604" min="1" max="1" chance="54" /> <!-- Major Herb of Mana -->
<item id="8605" min="1" max="1" chance="36" /> <!-- Superior Herb of Mana -->
</group>
<group chance="25">
<item id="8606" min="1" max="1" chance="20" /> <!-- Herb of Power -->
<item id="8608" min="1" max="1" chance="20" /> <!-- Haste Herb -->
<item id="8610" min="1" max="1" chance="20" /> <!-- Herb of Critical Attack - Probability -->
<item id="10655" min="1" max="1" chance="20" /> <!-- Herb of HP Drain -->
<item id="10656" min="1" max="1" chance="20" /> <!-- Herb of Critical Attack - Power -->
</group>
<group chance="10">
<item id="8607" min="1" max="1" chance="50" /> <!-- Herb of Magic -->
<item id="8609" min="1" max="1" chance="50" /> <!-- Herb of Casting Spd. -->
</group>
<group chance="1">
<item id="8612" min="1" max="1" chance="33" /> <!-- Herb of the Warrior -->
<item id="8613" min="1" max="1" chance="33" /> <!-- Wizard Herb -->
<item id="8614" min="1" max="1" chance="34" /> <!-- Herb of Recovery -->
</group>
<group chance="11">
<item id="8611" min="1" max="1" chance="94" /> <!-- Wind Walk Herb -->
<item id="10657" min="1" max="1" chance="6" /> <!-- Mysterious Herb -->
</group>
</death>
</drop_lists>
<status undying="false" />
<collision>
<radius normal="10" />
<height normal="35" />
</collision>
</npc>
</list>
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/npcs.xsd">
<npc id="2081" level="82" type="L2Monster" name="Canabion of Plague">
<!-- TODO: Must be confirmed -->
<parameters>
<param name="MoveAroundSocial" value="100" />
<param name="MoveAroundSocial1" value="100" />
<param name="MoveAroundSocial2" value="100" />
<param name="Skill01_Probablity" value="2000" />
<param name="Type" value="0" />
<param name="PrivatesNorm" value="2081" />
<param name="PrivatesSpA" value="2082" />
<param name="PrivatesSpB" value="2083" />
<param name="MyMakerName" value="inzone03_2111_80m1" />
<param name="SoulShot" value="200" />
<param name="SoulShotRate" value="5" />
<param name="SpiritShot" value="100" />
<param name="SpiritShotRate" value="10" />
<param name="LongRangeGuardRate" value="5" />
<skill name="Skill01_ID" id="4032" level="8" />
<skill name="Debuff" id="5719" level="1" />
</parameters>
<race>HUMANOID</race>
<sex>MALE</sex>
<acquire exp="12707" sp="3" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="3643" mp="1743" hpRegen="8.5" mpRegen="3" />
<attack physical="1055.28566004965" magical="720.623302603812" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" critical="4" accuracy="5" />
<defence physical="349.77477" magical="255.95" />
<attribute>
<defence fire="20" water="20" wind="20" earth="20" holy="20" dark="20" />
</attribute>
<speed>
<walk ground="8" />
<run ground="120" />
</speed>
<abnormalResist physical="10" magical="10" />
</stats>
<skill_list>
<skill id="4032" level="1" /> <!-- NPC Strike -->
<skill id="4416" level="9" /> <!-- Demons -->
<skill id="5565" level="1" /> <!-- Expose Weak Point -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
</skill_list>
<ai clanHelpRange="200" aggroRange="300">
<clan_list>
<clan>RIM</clan>
</clan_list>
</ai>
<drop_lists>
<drop>
<item id="8600" min="1" max="1" chance="8.4" /> <!-- Herb of Life -->
<item id="8601" min="1" max="1" chance="18.9" /> <!-- Major Herb of Life -->
<item id="8602" min="1" max="1" chance="14.7" /> <!-- Superior Herb of Life -->
<item id="8603" min="1" max="1" chance="1.1" /> <!-- Herb of Mana -->
<item id="8604" min="1" max="1" chance="5.94" /> <!-- Major Herb of Mana -->
<item id="8605" min="1" max="1" chance="3.96" /> <!-- Superior Herb of Mana -->
<item id="8606" min="1" max="1" chance="5" /> <!-- Herb of Power -->
<item id="8608" min="1" max="1" chance="5" /> <!-- Haste Herb -->
<item id="8610" min="1" max="1" chance="5" /> <!-- Herb of Critical Attack - Probability -->
<item id="10655" min="1" max="1" chance="5" /> <!-- Herb of HP Drain -->
<item id="10656" min="1" max="1" chance="5" /> <!-- Herb of Critical Attack - Power -->
<item id="8607" min="1" max="1" chance="5" /> <!-- Herb of Magic -->
<item id="8609" min="1" max="1" chance="5" /> <!-- Herb of Casting Spd. -->
<item id="8612" min="1" max="1" chance="0.33" /> <!-- Herb of the Warrior -->
<item id="8613" min="1" max="1" chance="0.33" /> <!-- Wizard Herb -->
<item id="8614" min="1" max="1" chance="0.34" /> <!-- Herb of Recovery -->
<item id="8611" min="1" max="1" chance="10.34" /> <!-- Wind Walk Herb -->
<item id="10657" min="1" max="1" chance="0.66" /> <!-- Mysterious Herb -->
</drop>
</drop_lists>
<status undying="false" />
<collision>
<radius normal="9" />
<height normal="29" />
</collision>
</npc>
<npc id="2082" level="82" type="L2Monster" name="Canabion of Plague" title="Doppler">
<!-- TODO: Must be confirmed -->
<parameters>
<param name="MoveAroundSocial" value="160" />
<param name="MoveAroundSocial1" value="160" />
<param name="MoveAroundSocial2" value="160" />
<param name="IsAggressive" value="1" />
<param name="Aggressive_Time" value="1" />
<param name="Skill01_Probablity" value="3500" />
<param name="Type" value="1" />
<param name="PrivatesNorm" value="2081" />
<param name="PrivatesSpA" value="2082" />
<param name="PrivatesSpB" value="2083" />
<param name="MyMakerName" value="inzone03_2111_80m1" />
<param name="SoulShot" value="200" />
<param name="SoulShotRate" value="5" />
<param name="SpiritShot" value="100" />
<param name="SpiritShotRate" value="10" />
<param name="LongRangeGuardRate" value="5" />
<skill name="Skill01_ID" id="4032" level="8" />
<skill name="Debuff" id="5719" level="1" />
</parameters>
<race>DEMONIC</race>
<sex>FEMALE</sex>
<acquire exp="12707" sp="3" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="3643" mp="1743" hpRegen="8.5" mpRegen="3" />
<attack physical="1055.28566004965" magical="720.623302603812" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" critical="4" accuracy="5" />
<defence physical="349.77477" magical="255.95" />
<attribute>
<defence fire="20" water="20" wind="20" earth="20" holy="20" dark="20" />
</attribute>
<speed>
<walk ground="10" />
<run ground="120" />
</speed>
<abnormalResist physical="10" magical="10" />
</stats>
<skill_list>
<skill id="4032" level="1" /> <!-- NPC Strike -->
<skill id="4416" level="9" /> <!-- Demons -->
<skill id="5565" level="1" /> <!-- Expose Weak Point -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
</skill_list>
<ai clanHelpRange="200" aggroRange="300">
<clan_list>
<clan>RIM</clan>
<ignore_npc_id>2081</ignore_npc_id>
</clan_list>
</ai>
<drop_lists>
<drop>
<item id="8600" min="1" max="1" chance="8.4" /> <!-- Herb of Life -->
<item id="8601" min="1" max="1" chance="18.9" /> <!-- Major Herb of Life -->
<item id="8602" min="1" max="1" chance="14.7" /> <!-- Superior Herb of Life -->
<item id="8603" min="1" max="1" chance="1.1" /> <!-- Herb of Mana -->
<item id="8604" min="1" max="1" chance="5.94" /> <!-- Major Herb of Mana -->
<item id="8605" min="1" max="1" chance="3.96" /> <!-- Superior Herb of Mana -->
<item id="8606" min="1" max="1" chance="5" /> <!-- Herb of Power -->
<item id="8608" min="1" max="1" chance="5" /> <!-- Haste Herb -->
<item id="8610" min="1" max="1" chance="5" /> <!-- Herb of Critical Attack - Probability -->
<item id="10655" min="1" max="1" chance="5" /> <!-- Herb of HP Drain -->
<item id="10656" min="1" max="1" chance="5" /> <!-- Herb of Critical Attack - Power -->
<item id="8607" min="1" max="1" chance="5" /> <!-- Herb of Magic -->
<item id="8609" min="1" max="1" chance="5" /> <!-- Herb of Casting Spd. -->
<item id="8612" min="1" max="1" chance="0.33" /> <!-- Herb of the Warrior -->
<item id="8613" min="1" max="1" chance="0.33" /> <!-- Wizard Herb -->
<item id="8614" min="1" max="1" chance="0.34" /> <!-- Herb of Recovery -->
<item id="8611" min="1" max="1" chance="10.34" /> <!-- Wind Walk Herb -->
<item id="10657" min="1" max="1" chance="0.66" /> <!-- Mysterious Herb -->
</drop>
</drop_lists>
<status undying="false" />
<collision>
<radius normal="9" />
<height normal="31.5" />
</collision>
</npc>
<npc id="2083" level="83" type="L2Monster" name="Canabion of Plague" title="Void">
<!-- TODO: Must be confirmed -->
<parameters>
<param name="MoveAroundSocial" value="160" />
<param name="MoveAroundSocial1" value="160" />
<param name="MoveAroundSocial2" value="160" />
<param name="IsAggressive" value="1" />
<param name="Aggressive_Time" value="1" />
<param name="Skill01_Probablity" value="4500" />
<param name="Type" value="2" />
<param name="PrivatesNorm" value="2081" />
<param name="PrivatesSpA" value="2082" />
<param name="PrivatesSpB" value="2083" />
<param name="MyMakerName" value="inzone03_2111_80m1" />
<param name="SoulShot" value="200" />
<param name="SoulShotRate" value="5" />
<param name="SpiritShot" value="100" />
<param name="SpiritShotRate" value="10" />
<param name="LongRangeGuardRate" value="5" />
<skill name="Skill01_ID" id="4032" level="8" />
<skill name="Buff" id="4340" level="1" />
<skill name="Debuff" id="5719" level="1" />
</parameters>
<race>HUMANOID</race>
<sex>MALE</sex>
<acquire exp="13020" sp="3" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="3835" mp="1777" hpRegen="8.5" mpRegen="3" />
<attack physical="1099.42361669366" magical="750.763809564873" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" critical="4" accuracy="5" />
<defence physical="353.86144" magical="258.94045" />
<attribute>
<defence fire="20" water="20" wind="20" earth="20" holy="20" dark="20" />
</attribute>
<speed>
<walk ground="15" />
<run ground="120" />
</speed>
<abnormalResist physical="10" magical="10" />
</stats>
<skill_list>
<skill id="4032" level="1" /> <!-- NPC Strike -->
<skill id="4340" level="1" /> <!-- Ultimate Buff, 2nd -->
<skill id="4416" level="9" /> <!-- Demons -->
<skill id="5565" level="1" /> <!-- Expose Weak Point -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
</skill_list>
<ai clanHelpRange="300" aggroRange="300">
<clan_list>
<clan>RIM</clan>
<ignore_npc_id>2081</ignore_npc_id>
</clan_list>
</ai>
<drop_lists>
<drop>
<item id="8600" min="1" max="1" chance="8.4" /> <!-- Herb of Life -->
<item id="8601" min="1" max="1" chance="18.9" /> <!-- Major Herb of Life -->
<item id="8602" min="1" max="1" chance="14.7" /> <!-- Superior Herb of Life -->
<item id="8603" min="1" max="1" chance="1.1" /> <!-- Herb of Mana -->
<item id="8604" min="1" max="1" chance="5.94" /> <!-- Major Herb of Mana -->
<item id="8605" min="1" max="1" chance="3.96" /> <!-- Superior Herb of Mana -->
<item id="8606" min="1" max="1" chance="5" /> <!-- Herb of Power -->
<item id="8608" min="1" max="1" chance="5" /> <!-- Haste Herb -->
<item id="8610" min="1" max="1" chance="5" /> <!-- Herb of Critical Attack - Probability -->
<item id="10655" min="1" max="1" chance="5" /> <!-- Herb of HP Drain -->
<item id="10656" min="1" max="1" chance="5" /> <!-- Herb of Critical Attack - Power -->
<item id="8607" min="1" max="1" chance="5" /> <!-- Herb of Magic -->
<item id="8609" min="1" max="1" chance="5" /> <!-- Herb of Casting Spd. -->
<item id="8612" min="1" max="1" chance="0.33" /> <!-- Herb of the Warrior -->
<item id="8613" min="1" max="1" chance="0.33" /> <!-- Wizard Herb -->
<item id="8614" min="1" max="1" chance="0.34" /> <!-- Herb of Recovery -->
<item id="8611" min="1" max="1" chance="10.34" /> <!-- Wind Walk Herb -->
<item id="10657" min="1" max="1" chance="0.66" /> <!-- Mysterious Herb -->
</drop>
</drop_lists>
<status undying="false" />
<collision>
<radius normal="10" />
<height normal="35" />
</collision>
</npc>
</list>
@@ -2771,7 +2771,7 @@
<height normal="68" />
</collision>
<drop_lists>
<death>
<drop>
<item id="17404" min="1" max="1" chance="1.074" /> <!-- Seraph Leather Leggings -->
<item id="17398" min="1" max="1" chance="1.043" /> <!-- Seraph Gaiters -->
<item id="17409" min="1" max="1" chance="0.974" /> <!-- Seraph Stockings -->
@@ -2821,7 +2821,7 @@
<item id="35438" min="1" max="1" chance="0.3" /> <!-- Recipe: Seraph Leather Armor (60%) -->
<item id="35439" min="1" max="1" chance="0.3" /> <!-- Recipe: Seraph Leather Leggings (60%) -->
<item id="35430" min="1" max="1" chance="0.3" /> <!-- Recipe: Specter Retributer (60%) -->
</death>
</drop>
</drop_lists>
</npc>
<npc id="3474" level="95" type="L2Monster" name="Super Kat the Cat">
@@ -3003,7 +3003,7 @@
<height normal="37.5" />
</collision>
<drop_lists>
<death>
<drop>
<item id="17308" min="1" max="1" chance="23.3" /> <!-- Immortal Boots -->
<item id="17318" min="1" max="1" chance="22.9" /> <!-- Immortal Gloves -->
<item id="17304" min="1" max="1" chance="16.58" /> <!-- Immortal Helmet -->
@@ -3016,7 +3016,7 @@
<item id="17291" min="1" max="1" chance="1.482" /> <!-- Requiem Cutter -->
<item id="17527" min="1" max="1" chance="46.38" /> <!-- Scroll: Enchant Armor (R-grade) -->
<item id="17526" min="1" max="1" chance="3.604" /> <!-- Scroll: Enchant Weapon (R-grade) -->
</death>
</drop>
</drop_lists>
</npc>
<npc id="3478" level="87" type="L2Monster" name="Reinforced Kat the Cat">
@@ -3112,7 +3112,7 @@
<height normal="37.5" />
</collision>
<drop_lists>
<death>
<drop>
<item id="17343" min="1" max="1" chance="66.6" /> <!-- Twilight Shield -->
<item id="17339" min="1" max="1" chance="17.44" /> <!-- Twilight Breastplate -->
<item id="17350" min="1" max="1" chance="16.67" /> <!-- Twilight Tunic -->
@@ -3120,7 +3120,7 @@
<item id="17330" min="1" max="1" chance="0.75" /> <!-- Apocalypse Thrower -->
<item id="17527" min="1" max="1" chance="46.65" /> <!-- Scroll: Enchant Armor (R-grade) -->
<item id="17526" min="1" max="1" chance="3.631" /> <!-- Scroll: Enchant Weapon (R-grade) -->
</death>
</drop>
</drop_lists>
</npc>
<npc id="3480" level="91" type="L2Monster" name="Mind-controlling Feline Queen">
@@ -3216,13 +3216,13 @@
<height normal="37.5" />
</collision>
<drop_lists>
<death>
<drop>
<item id="17352" min="1" max="1" chance="91.435" /> <!-- Twilight Gloves -->
<item id="17347" min="1" max="1" chance="19.86" /> <!-- Twilight Leather Gloves -->
<item id="17330" min="1" max="1" chance="7.489" /> <!-- Apocalypse Thrower -->
<item id="17334" min="1" max="1" chance="1.587" /> <!-- Apocalypse Retributer -->
<item id="17526" min="1" max="1" chance="35.82" /> <!-- Scroll: Enchant Weapon (R-grade) -->
</death>
</drop>
</drop_lists>
</npc>
<npc id="3482" level="93" type="L2Monster" name="Traitorous Mew the Cat">
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1876,7 +1876,7 @@
</skill_list>
<ai aggroRange="300" isAggressive="true" clanHelpRange="300" />
<drop_lists>
<death>
<drop>
<item id="17623" min="1" max="1" chance="10.047" /> <!-- Earth Wyrm Heart Ring -->
<item id="17422" min="1" max="1" chance="9.133" /> <!-- Helios Thrower -->
<item id="17425" min="1" max="1" chance="9.106" /> <!-- Helios Caster -->
@@ -1932,11 +1932,11 @@
<item id="39484" min="1" max="1" chance="3.339" /> <!-- Alchemic Tome: Life Stone -->
<item id="39483" min="1" max="1" chance="3.31" /> <!-- Alchemic Tome: Enchant Scroll -->
<item id="39485" min="1" max="1" chance="3.266" /> <!-- Alchemic Tome: Dye -->
</death>
<lucky_corpse>
</drop>
<lucky_drop>
<item id="39629" min="3" max="3" chance="100" /> <!-- Fortune Pocket - Stage 1 -->
<item id="40198" min="1" max="1" chance="2.518" /> <!-- Disassembly Recipe Pouch: Armor -->
</lucky_corpse>
</lucky_drop>
</drop_lists>
<collision>
<radius normal="500" />
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+341 -361
View File
@@ -1,361 +1,341 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/npcs.xsd">
<npc id="21438" level="65" type="L2Monster" name="Heathen Warrior">
<!-- Confirmed CT2.5 -->
<parameters>
<param name="MoveAroundSocial" value="80" />
<param name="MoveAroundSocial1" value="80" />
<param name="MoveAroundSocial2" value="80" />
<param name="SoulShot" value="100" />
<param name="SoulShotRate" value="30" />
<param name="LongRangeGuardRate" value="5" />
<skill name="PhysicalSpecial" id="4032" level="6" />
</parameters>
<race>UNDEAD</race>
<sex>MALE</sex>
<equipment rhand="946" lhand="945" /> <!-- Skeleton Dagger / Skeleton Buckler -->
<acquire exp="2684" sp="1" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="2193.43142" hpRegen="7.5" mp="1188.8" mpRegen="2.7" />
<attack physical="582.81759" magical="397.98887" random="5" critical="8" accuracy="0" attackSpeed="253" type="DAGGER" range="40" distance="80" width="120" />
<defence physical="271.89033" magical="198.95754" shield="136" shieldRate="20" />
<speed>
<walk ground="80" />
<run ground="175" />
</speed>
<hit_time>520</hit_time>
<abnormalResist physical="10" magical="10" />
</stats>
<status undying="false" canBeSown="true" />
<skill_list>
<skill id="4032" level="6" /> <!-- NPC Strike -->
<skill id="4274" level="1" /> <!-- Blunt Weapon Weak Point -->
<skill id="4408" level="8" /> <!-- HP Increase (1/4x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="13" /> <!-- Slightly Strong P. Atk. -->
<skill id="4411" level="13" /> <!-- Slightly Strong M. Atk. -->
<skill id="4412" level="9" /> <!-- Slightly Weak P. Def. -->
<skill id="4413" level="9" /> <!-- Slightly Weak M. Def. -->
<skill id="4414" level="2" /> <!-- Standard Type -->
<skill id="4415" level="7" /> <!-- Daggers -->
<skill id="4416" level="1" /> <!-- Undead -->
<skill id="4278" level="1" /> <!-- Dark Attack -->
<skill id="4279" level="1" /> <!-- Fire Vulnerability -->
<skill id="4275" level="2" /> <!-- Holy Attack Vulnerability -->
</skill_list>
<shots shotChance="30" spiritChance="30" />
<ex_crt_effect>false</ex_crt_effect>
<s_npc_prop_hp_rate>0.25</s_npc_prop_hp_rate>
<ai aggroRange="300" clanHelpRange="300" isAggressive="true">
<clan_list>
<clan>UNDEAD</clan>
</clan_list>
</ai>
<drop_lists>
<death>
<group chance="70">
<item id="57" min="10" max="24" chance="100" /> <!-- Adena -->
</group>
<group chance="0.003">
<item id="729" min="1" max="1" chance="100" /> <!-- Scroll: Enchant Weapon (A-grade) -->
</group>
</death>
<corpse>
<item id="729" min="1" max="1" chance="0.003" /> <!-- Scroll: Enchant Weapon (A-grade) -->
</corpse>
<lucky_corpse>
<item id="39629" min="1" max="1" chance="100" /> <!-- Fortune Pocket - Stage 1 -->
</lucky_corpse>
</drop_lists>
<collision>
<radius normal="11" />
<height normal="28.5" />
</collision>
</npc>
<npc id="21439" level="66" type="L2Monster" name="Heathen Inmate">
<!-- Confirmed CT2.5 -->
<parameters>
<param name="MoveAroundSocial" value="130" />
<param name="MoveAroundSocial1" value="130" />
<param name="MoveAroundSocial2" value="130" />
<param name="SoulShot" value="100" />
<param name="SoulShotRate" value="30" />
<param name="LongRangeGuardRate" value="5" />
<skill name="PhysicalSpecial" id="4073" level="6" />
</parameters>
<race>UNDEAD</race>
<sex>MALE</sex>
<acquire exp="2768" sp="1" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="2244.67715" hpRegen="7.5" mp="1219.8" mpRegen="2.7" />
<attack physical="603.79903" magical="412.31647" random="10" critical="4" accuracy="5" attackSpeed="253" type="SWORD" range="40" distance="80" width="120" />
<defence physical="276.72752" magical="202.49719" />
<speed>
<walk ground="15" />
<run ground="175" />
</speed>
<hit_time>450</hit_time>
<abnormalResist physical="10" magical="10" />
</stats>
<status undying="false" canBeSown="true" />
<skill_list>
<skill id="4073" level="6" /> <!-- Stun -->
<skill id="4408" level="8" /> <!-- HP Increase (1/4x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="13" /> <!-- Slightly Strong P. Atk. -->
<skill id="4411" level="13" /> <!-- Slightly Strong M. Atk. -->
<skill id="4412" level="9" /> <!-- Slightly Weak P. Def. -->
<skill id="4413" level="9" /> <!-- Slightly Weak M. Def. -->
<skill id="4414" level="3" /> <!-- Light Armor Type -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
<skill id="4416" level="1" /> <!-- Undead -->
<skill id="4278" level="1" /> <!-- Dark Attack -->
<skill id="4275" level="2" /> <!-- Holy Attack Vulnerability -->
</skill_list>
<shots shotChance="30" spiritChance="30" />
<ex_crt_effect>false</ex_crt_effect>
<s_npc_prop_hp_rate>0.25</s_npc_prop_hp_rate>
<ai aggroRange="300" clanHelpRange="300" isAggressive="true">
<clan_list>
<clan>UNDEAD</clan>
</clan_list>
</ai>
<drop_lists>
<death>
<group chance="70">
<item id="57" min="11" max="25" chance="100" /> <!-- Adena -->
</group>
<group chance="0.03">
<item id="730" min="1" max="1" chance="100" /> <!-- Scroll: Enchant Armor (A-grade) -->
</group>
</death>
<corpse>
<item id="730" min="1" max="1" chance="0.03" /> <!-- Scroll: Enchant Armor (A-grade) -->
</corpse>
<lucky_corpse>
<item id="39629" min="1" max="1" chance="100" /> <!-- Fortune Pocket - Stage 1 -->
</lucky_corpse>
</drop_lists>
<collision>
<radius normal="30" grown="15.5" />
<height normal="40" grown="48.5" />
</collision>
</npc>
<npc id="21440" level="67" type="L2Monster" name="Heathen Archer">
<!-- Confirmed CT2.5 -->
<parameters>
<param name="MoveAroundSocial" value="157" />
<param name="MoveAroundSocial1" value="157" />
<param name="MoveAroundSocial2" value="157" />
<param name="SoulShot" value="100" />
<param name="SoulShotRate" value="30" />
<param name="LongRangeGuardRate" value="5" />
<skill name="PhysicalSpecial" id="4040" level="6" />
</parameters>
<race>UNDEAD</race>
<sex>MALE</sex>
<equipment rhand="284" /> <!-- Dark Elven Longbow -->
<acquire exp="3029" sp="1" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="2295.48154" hpRegen="7.5" mp="1251.0" mpRegen="2.7" />
<attack physical="624.93199" magical="426.74754" random="5" critical="8" accuracy="0" attackSpeed="253" reuseDelay="1500" type="BOW" range="1100" distance="10" width="0" />
<defence physical="281.55251" magical="206.02791" />
<speed>
<walk ground="40" />
<run ground="155" />
</speed>
<hit_time>800</hit_time>
<abnormalResist physical="10" magical="10" />
</stats>
<status undying="false" canBeSown="true" />
<skill_list>
<skill id="4040" level="6" /> <!-- NPC Bow Attack -->
<skill id="4071" level="3" /> <!-- Resist Bow/Crossbow Weapons -->
<skill id="4274" level="1" /> <!-- Blunt Weapon Weak Point -->
<skill id="4408" level="8" /> <!-- HP Increase (1/4x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="13" /> <!-- Slightly Strong P. Atk. -->
<skill id="4411" level="13" /> <!-- Slightly Strong M. Atk. -->
<skill id="4412" level="9" /> <!-- Slightly Weak P. Def. -->
<skill id="4413" level="9" /> <!-- Slightly Weak M. Def. -->
<skill id="4414" level="3" /> <!-- Light Armor Type -->
<skill id="4415" level="9" /> <!-- Bows -->
<skill id="4416" level="1" /> <!-- Undead -->
<skill id="4278" level="1" /> <!-- Dark Attack -->
<skill id="4279" level="1" /> <!-- Fire Vulnerability -->
<skill id="4275" level="2" /> <!-- Holy Attack Vulnerability -->
</skill_list>
<shots shotChance="30" spiritChance="30" />
<ex_crt_effect>false</ex_crt_effect>
<s_npc_prop_hp_rate>0.25</s_npc_prop_hp_rate>
<ai type="ARCHER" clanHelpRange="300" dodge="15" aggroRange="300">
<clan_list>
<clan>UNDEAD</clan>
</clan_list>
</ai>
<drop_lists>
<death>
<group chance="70">
<item id="57" min="11" max="27" chance="100" /> <!-- Adena -->
</group>
<group chance="0.03">
<item id="730" min="1" max="1" chance="100" /> <!-- Scroll: Enchant Armor (A-grade) -->
</group>
</death>
<corpse>
<item id="730" min="1" max="1" chance="0.03" /> <!-- Scroll: Enchant Armor (A-grade) -->
</corpse>
<lucky_corpse>
<item id="39629" min="1" max="1" chance="100" /> <!-- Fortune Pocket - Stage 1 -->
</lucky_corpse>
</drop_lists>
<collision>
<radius normal="11" />
<height normal="27" />
</collision>
</npc>
<npc id="21441" level="68" type="L2Monster" name="Heathen Soldier">
<!-- Confirmed CT2.5 -->
<parameters>
<param name="MoveAroundSocial" value="0" />
<param name="MoveAroundSocial1" value="0" />
<param name="MoveAroundSocial2" value="0" />
<param name="SoulShot" value="100" />
<param name="SoulShotRate" value="30" />
<param name="LongRangeGuardRate" value="5" />
<skill name="PhysicalSpecial" id="4072" level="6" />
</parameters>
<race>UNDEAD</race>
<sex>MALE</sex>
<equipment rhand="96" /> <!-- Scythe -->
<acquire exp="2937" sp="1" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="2345.76698" hpRegen="7.5" mp="1282.4" mpRegen="2.7" />
<attack physical="646.17968" magical="441.25696" random="10" critical="4" accuracy="5" attackSpeed="253" type="SWORD" range="40" distance="80" width="120" />
<defence physical="286.3615" magical="209.54692" />
<speed>
<walk ground="50" />
<run ground="170" />
</speed>
<hit_time>210</hit_time>
<abnormalResist physical="10" magical="10" />
</stats>
<status undying="false" canBeSown="true" />
<skill_list>
<skill id="4072" level="6" /> <!-- Stun -->
<skill id="4274" level="1" /> <!-- Blunt Weapon Weak Point -->
<skill id="4408" level="8" /> <!-- HP Increase (1/4x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="13" /> <!-- Slightly Strong P. Atk. -->
<skill id="4411" level="13" /> <!-- Slightly Strong M. Atk. -->
<skill id="4412" level="9" /> <!-- Slightly Weak P. Def. -->
<skill id="4413" level="9" /> <!-- Slightly Weak M. Def. -->
<skill id="4414" level="2" /> <!-- Standard Type -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
<skill id="4416" level="1" /> <!-- Undead -->
<skill id="4278" level="1" /> <!-- Dark Attack -->
<skill id="4279" level="1" /> <!-- Fire Vulnerability -->
<skill id="4275" level="2" /> <!-- Holy Attack Vulnerability -->
</skill_list>
<shots shotChance="30" spiritChance="30" />
<ex_crt_effect>false</ex_crt_effect>
<s_npc_prop_hp_rate>0.25</s_npc_prop_hp_rate>
<ai aggroRange="300" clanHelpRange="300" isAggressive="true">
<clan_list>
<clan>UNDEAD</clan>
</clan_list>
</ai>
<drop_lists>
<death>
<group chance="70">
<item id="57" min="11" max="26" chance="100" /> <!-- Adena -->
</group>
<group chance="0.003">
<item id="729" min="1" max="1" chance="100" /> <!-- Scroll: Enchant Weapon (A-grade) -->
</group>
</death>
<corpse>
<item id="729" min="1" max="1" chance="0.003" /> <!-- Scroll: Enchant Weapon (A-grade) -->
</corpse>
<lucky_corpse>
<item id="39629" min="1" max="1" chance="100" /> <!-- Fortune Pocket - Stage 1 -->
</lucky_corpse>
</drop_lists>
<collision>
<radius normal="10" grown="12" />
<height normal="28" grown="33" />
</collision>
</npc>
<npc id="21442" level="69" type="L2Monster" name="Heathen Knight">
<!-- Confirmed CT2.5 -->
<parameters>
<param name="MoveAroundSocial" value="215" />
<param name="MoveAroundSocial1" value="215" />
<param name="MoveAroundSocial2" value="215" />
<param name="SoulShot" value="100" />
<param name="SoulShotRate" value="30" />
<param name="LongRangeGuardRate" value="5" />
<skill name="PhysicalSpecial" id="4232" level="6" />
</parameters>
<race>UNDEAD</race>
<sex>MALE</sex>
<equipment rhand="150" lhand="103" /> <!-- Elemental Sword / Tower Shield -->
<acquire exp="3024" sp="1" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="2395.45533" hpRegen="7.5" mp="1314.0" mpRegen="2.7" />
<attack physical="667.50361" magical="455.81844" random="10" critical="4" accuracy="5" attackSpeed="253" type="SWORD" range="40" distance="80" width="120" />
<defence physical="291.15063" magical="213.05139" shield="146" shieldRate="20" />
<speed>
<walk ground="40" />
<run ground="165" />
</speed>
<hit_time>170</hit_time>
<abnormalResist physical="10" magical="10" />
</stats>
<status undying="false" canBeSown="true" />
<skill_list>
<skill id="4232" level="6" /> <!-- NPC AE Strike -->
<skill id="4274" level="1" /> <!-- Blunt Weapon Weak Point -->
<skill id="4408" level="8" /> <!-- HP Increase (1/4x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="13" /> <!-- Slightly Strong P. Atk. -->
<skill id="4411" level="13" /> <!-- Slightly Strong M. Atk. -->
<skill id="4412" level="9" /> <!-- Slightly Weak P. Def. -->
<skill id="4413" level="9" /> <!-- Slightly Weak M. Def. -->
<skill id="4414" level="2" /> <!-- Standard Type -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
<skill id="4416" level="1" /> <!-- Undead -->
<skill id="4278" level="1" /> <!-- Dark Attack -->
<skill id="4279" level="1" /> <!-- Fire Vulnerability -->
<skill id="4275" level="2" /> <!-- Holy Attack Vulnerability -->
</skill_list>
<shots shotChance="30" spiritChance="30" />
<ex_crt_effect>false</ex_crt_effect>
<s_npc_prop_hp_rate>0.25</s_npc_prop_hp_rate>
<ai aggroRange="300" clanHelpRange="300" isAggressive="true">
<clan_list>
<clan>UNDEAD</clan>
</clan_list>
</ai>
<drop_lists>
<death>
<group chance="70">
<item id="57" min="12" max="27" chance="100" /> <!-- Adena -->
</group>
<group chance="0.03">
<item id="730" min="1" max="1" chance="100" /> <!-- Scroll: Enchant Armor (A-grade) -->
</group>
</death>
<corpse>
<item id="730" min="1" max="1" chance="0.03" /> <!-- Scroll: Enchant Armor (A-grade) -->
</corpse>
<lucky_corpse>
<item id="39629" min="1" max="1" chance="100" /> <!-- Fortune Pocket - Stage 1 -->
</lucky_corpse>
</drop_lists>
<collision>
<radius normal="10" />
<height normal="25" />
</collision>
</npc>
</list>
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/npcs.xsd">
<npc id="21438" level="65" type="L2Monster" name="Heathen Warrior">
<!-- Confirmed CT2.5 -->
<parameters>
<param name="MoveAroundSocial" value="80" />
<param name="MoveAroundSocial1" value="80" />
<param name="MoveAroundSocial2" value="80" />
<param name="SoulShot" value="100" />
<param name="SoulShotRate" value="30" />
<param name="LongRangeGuardRate" value="5" />
<skill name="PhysicalSpecial" id="4032" level="6" />
</parameters>
<race>UNDEAD</race>
<sex>MALE</sex>
<equipment rhand="946" lhand="945" /> <!-- Skeleton Dagger / Skeleton Buckler -->
<acquire exp="2684" sp="1" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="2193.43142" hpRegen="7.5" mp="1188.8" mpRegen="2.7" />
<attack physical="582.81759" magical="397.98887" random="5" critical="8" accuracy="0" attackSpeed="253" type="DAGGER" range="40" distance="80" width="120" />
<defence physical="271.89033" magical="198.95754" shield="136" shieldRate="20" />
<speed>
<walk ground="80" />
<run ground="175" />
</speed>
<hit_time>520</hit_time>
<abnormalResist physical="10" magical="10" />
</stats>
<status undying="false" canBeSown="true" />
<skill_list>
<skill id="4032" level="6" /> <!-- NPC Strike -->
<skill id="4274" level="1" /> <!-- Blunt Weapon Weak Point -->
<skill id="4408" level="8" /> <!-- HP Increase (1/4x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="13" /> <!-- Slightly Strong P. Atk. -->
<skill id="4411" level="13" /> <!-- Slightly Strong M. Atk. -->
<skill id="4412" level="9" /> <!-- Slightly Weak P. Def. -->
<skill id="4413" level="9" /> <!-- Slightly Weak M. Def. -->
<skill id="4414" level="2" /> <!-- Standard Type -->
<skill id="4415" level="7" /> <!-- Daggers -->
<skill id="4416" level="1" /> <!-- Undead -->
<skill id="4278" level="1" /> <!-- Dark Attack -->
<skill id="4279" level="1" /> <!-- Fire Vulnerability -->
<skill id="4275" level="2" /> <!-- Holy Attack Vulnerability -->
</skill_list>
<shots shotChance="30" spiritChance="30" />
<ex_crt_effect>false</ex_crt_effect>
<s_npc_prop_hp_rate>0.25</s_npc_prop_hp_rate>
<ai aggroRange="300" clanHelpRange="300" isAggressive="true">
<clan_list>
<clan>UNDEAD</clan>
</clan_list>
</ai>
<drop_lists>
<drop>
<item id="57" min="10" max="24" chance="70" /> <!-- Adena -->
<item id="729" min="1" max="1" chance="0.003" /> <!-- Scroll: Enchant Weapon (A-grade) -->
</drop>
<spoil>
<item id="729" min="1" max="1" chance="0.003" /> <!-- Scroll: Enchant Weapon (A-grade) -->
</spoil>
<lucky_drop>
<item id="39629" min="1" max="1" chance="100" /> <!-- Fortune Pocket - Stage 1 -->
</lucky_drop>
</drop_lists>
<collision>
<radius normal="11" />
<height normal="28.5" />
</collision>
</npc>
<npc id="21439" level="66" type="L2Monster" name="Heathen Inmate">
<!-- Confirmed CT2.5 -->
<parameters>
<param name="MoveAroundSocial" value="130" />
<param name="MoveAroundSocial1" value="130" />
<param name="MoveAroundSocial2" value="130" />
<param name="SoulShot" value="100" />
<param name="SoulShotRate" value="30" />
<param name="LongRangeGuardRate" value="5" />
<skill name="PhysicalSpecial" id="4073" level="6" />
</parameters>
<race>UNDEAD</race>
<sex>MALE</sex>
<acquire exp="2768" sp="1" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="2244.67715" hpRegen="7.5" mp="1219.8" mpRegen="2.7" />
<attack physical="603.79903" magical="412.31647" random="10" critical="4" accuracy="5" attackSpeed="253" type="SWORD" range="40" distance="80" width="120" />
<defence physical="276.72752" magical="202.49719" />
<speed>
<walk ground="15" />
<run ground="175" />
</speed>
<hit_time>450</hit_time>
<abnormalResist physical="10" magical="10" />
</stats>
<status undying="false" canBeSown="true" />
<skill_list>
<skill id="4073" level="6" /> <!-- Stun -->
<skill id="4408" level="8" /> <!-- HP Increase (1/4x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="13" /> <!-- Slightly Strong P. Atk. -->
<skill id="4411" level="13" /> <!-- Slightly Strong M. Atk. -->
<skill id="4412" level="9" /> <!-- Slightly Weak P. Def. -->
<skill id="4413" level="9" /> <!-- Slightly Weak M. Def. -->
<skill id="4414" level="3" /> <!-- Light Armor Type -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
<skill id="4416" level="1" /> <!-- Undead -->
<skill id="4278" level="1" /> <!-- Dark Attack -->
<skill id="4275" level="2" /> <!-- Holy Attack Vulnerability -->
</skill_list>
<shots shotChance="30" spiritChance="30" />
<ex_crt_effect>false</ex_crt_effect>
<s_npc_prop_hp_rate>0.25</s_npc_prop_hp_rate>
<ai aggroRange="300" clanHelpRange="300" isAggressive="true">
<clan_list>
<clan>UNDEAD</clan>
</clan_list>
</ai>
<drop_lists>
<drop>
<item id="57" min="11" max="25" chance="70" /> <!-- Adena -->
<item id="730" min="1" max="1" chance="0.03" /> <!-- Scroll: Enchant Armor (A-grade) -->
</drop>
<spoil>
<item id="730" min="1" max="1" chance="0.03" /> <!-- Scroll: Enchant Armor (A-grade) -->
</spoil>
<lucky_drop>
<item id="39629" min="1" max="1" chance="100" /> <!-- Fortune Pocket - Stage 1 -->
</lucky_drop>
</drop_lists>
<collision>
<radius normal="30" grown="15.5" />
<height normal="40" grown="48.5" />
</collision>
</npc>
<npc id="21440" level="67" type="L2Monster" name="Heathen Archer">
<!-- Confirmed CT2.5 -->
<parameters>
<param name="MoveAroundSocial" value="157" />
<param name="MoveAroundSocial1" value="157" />
<param name="MoveAroundSocial2" value="157" />
<param name="SoulShot" value="100" />
<param name="SoulShotRate" value="30" />
<param name="LongRangeGuardRate" value="5" />
<skill name="PhysicalSpecial" id="4040" level="6" />
</parameters>
<race>UNDEAD</race>
<sex>MALE</sex>
<equipment rhand="284" /> <!-- Dark Elven Longbow -->
<acquire exp="3029" sp="1" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="2295.48154" hpRegen="7.5" mp="1251.0" mpRegen="2.7" />
<attack physical="624.93199" magical="426.74754" random="5" critical="8" accuracy="0" attackSpeed="253" reuseDelay="1500" type="BOW" range="1100" distance="10" width="0" />
<defence physical="281.55251" magical="206.02791" />
<speed>
<walk ground="40" />
<run ground="155" />
</speed>
<hit_time>800</hit_time>
<abnormalResist physical="10" magical="10" />
</stats>
<status undying="false" canBeSown="true" />
<skill_list>
<skill id="4040" level="6" /> <!-- NPC Bow Attack -->
<skill id="4071" level="3" /> <!-- Resist Bow/Crossbow Weapons -->
<skill id="4274" level="1" /> <!-- Blunt Weapon Weak Point -->
<skill id="4408" level="8" /> <!-- HP Increase (1/4x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="13" /> <!-- Slightly Strong P. Atk. -->
<skill id="4411" level="13" /> <!-- Slightly Strong M. Atk. -->
<skill id="4412" level="9" /> <!-- Slightly Weak P. Def. -->
<skill id="4413" level="9" /> <!-- Slightly Weak M. Def. -->
<skill id="4414" level="3" /> <!-- Light Armor Type -->
<skill id="4415" level="9" /> <!-- Bows -->
<skill id="4416" level="1" /> <!-- Undead -->
<skill id="4278" level="1" /> <!-- Dark Attack -->
<skill id="4279" level="1" /> <!-- Fire Vulnerability -->
<skill id="4275" level="2" /> <!-- Holy Attack Vulnerability -->
</skill_list>
<shots shotChance="30" spiritChance="30" />
<ex_crt_effect>false</ex_crt_effect>
<s_npc_prop_hp_rate>0.25</s_npc_prop_hp_rate>
<ai type="ARCHER" clanHelpRange="300" dodge="15" aggroRange="300">
<clan_list>
<clan>UNDEAD</clan>
</clan_list>
</ai>
<drop_lists>
<drop>
<item id="57" min="11" max="27" chance="70" /> <!-- Adena -->
<item id="730" min="1" max="1" chance="0.03" /> <!-- Scroll: Enchant Armor (A-grade) -->
</drop>
<spoil>
<item id="730" min="1" max="1" chance="0.03" /> <!-- Scroll: Enchant Armor (A-grade) -->
</spoil>
<lucky_drop>
<item id="39629" min="1" max="1" chance="100" /> <!-- Fortune Pocket - Stage 1 -->
</lucky_drop>
</drop_lists>
<collision>
<radius normal="11" />
<height normal="27" />
</collision>
</npc>
<npc id="21441" level="68" type="L2Monster" name="Heathen Soldier">
<!-- Confirmed CT2.5 -->
<parameters>
<param name="MoveAroundSocial" value="0" />
<param name="MoveAroundSocial1" value="0" />
<param name="MoveAroundSocial2" value="0" />
<param name="SoulShot" value="100" />
<param name="SoulShotRate" value="30" />
<param name="LongRangeGuardRate" value="5" />
<skill name="PhysicalSpecial" id="4072" level="6" />
</parameters>
<race>UNDEAD</race>
<sex>MALE</sex>
<equipment rhand="96" /> <!-- Scythe -->
<acquire exp="2937" sp="1" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="2345.76698" hpRegen="7.5" mp="1282.4" mpRegen="2.7" />
<attack physical="646.17968" magical="441.25696" random="10" critical="4" accuracy="5" attackSpeed="253" type="SWORD" range="40" distance="80" width="120" />
<defence physical="286.3615" magical="209.54692" />
<speed>
<walk ground="50" />
<run ground="170" />
</speed>
<hit_time>210</hit_time>
<abnormalResist physical="10" magical="10" />
</stats>
<status undying="false" canBeSown="true" />
<skill_list>
<skill id="4072" level="6" /> <!-- Stun -->
<skill id="4274" level="1" /> <!-- Blunt Weapon Weak Point -->
<skill id="4408" level="8" /> <!-- HP Increase (1/4x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="13" /> <!-- Slightly Strong P. Atk. -->
<skill id="4411" level="13" /> <!-- Slightly Strong M. Atk. -->
<skill id="4412" level="9" /> <!-- Slightly Weak P. Def. -->
<skill id="4413" level="9" /> <!-- Slightly Weak M. Def. -->
<skill id="4414" level="2" /> <!-- Standard Type -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
<skill id="4416" level="1" /> <!-- Undead -->
<skill id="4278" level="1" /> <!-- Dark Attack -->
<skill id="4279" level="1" /> <!-- Fire Vulnerability -->
<skill id="4275" level="2" /> <!-- Holy Attack Vulnerability -->
</skill_list>
<shots shotChance="30" spiritChance="30" />
<ex_crt_effect>false</ex_crt_effect>
<s_npc_prop_hp_rate>0.25</s_npc_prop_hp_rate>
<ai aggroRange="300" clanHelpRange="300" isAggressive="true">
<clan_list>
<clan>UNDEAD</clan>
</clan_list>
</ai>
<drop_lists>
<drop>
<item id="57" min="11" max="26" chance="70" /> <!-- Adena -->
<item id="729" min="1" max="1" chance="0.003" /> <!-- Scroll: Enchant Weapon (A-grade) -->
</drop>
<spoil>
<item id="729" min="1" max="1" chance="0.003" /> <!-- Scroll: Enchant Weapon (A-grade) -->
</spoil>
<lucky_drop>
<item id="39629" min="1" max="1" chance="100" /> <!-- Fortune Pocket - Stage 1 -->
</lucky_drop>
</drop_lists>
<collision>
<radius normal="10" grown="12" />
<height normal="28" grown="33" />
</collision>
</npc>
<npc id="21442" level="69" type="L2Monster" name="Heathen Knight">
<!-- Confirmed CT2.5 -->
<parameters>
<param name="MoveAroundSocial" value="215" />
<param name="MoveAroundSocial1" value="215" />
<param name="MoveAroundSocial2" value="215" />
<param name="SoulShot" value="100" />
<param name="SoulShotRate" value="30" />
<param name="LongRangeGuardRate" value="5" />
<skill name="PhysicalSpecial" id="4232" level="6" />
</parameters>
<race>UNDEAD</race>
<sex>MALE</sex>
<equipment rhand="150" lhand="103" /> <!-- Elemental Sword / Tower Shield -->
<acquire exp="3024" sp="1" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="2395.45533" hpRegen="7.5" mp="1314.0" mpRegen="2.7" />
<attack physical="667.50361" magical="455.81844" random="10" critical="4" accuracy="5" attackSpeed="253" type="SWORD" range="40" distance="80" width="120" />
<defence physical="291.15063" magical="213.05139" shield="146" shieldRate="20" />
<speed>
<walk ground="40" />
<run ground="165" />
</speed>
<hit_time>170</hit_time>
<abnormalResist physical="10" magical="10" />
</stats>
<status undying="false" canBeSown="true" />
<skill_list>
<skill id="4232" level="6" /> <!-- NPC AE Strike -->
<skill id="4274" level="1" /> <!-- Blunt Weapon Weak Point -->
<skill id="4408" level="8" /> <!-- HP Increase (1/4x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="13" /> <!-- Slightly Strong P. Atk. -->
<skill id="4411" level="13" /> <!-- Slightly Strong M. Atk. -->
<skill id="4412" level="9" /> <!-- Slightly Weak P. Def. -->
<skill id="4413" level="9" /> <!-- Slightly Weak M. Def. -->
<skill id="4414" level="2" /> <!-- Standard Type -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
<skill id="4416" level="1" /> <!-- Undead -->
<skill id="4278" level="1" /> <!-- Dark Attack -->
<skill id="4279" level="1" /> <!-- Fire Vulnerability -->
<skill id="4275" level="2" /> <!-- Holy Attack Vulnerability -->
</skill_list>
<shots shotChance="30" spiritChance="30" />
<ex_crt_effect>false</ex_crt_effect>
<s_npc_prop_hp_rate>0.25</s_npc_prop_hp_rate>
<ai aggroRange="300" clanHelpRange="300" isAggressive="true">
<clan_list>
<clan>UNDEAD</clan>
</clan_list>
</ai>
<drop_lists>
<drop>
<item id="57" min="12" max="27" chance="70" /> <!-- Adena -->
<item id="730" min="1" max="1" chance="0.03" /> <!-- Scroll: Enchant Armor (A-grade) -->
</drop>
<spoil>
<item id="730" min="1" max="1" chance="0.03" /> <!-- Scroll: Enchant Armor (A-grade) -->
</spoil>
<lucky_drop>
<item id="39629" min="1" max="1" chance="100" /> <!-- Fortune Pocket - Stage 1 -->
</lucky_drop>
</drop_lists>
<collision>
<radius normal="10" />
<height normal="25" />
</collision>
</npc>
</list>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,91 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/npcs.xsd">
<npc id="21797" level="55" type="L2Monster" name="Timiniel's Spirit">
<!-- Confirmed CT2.5 -->
<parameters>
<param name="MoveAroundSocial" value="0" />
<param name="MoveAroundSocial1" value="0" />
<param name="MoveAroundSocial2" value="0" />
<param name="SoulShot" value="100" />
<param name="SoulShotRate" value="10" />
<param name="SpiritShot" value="100" />
<param name="SpiritShotRate" value="5" />
<param name="LongRangeGuardRate" value="5" />
<skill name="DDMagic" id="4562" level="5" /> <!-- NPC Solar Flare -->
</parameters>
<race>FAIRY</race>
<sex>FEMALE</sex>
<acquire exp="3562" sp="1" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="1673.05473" hpRegen="6.5" mp="889.8" mpRegen="2.4" />
<attack physical="388.11142" magical="265.02979" random="50" critical="1" accuracy="9" attackSpeed="253" type="BLUNT" range="40" distance="80" width="120" />
<defence physical="223.6362" magical="148.899508363765" />
<attribute>
<defence fire="20" water="20" wind="189" earth="-5" holy="20" dark="20" />
</attribute>
<speed>
<walk ground="80" />
<run ground="165" />
</speed>
<hit_time>720</hit_time>
</stats>
<status undying="false" canBeSown="true" />
<skill_list>
<skill id="4408" level="9" /> <!-- HP Increase (1/2x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="9" /> <!-- Slightly Weak P. Atk. -->
<skill id="4411" level="9" /> <!-- Slightly Weak M. Atk. -->
<skill id="4412" level="13" /> <!-- Slightly Strong P. Def. -->
<skill id="4413" level="13" /> <!-- Slightly Strong M. Def. -->
<skill id="4414" level="3" /> <!-- Light Armor Type -->
<skill id="4415" level="5" /> <!-- Blunt Weapons -->
<skill id="4416" level="13" /> <!-- Fairies -->
<skill id="4562" level="5" /> <!-- NPC Solar Flare -->
<skill id="4011" level="5" /> <!-- Wind Resistance -->
<skill id="4282" level="1" /> <!-- Earth Attack Vulnerability -->
</skill_list>
<shots shotChance="30" spiritChance="30" />
<ex_crt_effect>false</ex_crt_effect>
<s_npc_prop_hp_rate>0.5</s_npc_prop_hp_rate>
<ai aggroRange="300" clanHelpRange="300" isAggressive="false">
<clan_list>
<clan>TIMINIEL</clan>
</clan_list>
</ai>
<drop_lists>
<death>
<group chance="70">
<item id="57" min="315" max="643" chance="100" /> <!-- Adena -->
</group>
<group chance="0.6668000221252441">
<item id="2497" min="1" max="1" chance="0.7653" /> <!-- Full Plate Shield -->
<item id="2966" min="1" max="1" chance="60.4723" /> <!-- Full Plate Shield Fragment -->
<item id="2414" min="1" max="1" chance="0.5357" /> <!-- Full Plate Helmet -->
<item id="2959" min="1" max="1" chance="38.2267" /> <!-- Full Plate Helmet Design -->
</group>
<group chance="15.31820011138916">
<item id="1869" min="1" max="1" chance="17.4926" /> <!-- Iron Ore -->
<item id="1870" min="1" max="1" chance="17.4926" /> <!-- Coal -->
<item id="1871" min="1" max="1" chance="17.4926" /> <!-- Charcoal -->
<item id="1872" min="1" max="1" chance="23.3234" /> <!-- Animal Bone -->
<item id="1867" min="1" max="1" chance="23.3234" /> <!-- Animal Skin -->
<item id="4175" min="1" max="1" chance="0.337" /> <!-- Recipe: Sealed Avadon Boots (100%) -->
<item id="4972" min="1" max="1" chance="0.0202" /> <!-- Recipe: Great Axe (60%) -->
<item id="8726" min="1" max="1" chance="0.4049" /> <!-- Life Stone - Level 55 -->
<item id="8736" min="1" max="1" chance="0.1012" /> <!-- Mid-Grade Life Stone - Level 55 -->
<item id="8746" min="1" max="1" chance="0.0101" /> <!-- High-Grade Life Stone - Level 55 -->
<item id="8756" min="1" max="1" chance="0.002" /> <!-- Top-Grade Life Stone - Level 55 -->
</group>
</death>
<corpse>
<item id="2961" min="1" max="1" chance="4.3468" /> <!-- Full Plate Boots Part -->
<item id="1867" min="1" max="3" chance="53.219" /> <!-- Animal Skin -->
<item id="1869" min="1" max="1" chance="79.8286" /> <!-- Iron Ore -->
</corpse>
</drop_lists>
<collision>
<radius normal="5" />
<height normal="25" />
</collision>
</npc>
</list>
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/npcs.xsd">
<npc id="21797" level="55" type="L2Monster" name="Timiniel's Spirit">
<!-- Confirmed CT2.5 -->
<parameters>
<param name="MoveAroundSocial" value="0" />
<param name="MoveAroundSocial1" value="0" />
<param name="MoveAroundSocial2" value="0" />
<param name="SoulShot" value="100" />
<param name="SoulShotRate" value="10" />
<param name="SpiritShot" value="100" />
<param name="SpiritShotRate" value="5" />
<param name="LongRangeGuardRate" value="5" />
<skill name="DDMagic" id="4562" level="5" /> <!-- NPC Solar Flare -->
</parameters>
<race>FAIRY</race>
<sex>FEMALE</sex>
<acquire exp="3562" sp="1" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="1673.05473" hpRegen="6.5" mp="889.8" mpRegen="2.4" />
<attack physical="388.11142" magical="265.02979" random="50" critical="1" accuracy="9" attackSpeed="253" type="BLUNT" range="40" distance="80" width="120" />
<defence physical="223.6362" magical="148.899508363765" />
<attribute>
<defence fire="20" water="20" wind="189" earth="-5" holy="20" dark="20" />
</attribute>
<speed>
<walk ground="80" />
<run ground="165" />
</speed>
<hit_time>720</hit_time>
</stats>
<status undying="false" canBeSown="true" />
<skill_list>
<skill id="4408" level="9" /> <!-- HP Increase (1/2x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="9" /> <!-- Slightly Weak P. Atk. -->
<skill id="4411" level="9" /> <!-- Slightly Weak M. Atk. -->
<skill id="4412" level="13" /> <!-- Slightly Strong P. Def. -->
<skill id="4413" level="13" /> <!-- Slightly Strong M. Def. -->
<skill id="4414" level="3" /> <!-- Light Armor Type -->
<skill id="4415" level="5" /> <!-- Blunt Weapons -->
<skill id="4416" level="13" /> <!-- Fairies -->
<skill id="4562" level="5" /> <!-- NPC Solar Flare -->
<skill id="4011" level="5" /> <!-- Wind Resistance -->
<skill id="4282" level="1" /> <!-- Earth Attack Vulnerability -->
</skill_list>
<shots shotChance="30" spiritChance="30" />
<ex_crt_effect>false</ex_crt_effect>
<s_npc_prop_hp_rate>0.5</s_npc_prop_hp_rate>
<ai aggroRange="300" clanHelpRange="300" isAggressive="false">
<clan_list>
<clan>TIMINIEL</clan>
</clan_list>
</ai>
<drop_lists>
<drop>
<item id="57" min="315" max="643" chance="70" /> <!-- Adena -->
<item id="2497" min="1" max="1" chance="0.00510302056932449" /> <!-- Full Plate Shield -->
<item id="2966" min="1" max="1" chance="0.403229309779644" /> <!-- Full Plate Shield Fragment -->
<item id="2414" min="1" max="1" chance="0.00357204771852493" /> <!-- Full Plate Helmet -->
<item id="2959" min="1" max="1" chance="0.254895644057751" /> <!-- Full Plate Helmet Design -->
<item id="1869" min="1" max="1" chance="2.67955147268486" /> <!-- Iron Ore -->
<item id="1870" min="1" max="1" chance="2.67955147268486" /> <!-- Coal -->
<item id="1871" min="1" max="1" chance="2.67955147268486" /> <!-- Charcoal -->
<item id="1872" min="1" max="1" chance="3.57272508477974" /> <!-- Animal Bone -->
<item id="1867" min="1" max="1" chance="3.57272508477974" /> <!-- Animal Skin -->
<item id="4175" min="1" max="1" chance="0.0516223343753815" /> <!-- Recipe: Sealed Avadon Boots (100%) -->
<item id="4972" min="1" max="1" chance="0.00309427642250061" /> <!-- Recipe: Great Axe (60%) -->
<item id="8726" min="1" max="1" chance="0.0620233922510147" /> <!-- Life Stone - Level 55 -->
<item id="8736" min="1" max="1" chance="0.0155020185127258" /> <!-- Mid-Grade Life Stone - Level 55 -->
<item id="8746" min="1" max="1" chance="0.00154713821125031" /> <!-- High-Grade Life Stone - Level 55 -->
<item id="8756" min="1" max="1" chance="0.000306364002227783" /> <!-- Top-Grade Life Stone - Level 55 -->
</drop>
<spoil>
<item id="2961" min="1" max="1" chance="4.3468" /> <!-- Full Plate Boots Part -->
<item id="1867" min="1" max="3" chance="53.219" /> <!-- Animal Skin -->
<item id="1869" min="1" max="1" chance="79.8286" /> <!-- Iron Ore -->
</spoil>
</drop_lists>
<collision>
<radius normal="5" />
<height normal="25" />
</collision>
</npc>
</list>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+3 -11
View File
@@ -9,14 +9,6 @@
<xs:complexType name="drop_list">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="item" type="drop_list_item" />
<xs:element name="group">
<xs:complexType>
<xs:sequence>
<xs:element name="item" type="drop_list_item" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="chance" type="xs:decimal" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:element name="list">
@@ -267,9 +259,9 @@
<xs:element name="drop_lists" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:all>
<xs:element name="death" type="drop_list" minOccurs="0" maxOccurs="1" />
<xs:element name="corpse" type="drop_list" minOccurs="0" maxOccurs="1" />
<xs:element name="lucky_corpse" type="drop_list" minOccurs="0" maxOccurs="1" />
<xs:element name="drop" type="drop_list" minOccurs="0" maxOccurs="1" />
<xs:element name="spoil" type="drop_list" minOccurs="0" maxOccurs="1" />
<xs:element name="lucky_drop" type="drop_list" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
</xs:element>