Addition of Defeat the Queen event.

Contributed by Serenitty.
This commit is contained in:
MobiusDevelopment 2021-11-04 16:28:06 +00:00
parent f10e4495f9
commit 552680c628
26 changed files with 1570 additions and 92 deletions

View File

@ -41,6 +41,7 @@
<instance id="214" name="Dwelling of Spirits" />
<instance id="215" name="Transcendent Instance Zone" />
<instance id="216" name="Zaken's Headquarters" />
<instance id="217" name="Queen Ant's Lair" />
<instance id="218" name="Orfen's Lair" />
<instance id="219" name="Cruma's Central Control Room" />
<instance id="220" name="Baium's Lair" />

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<instance id="217" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
<time duration="60" empty="0" />
<locations>
<enter type="FIXED">
<location x="-21844" y="183637" z="-5712" />
</enter>
<exit type="ORIGIN" />
</locations>
<conditions>
<condition type="Party" />
<condition type="CommandChannel" />
<condition type="CommandChannelLeader" />
<condition type="GroupMin">
<param name="limit" value="1" /> <!-- 1 for tester only, change on live server -->
</condition>
<condition type="GroupMax">
<param name="limit" value="100" />
</condition>
<condition type="Level">
<param name="min" value="65" />
<param name="max" value="99" />
</condition>
<condition type="Distance" />
<condition type="Reenter" />
</conditions>
<reenter apply="ON_FINISH">
<reset day="MONDAY" hour="6" minute="30" />
<reset day="TUESDAY" hour="6" minute="30" />
<reset day="WEDNESDAY" hour="6" minute="30" />
<reset day="THURSDAY" hour="6" minute="30" />
<reset day="FRIDAY" hour="6" minute="30" />
<reset day="SATURDAY" hour="6" minute="30" />
<reset day="SUNDAY" hour="6" minute="30" />
</reenter>
<spawnlist>
<group>
<npc id="18020" x="-21809" y="182106" z="-5712" heading="50142" /> <!-- Queen Ant -->
<npc id="18023" x="-22298" y="182451" z="-5725" heading="50119" /> <!-- Escort Ant -->
<npc id="18024" x="-21723" y="182723" z="-5725" heading="6711" /> <!-- Royal Guard Ant -->
<npc id="18023" x="-21476" y="182756" z="-5725" heading="1241" /> <!-- Escort Ant -->
<npc id="18024" x="-21116" y="182559" z="-5725" heading="57277" /> <!-- Royal Guard Ant -->
<npc id="18023" x="-20956" y="182249" z="-5722" heading="37557" /> <!-- Escort Ant -->
<npc id="18024" x="-21108" y="181947" z="-5723" heading="48268" /> <!-- Royal Guard Ant -->
<npc id="18023" x="-21710" y="183339" z="-5724" heading="12298" /> <!-- Escort Ant -->
<npc id="18024" x="-21335" y="183302" z="-5722" heading="59140" /> <!-- Royal Guard Ant -->
<npc id="18023" x="-21388" y="182696" z="-5725" heading="39026" /> <!-- Escort Ant -->
</group>
</spawnlist>
</instance>

View File

@ -0,0 +1,7 @@
<html><body>Event Manager Antri:<br>
The Queen Ant lives in the <font color="LEVEL">Ant Nest</font>. If you want to kill her, you should go there.<br>
However, the Ant Nest is a very dangerous place. If I send there everybody, many will die in vain. So only those who meet certain requirements can go.<br>
First of all, you have to be <font color="LEVEL">Lv. 65 or higher</font> to go to the Ant Nest. Secondly, you must find yourself a <font color="LEVEL">command channel</font> with <font color="LEVEL">50-200 members</font>.<br>
If you manage to defeat the Queen Ant, you will be rewarded.<br>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest DefeatTheQueen 34184.htm">Back</Button>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>Event Manager Antri:<br>
Hello! My name is Antri.<br>
The king has commanded the Order of Knights, to which I belong, to defeat the Queen Ant.<br>
Something weird has been going on near the Ant Nest. Unfortunately, our order is not strong enough to cope with this problem. That's why I am assigned to find brave heroes who will not be afraid to go to the Ant Nest and kill the Queen Ant.<br>
As you cannot defeat this monster alone, you should prepare well and gather your allies.<br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest DefeatTheQueen TeleportToAntNest">Teleport to the Ant Nest</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DefeatTheQueen 34184-1.htm">Ask about the Ant Nest</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Ant Nest Researcher Jio:<br>
Welcome. My name is Jio. I am teleporting adventurers to the Ant Nest.<br>
Only level 65 and higher!
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>Ant Nest Researcher Jio:<br>
So, the Queen Ant is dead, Perfect!<br>
I must say I've never doubted your capability to deal with troubles, because at the very moment I saw you and your friends I understood that all of you were very experienced warriors.<br>
Our order has prepared a special buff for those who have defeated the Queen Ant. I hope you like the gift.<br>
Also I can teleport you anywhere, just say a word!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DefeatTheQueen GiveAntProphecy">Get the buff</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest DefeatTheQueen ExitInstance">Go outside</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Ant Nest Researcher Jio:<br>
Welcome. My name is Jio. I am teleporting adventurers to the Ant Nest.<br>
Do you wish to go there?<br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest QueenAntLair ENTER">Teleport to the Ant Nest</Button>
</body></html>

View File

@ -0,0 +1,112 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package events.DefeatTheQueen;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.quest.LongTimeEvent;
import org.l2jmobius.gameserver.model.skills.SkillCaster;
/**
* @author Mobius
*/
public class DefeatTheQueen extends LongTimeEvent
{
// NPCs
private static final int ANTRI = 34184;
private static final int JIO = 34185;
// Skill
private static final SkillHolder ANT_PROPHECY = new SkillHolder(48200, 1);
// Teleport
private static final Location ANT_NEST = new Location(-9997, 175533, -4152);
// Misc
private static final int MIN_LEVEL = 65;
private DefeatTheQueen()
{
addStartNpc(ANTRI, JIO);
addFirstTalkId(ANTRI, JIO);
addTalkId(ANTRI, JIO);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
if (!isEventPeriod())
{
return null;
}
switch (event)
{
case "34184.htm":
case "34184-1.htm":
{
return event;
}
case "TeleportToAntNest":
{
if ((npc != null) && (npc.getId() == ANTRI))
{
player.teleToLocation(ANT_NEST);
}
break;
}
case "ExitInstance":
{
if ((npc != null) && (npc.getId() == JIO) && npc.isInInstance())
{
npc.getInstanceWorld().ejectPlayer(player);
}
break;
}
case "GiveAntProphecy":
{
if ((npc != null) && (npc.getId() == JIO) && npc.isInInstance())
{
SkillCaster.triggerCast(npc, player, ANT_PROPHECY.getSkill());
}
break;
}
}
return null;
}
@Override
public String onFirstTalk(Npc npc, PlayerInstance player)
{
if (npc.getId() == JIO)
{
if (npc.isInInstance())
{
return "34185-2.htm";
}
if (player.getLevel() < MIN_LEVEL)
{
return "34185-1.htm";
}
}
return npc.getId() + ".htm";
}
public static void main(String[] args)
{
new DefeatTheQueen();
}
}

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<event name="DefeatTheQueen" active="22 09 2021-13 10 2021" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/eventConfig.xsd">
<spawnlist>
<add npc="34184" x="83332" y="149161" z="-3384" heading="49151" /> <!-- Antri Giran -->
<add npc="34184" x="147783" y="25627" z="-1996" heading="28180" /> <!-- Antri Aden Acord -->
<add npc="34184" x="-14789" y="123676" z="-3121" heading="7037" /> <!-- Antri Gludio -->
<add npc="34185" x="-9913" y="175356" z="-4154" heading="21798" /> <!-- Jio Ant Nest -->
</spawnlist>
<messages>
<add type="onEnd" text="Defeat the Queen: Event end!" />
<add type="onEnter" text="Defeat the Queen: Event ongoing!" />
</messages>
</event>

View File

@ -0,0 +1,303 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.QueenAntLair;
import java.util.List;
import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.SkillCaster;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import instances.AbstractInstance;
/**
* @author Serenitty
* @URL https://l2central.info/essence/events_and_promos/832.html
*/
public class QueenAntLair extends AbstractInstance
{
// NPCs
private static final int QUEEN = 18020;
private static final int ESCORT = 18023;
private static final int NURSE = 18022;
private static final int JIO = 34185;
// Skills
private static final SkillHolder RAIN_OF_STONES_LV_1 = new SkillHolder(48254, 1); // When player in Radius target boss attack.
private static final SkillHolder HEAL = new SkillHolder(4020, 1);
// Misc
private static final int TEMPLATE_ID = 217;
public QueenAntLair()
{
super(TEMPLATE_ID);
addKillId(QUEEN, ESCORT, NURSE);
addAttackId(QUEEN);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
switch (event)
{
case "ENTER":
{
if (player.isInParty())
{
final Party party = player.getParty();
final boolean isInCC = party.isInCommandChannel();
final List<PlayerInstance> members = (isInCC) ? party.getCommandChannel().getMembers() : party.getMembers();
for (PlayerInstance member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{
player.sendMessage("Player " + member.getName() + " must go closer to Jio.");
}
enterInstance(member, npc, TEMPLATE_ID);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
player.sendMessage("SYS: You have entered as GM/Admin to Queen Ant's Lair.");
}
else
{
if (!player.isInsideRadius3D(npc, 1000))
{
player.sendMessage("You must go closer to Jio.");
}
enterInstance(player, npc, TEMPLATE_ID);
}
break;
}
case "SPAWN_MINION":
{
final Instance world = npc.getInstanceWorld();
if (world == null)
{
return null;
}
if (!world.getParameters().getBoolean("spawnedMinions", false))
{
world.getParameters().set("spawnedMinions", true);
final int stage = world.getParameters().getInt("stage", 0);
world.getParameters().set("stage", stage + 1); // +1= -10% BOSS HP
addSpawn(ESCORT, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId());
addSpawn(ESCORT, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId());
addSpawn(ESCORT, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId());
world.setParameter("minion1", addSpawn(NURSE, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId()));
world.setParameter("minion2", addSpawn(NURSE, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId()));
world.setParameter("minion3", addSpawn(NURSE, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId()));
world.setParameter("minion4", addSpawn(NURSE, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId()));
world.setParameter("minion5", addSpawn(NURSE, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId()));
world.setParameter("minion6", addSpawn(NURSE, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId()));
startQuestTimer("SUPPORT_QUEEN", 5000, npc, null);
}
break;
}
case "SUPPORT_QUEEN":
{
final Instance world = npc.getInstanceWorld();
if (world == null)
{
return null;
}
final Npc nurse1 = world.getParameters().getObject("minion1", Npc.class);
final Npc nurse2 = world.getParameters().getObject("minion2", Npc.class);
final Npc nurse3 = world.getParameters().getObject("minion3", Npc.class);
final Npc nurse4 = world.getParameters().getObject("minion4", Npc.class);
final Npc nurse5 = world.getParameters().getObject("minion5", Npc.class);
final Npc nurse6 = world.getParameters().getObject("minion6", Npc.class);
if (!nurse1.isDead())
{
nurse1.setTarget(world.getNpc(QUEEN));
nurse1.doCast(HEAL.getSkill());
}
if (!nurse2.isDead())
{
nurse2.setTarget(world.getNpc(QUEEN));
nurse2.doCast(HEAL.getSkill());
}
if (!nurse3.isDead())
{
nurse3.setTarget(world.getNpc(QUEEN));
nurse3.doCast(HEAL.getSkill());
}
if (!nurse4.isDead())
{
nurse4.setTarget(world.getNpc(QUEEN));
nurse4.doCast(HEAL.getSkill());
}
if (!nurse5.isDead())
{
nurse5.setTarget(world.getNpc(QUEEN));
nurse5.doCast(HEAL.getSkill());
}
if (!nurse6.isDead())
{
nurse6.setTarget(world.getNpc(QUEEN));
nurse6.doCast(HEAL.getSkill());
}
startQuestTimer("SUPPORT_QUEEN", 5000, npc, null);
break;
}
case "RAINOF_STONES":
{
if (SkillCaster.checkUseConditions(npc, RAIN_OF_STONES_LV_1.getSkill()))
{
npc.doCast(RAIN_OF_STONES_LV_1.getSkill());
}
break;
}
}
return null;
}
@Override
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon, Skill skill)
{
final Instance world = npc.getInstanceWorld();
if (world == null)
{
return null;
}
if (npc.getId() == QUEEN)
{
if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.90)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.81)))
{
startQuestTimer("RAINOF_STONES", 10000, npc, null);
if (world.getParameters().getInt("stage", 0) == 0)
{
startQuestTimer("SPAWN_MINION", 1000, npc, null);
}
}
else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.80)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.71)))
{
world.getParameters().set("spawnedMinions", false);
startQuestTimer("RAINOF_STONES", 8000, npc, null);
if (world.getParameters().getInt("stage", 0) == 1)
{
startQuestTimer("SPAWN_MINION", 1000, npc, null);
}
}
else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.70)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.61)))
{
world.getParameters().set("spawnedMinions", false);
startQuestTimer("RAINOF_STONES", 8000, npc, null);
if (world.getParameters().getInt("stage", 0) == 2)
{
startQuestTimer("SPAWN_MINION", 1000, npc, null);
}
}
else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.60)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.51)))
{
world.getParameters().set("spawnedMinions", false);
startQuestTimer("RAINOF_STONES", 8000, npc, null);
if (world.getParameters().getInt("stage", 0) == 3)
{
startQuestTimer("SPAWN_MINION", 1000, npc, null);
}
}
else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.50)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.41)))
{
world.getParameters().set("spawnedMinions", false);
startQuestTimer("RAINOF_STONES", 7000, npc, null);
if (world.getParameters().getInt("stage", 0) == 4)
{
startQuestTimer("SPAWN_MINION", 1000, npc, null);
}
}
else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.40)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.31)))
{
world.getParameters().set("spawnedMinions", false);
startQuestTimer("RAINOF_STONES", 6000, npc, null);
if (world.getParameters().getInt("stage", 0) == 5)
{
startQuestTimer("SPAWN_MINION", 1000, npc, null);
}
}
else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.20)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.09)))
{
world.getParameters().set("spawnedMinions", false);
startQuestTimer("RAINOF_STONES", 4000, npc, null);
if (world.getParameters().getInt("stage", 0) == 6)
{
startQuestTimer("RAINOF_STONES", 2000, npc, null);
}
}
}
return super.onAttack(npc, attacker, damage, isSummon, skill);
}
@Override
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (world == null)
{
return null;
}
if (npc.getId() == QUEEN)
{
for (Npc spawn : world.getNpcs())
{
spawn.deleteMe();
}
cancelQuestTimer("SPAWN_MINION", npc, player);
cancelQuestTimer("SUPPORT_QUEEN", npc, player);
addSpawn(JIO, -22130, 182482, -5720, 49151, false, 0, true, player.getInstanceId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_SUCCEEDED_IN_DEFEATING_QUEEN_ANT_NRECEIVE_YOUR_REWARD_FROM_JIO, 2, 9000));
for (PlayerInstance gamer : world.getPlayers())
{
gamer.sendPacket(new ExSendUIEvent(gamer, false, false, 0, 0, NpcStringId.TIME_LEFT));
}
world.finishInstance();
}
return super.onKill(npc, player, isSummon);
}
public static void main(String[] args)
{
new QueenAntLair();
}
}

View File

@ -808,96 +808,262 @@
<height normal="0.1" />
</collision>
</npc>
<npc id="18020" level="80" type="Npc" name="Queen Ant">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<npc id="18020" level="80" type="RaidBoss" name="Queen Ant">
<!-- DEFEAT THE QUEEN EVENT -->
<parameters>
<minions name="Privates">
<npc id="18023" count="2" respawnTime="200" weightPoint="1" />
<npc id="18024" count="2" respawnTime="200" weightPoint="1" />
</minions>
</parameters>
<race>BUG</race>
<sex>FEMALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
<vitals hp="386384" hpRegen="10.5" mp="300" mpRegen="3.6" />
<stats str="60" int="76" dex="73" wit="50" con="60" men="80">
<vitals hp="9000000" hpRegen="85.09694484" mp="15362.3283191629" mpRegen="1.8" />
<attack physical="990.441457140486" magical="600.33579646414" random="30" critical="4.75" accuracy="40" attackSpeed="250" type="FIST" range="40" distance="80" width="120" />
<defence physical="208.284023668639" magical="95.9748607784026" />
<speed>
<walk ground="80" />
<run ground="230" />
</speed>
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
<hitTime>370</hitTime>
<abnormalResist physical="230" magical="230" />
</stats>
<status attackable="false" />
<status attackable="true" undying="false" noSleepMode="true" />
<skillList>
<skill id="4021" level="1" /> <!-- Queen Ant -->
<skill id="4071" level="1" /> <!-- Bow Resistance -->
<skill id="4116" level="2" /> <!-- Magic Damage Resistance -->
<skill id="4416" level="12" /> <!-- Bugs -->
<skill id="4019" level="1" /> <!-- Decrease Speed -->
<skill id="4045" level="1" /> <!-- Resist Full Magic Attack -->
<skill id="4017" level="1" /> <!-- Queen Ant's Blow -->
</skillList>
<corpseTime>300</corpseTime>
<exCrtEffect>true</exCrtEffect>
<ai type="BALANCED" clanHelpRange="500" aggroRange="500">
<clanList>
<clan>QUEEN_ANT</clan>
</clanList>
</ai>
<collision>
<radius normal="45" />
<height normal="53" />
</collision>
</npc>
<dropLists>
<drop>
<item id="94383" min="1" max="1" chance="7.03" /> <!-- Scroll: Enchant Rare Accessories-->
<item id="94385" min="1" max="1" chance="7.11" /> <!-- Improved Scroll: Enchant Rare Accessories -->
<item id="91257" min="1" max="1" chance="2.03" /> <!-- Queen Ant Doll Lv. 2-->
<item id="92421" min="1" max="1" chance="0.03" /> <!-- Queen Ant's Stone Breaker-->
<item id="6328" min="1" max="1" chance="34.03" /> <!-- Sealed Majestic Ring -->
<item id="6326" min="1" max="1" chance="33.11" /> <!-- Sealed Majestic Necklace -->
<item id="6327" min="1" max="1" chance="32.56" /> <!-- Sealed Majestic Earring -->
<item id="5323" min="1" max="1" chance="7.762" /> <!-- Sealed Majestic Leather Armor -->
<item id="5316" min="1" max="1" chance="7.752" /> <!-- Sealed Majestic Plate Armor -->
<item id="5317" min="1" max="1" chance="7.746" /> <!-- Sealed Majestic Circlet -->
<item id="5318" min="1" max="1" chance="7.743" /> <!-- Sealed Majestic Gauntlets -->
<item id="5329" min="1" max="1" chance="7.731" /> <!-- Sealed Majestic Robe -->
<item id="5315" min="1" max="1" chance="7.725" /> <!-- Sealed Shield of Nightmare -->
<item id="5313" min="1" max="1" chance="7.724" /> <!-- Sealed Gauntlets of Nightmare -->
<item id="5311" min="1" max="1" chance="7.722" /> <!-- Sealed Armor of Nightmare -->
<item id="5326" min="1" max="1" chance="7.706" /> <!-- Sealed Robe of Nightmare -->
<item id="5314" min="1" max="1" chance="7.692" /> <!-- Sealed Boots of Nightmare -->
<item id="5312" min="1" max="1" chance="7.661" /> <!-- Sealed Helm of Nightmare -->
<item id="5319" min="1" max="1" chance="7.654" /> <!-- Sealed Majestic Boots -->
<item id="5320" min="1" max="1" chance="7.622" /> <!-- Sealed Leather Armor of Nightmare -->
<item id="6660" min="1" max="1" chance="4.935" /> <!-- Queen Ant's Ring -->
<item id="8686" min="1" max="1" chance="1.268" /> <!-- Themis' Tongue -->
<item id="8685" min="1" max="1" chance="1.258" /> <!-- Sobekk's Hurricane -->
<item id="8684" min="1" max="1" chance="1.254" /> <!-- Shyeed's Bow -->
<item id="8682" min="1" max="1" chance="1.245" /> <!-- Naga's Storm -->
<item id="8678" min="1" max="1" chance="1.222" /> <!-- Sirra's Blade -->
<item id="8679" min="1" max="1" chance="1.217" /> <!-- Sword of Ipos -->
<item id="8687" min="1" max="1" chance="1.214" /> <!-- Cabrio's Hand -->
<item id="8938" min="1" max="1" chance="1.208" /> <!-- Tallum Blade*Damascus -->
<item id="91902" min="1" max="1" chance="1.202" /> <!-- Éclair Bijou -->
<item id="8680" min="1" max="1" chance="1.181" /> <!-- Barakiel's Axe -->
<item id="8683" min="1" max="1" chance="1.159" /> <!-- Tiphon's Spear -->
<item id="8681" min="1" max="1" chance="1.157" /> <!-- Behemoth' Tuning Fork -->
<item id="91887" min="1" max="1" chance="1.149" /> <!-- Durendal -->
<item id="8688" min="1" max="1" chance="1.149" /> <!-- Daimon Crystal -->
<item id="93910" min="1" max="1" chance="10.02" /> <!-- Queen Ant's Crystal -->
<item id="92401" min="1" max="1" chance="0.75" /> <!-- Spellbook: White Guardian -->
<item id="91945" min="1" max="1" chance="0.3" /> <!-- Book of Shadows -->
<item id="94137" min="1" max="1" chance="0.3" /> <!-- Spellbook: Devour -->
<item id="91944" min="1" max="1" chance="0.3" /> <!-- Book of Light -->
<item id="93631" min="1" max="1" chance="0.3" /> <!-- Spellbook: Hellfire -->
<item id="93869" min="1" max="1" chance="0.075" /> <!-- Spellbook: Elemental Burst -->
<item id="93870" min="1" max="1" chance="0.03" /> <!-- Spellbook: Ethereal Strike -->
<item id="94325" min="1" max="1" chance="0.03" /> <!-- Spellbook: song of hunter -->
<item id="94324" min="1" max="1" chance="0.03" /> <!-- Spellbook: song of eart -->
<item id="94326" min="1" max="1" chance="0.03" /> <!-- Spellbook: dance of warrior -->
<item id="94327" min="1" max="1" chance="0.03" /> <!-- Spellbook: dance of fire -->
<item id="94500" min="1" max="1" chance="0.03" /> <!-- Spellbook: Titanic Sweep-->
<item id="94501" min="1" max="1" chance="0.03" /> <!-- Spellbook: Titanic Break -->
<item id="94505" min="1" max="1" chance="0.03" /> <!-- Spellbook: Burning Strike -->
<item id="94507" min="1" max="1" chance="0.03" /> <!-- Spellbook: Armor Break -->
<item id="94670" min="1" max="1" chance="0.03" /> <!-- Spellbook: Debuff Master -->
<item id="94674" min="1" max="1" chance="0.03" /> <!-- Spellbook: Blood Bond -->
<item id="95348" min="1" max="1" chance="0.03" /> <!-- Spellbook: Song of Wind -->
<item id="95349" min="1" max="1" chance="0.03" /> <!-- Spellbook: Dance of Fury -->
<item id="95350" min="1" max="1" chance="0.03" /> <!-- Spellbook: Goring Charge -->
<item id="95352" min="1" max="1" chance="0.03" /> <!-- Spellbook: Elemental Changing -->
<item id="95365" min="1" max="1" chance="0.03" /> <!-- Spellbook: Elemental Spirit Lv. 4 -->
</drop>
</dropLists>
</npc>
<npc id="18021" level="80" type="Npc" name="Queen Ant Larva">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<sex>FEMALE</sex>
<race>BUG</race>
<sex>MALE</sex>
<acquire sp="1" />
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
<vitals hp="591" hpRegen="10.5" mp="315" mpRegen="3.6" />
<vitals hp="591" hpRegen="3.5" mp="315" mpRegen="1.5" />
<attack physical="89.21" magical="59.01" random="30" critical="7" accuracy="40" attackSpeed="257" type="FIST" range="40" distance="80" width="120" />
<defence physical="118.72" magical="84.16" />
<speed>
<walk ground="40" />
<run ground="60" />
</speed>
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
<hitTime>350</hitTime>
<abnormalResist physical="10" magical="10" />
</stats>
<status attackable="false" />
<status undying="true" />
<skillList>
<skill id="4416" level="12" /> <!-- Bugs -->
</skillList>
<exCrtEffect>true</exCrtEffect>
<ai clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>QUEEN_ANT</clan>
</clanList>
</ai>
<collision>
<radius normal="12" />
<height normal="8" />
</collision>
</npc>
<npc id="18022" level="80" type="Npc" name="Nurse Ant">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
<vitals hp="4000" hpRegen="10.5" mp="402" mpRegen="3.6" />
<npc id="18022" level="80" type="Monster" name="Nurse Ant">
<!-- DEFEAT THE QUEEN EVENT -->
<race>BUG</race>
<sex>MALE</sex>
<acquire sp="1" />
<stats str="40" int="41" dex="30" wit="20" con="43" men="10">
<vitals hp="408630" hpRegen="108" mp="402" mpRegen="1.8" />
<attack physical="637" magical="395" random="30" critical="7" accuracy="40" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="547" magical="200" />
<speed>
<walk ground="40" />
<run ground="130" />
</speed>
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
<hitTime>260</hitTime>
<abnormalResist physical="10" magical="10" />
</stats>
<status attackable="false" />
<status undying="false" />
<skillList>
<skill id="4045" level="1" /> <!-- Resist Full Magic Attack -->
<skill id="4408" level="1" /> <!-- HP Increase (1x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="20" /> <!-- Average P. Atk. -->
<skill id="4411" level="20" /> <!-- Average M. Atk. -->
<skill id="4412" level="11" /> <!-- Average P. Def. -->
<skill id="4413" level="11" /> <!-- Average M. Def. -->
<skill id="4414" level="2" /> <!-- Standard Type -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
<skill id="4416" level="12" /> <!-- Bugs -->
<skill id="4020" level="1" /> <!-- Recovery -->
</skillList>
<collision>
<radius normal="26" />
<height normal="15" />
</collision>
</npc>
<npc id="18023" level="80" type="Npc" name="Escort Ant">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
<vitals hp="4343" hpRegen="10.5" mp="432" mpRegen="3.6" />
<npc id="18023" level="80" type="Monster" name="Escort Ant">
<!-- DEFEAT THE QUEEN EVENT -->
<parameters>
<param name="MoveAroundSocial" value="120" />
<param name="MoveAroundSocial1" value="120" />
<param name="MoveAroundSocial2" value="120" />
</parameters>
<race>BUG</race>
<sex>MALE</sex>
<acquire sp="1" />
<stats str="40" int="41" dex="30" wit="20" con="43" men="10">
<vitals hp="234871" hpRegen="115" mp="432" mpRegen="1.8" />
<attack physical="178" magical="27" random="30" critical="7" accuracy="40" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="578" magical="211" />
<speed>
<walk ground="40" />
<run ground="230" />
</speed>
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
<hitTime>260</hitTime>
<abnormalResist physical="10" magical="10" />
</stats>
<status attackable="false" />
<status undying="false" noSleepMode="true" />
<skillList>
<skill id="4045" level="1" /> <!-- Resist Full Magic Attack -->
<skill id="4408" level="1" /> <!-- HP Increase (1x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="20" /> <!-- Average P. Atk. -->
<skill id="4411" level="20" /> <!-- Average M. Atk. -->
<skill id="4412" level="11" /> <!-- Average P. Def. -->
<skill id="4413" level="11" /> <!-- Average M. Def. -->
<skill id="4414" level="2" /> <!-- Standard Type -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
<skill id="4416" level="12" /> <!-- Bugs -->
</skillList>
<exCrtEffect>true</exCrtEffect>
<ai aggroRange="450" clanHelpRange="900" isAggressive="true">
<clanList>
<clan>QUEEN_ANT</clan>
</clanList>
</ai>
<collision>
<radius normal="26" />
<height normal="15" />
</collision>
</npc>
<npc id="18024" level="80" type="Npc" name="Royal Guard Ant">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
<vitals hp="7051" hpRegen="10.5" mp="463" mpRegen="3.6" />
<npc id="18024" level="80" type="Monster" name="Royal Guard Ant">
<!-- DEFEAT THE QUEEN EVENT -->
<parameters>
<param name="MoveAroundSocial" value="120" />
<param name="MoveAroundSocial1" value="120" />
<param name="MoveAroundSocial2" value="120" />
</parameters>
<race>BUG</race>
<sex>MALE</sex>
<acquire sp="1" />
<stats str="40" int="41" dex="30" wit="20" con="43" men="10">
<vitals hp="70051" hpRegen="122" mp="463" mpRegen="1.8" />
<attack physical="1190" magical="1074" random="30" critical="7" accuracy="40" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="610" magical="223" />
<speed>
<walk ground="40" />
<run ground="230" />
</speed>
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
<hitTime>260</hitTime>
<abnormalResist physical="10" magical="10" />
</stats>
<status attackable="false" />
<status undying="false" />
<skillList>
<skill id="4045" level="1" /> <!-- Resist Full Magic Attack -->
<skill id="4408" level="1" /> <!-- HP Increase (1x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="20" /> <!-- Average P. Atk. -->
<skill id="4411" level="20" /> <!-- Average M. Atk. -->
<skill id="4412" level="11" /> <!-- Average P. Def. -->
<skill id="4413" level="11" /> <!-- Average M. Def. -->
<skill id="4414" level="2" /> <!-- Standard Type -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
<skill id="4416" level="12" /> <!-- Bugs -->
</skillList>
<exCrtEffect>true</exCrtEffect>
<ai type="BALANCED" clanHelpRange="900" aggroRange="450">
<clanList>
<clan>QUEEN_ANT</clan>
</clanList>
</ai>
<collision>
<radius normal="26" />
<height normal="15" />

View File

@ -1592,7 +1592,7 @@
</collision>
</npc>
<npc id="34184" level="85" type="Npc" name="Antri" title="Event Manager">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<!-- DEFEAT THE QUEEN EVENT -->
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
@ -1611,7 +1611,7 @@
</collision>
</npc>
<npc id="34185" level="85" type="Npc" name="Jio" title="Ant Nest's Researcher">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<!-- DEFEAT THE QUEEN EVENT -->
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">

View File

@ -3,7 +3,57 @@
<skill id="48200" toLevel="1" name="Ant Prophecy">
<!-- PvE damage $s1 All Critical Rate $s2 All Critical Damage $s3 Sayha's Grace Consumption $s4 -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<abnormalLevel>1</abnormalLevel>
<abnormalTime>11700</abnormalTime>
<canBeDispelled>false</canBeDispelled>
<castRange>300</castRange>
<effectRange>1500</effectRange>
<hitTime>300</hitTime>
<isMagic>2</isMagic>
<magicLevel>76</magicLevel>
<operateType>A2</operateType>
<basicProperty>NONE</basicProperty>
<magicCriticalRate>-5</magicCriticalRate>
<reuseDelay>100</reuseDelay>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="CriticalRate">
<amount>50</amount>
<mode>DIFF</mode>
</effect>
<effect name="MagicCriticalRate">
<amount>50</amount>
<mode>DIFF</mode>
</effect>
<effect name="CriticalDamage">
<amount>100</amount>
<mode>DIFF</mode>
</effect>
<effect name="MagicCriticalDamage">
<amount>100</amount>
<mode>DIFF</mode>
</effect>
<effect name="PvePhysicalAttackDamageBonus">
<amount>5</amount>
<type>ENEMY_ALL</type>
<mode>PER</mode>
</effect>
<effect name="PvePhysicalSkillDamageBonus">
<amount>5</amount>
<type>ENEMY_ALL</type>
<mode>PER</mode>
</effect>
<effect name="PveMagicalSkillDamageBonus">
<amount>5</amount>
<type>ENEMY_ALL</type>
<mode>PER</mode>
</effect>
<effect name="VitalityPointsRate">
<amount>-10</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="48201" toLevel="1" name="Raid Boss (Lv. 85)">
<!-- A rift that appeared after an earthquake had weakened Maphr's Seal. It shifted to the material world and brought chaos and pain with it. -->
@ -269,8 +319,20 @@
<!-- Deals $s1 fixed damage. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<isMagic>1</isMagic>
<hitTime>3500</hitTime>
<castRange>1800</castRange>
<effectPoint>-300</effectPoint>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
<basicProperty>MAGIC</basicProperty>
<effects>
<effect name="MagicalAttack">
<power>2000</power>
</effect>
</effects>
</skill>
<skill id="48255" toLevel="1" name="Baium<75>s Thunder Bolt">
<skill id="48255" toLevel="1" name="Baium's Thunder Bolt">
<!-- Deals $s1 fixed damage. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>

View File

@ -41,6 +41,7 @@
<instance id="214" name="Dwelling of Spirits" />
<instance id="215" name="Transcendent Instance Zone" />
<instance id="216" name="Zaken's Headquarters" />
<instance id="217" name="Queen Ant's Lair" />
<instance id="218" name="Orfen's Lair" />
<instance id="219" name="Cruma's Central Control Room" />
<instance id="220" name="Baium's Lair" />

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<instance id="217" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
<time duration="60" empty="0" />
<locations>
<enter type="FIXED">
<location x="-21844" y="183637" z="-5712" />
</enter>
<exit type="ORIGIN" />
</locations>
<conditions>
<condition type="Party" />
<condition type="CommandChannel" />
<condition type="CommandChannelLeader" />
<condition type="GroupMin">
<param name="limit" value="1" /> <!-- 1 for tester only, change on live server -->
</condition>
<condition type="GroupMax">
<param name="limit" value="100" />
</condition>
<condition type="Level">
<param name="min" value="65" />
<param name="max" value="99" />
</condition>
<condition type="Distance" />
<condition type="Reenter" />
</conditions>
<reenter apply="ON_FINISH">
<reset day="MONDAY" hour="6" minute="30" />
<reset day="TUESDAY" hour="6" minute="30" />
<reset day="WEDNESDAY" hour="6" minute="30" />
<reset day="THURSDAY" hour="6" minute="30" />
<reset day="FRIDAY" hour="6" minute="30" />
<reset day="SATURDAY" hour="6" minute="30" />
<reset day="SUNDAY" hour="6" minute="30" />
</reenter>
<spawnlist>
<group>
<npc id="18020" x="-21809" y="182106" z="-5712" heading="50142" /> <!-- Queen Ant -->
<npc id="18023" x="-22298" y="182451" z="-5725" heading="50119" /> <!-- Escort Ant -->
<npc id="18024" x="-21723" y="182723" z="-5725" heading="6711" /> <!-- Royal Guard Ant -->
<npc id="18023" x="-21476" y="182756" z="-5725" heading="1241" /> <!-- Escort Ant -->
<npc id="18024" x="-21116" y="182559" z="-5725" heading="57277" /> <!-- Royal Guard Ant -->
<npc id="18023" x="-20956" y="182249" z="-5722" heading="37557" /> <!-- Escort Ant -->
<npc id="18024" x="-21108" y="181947" z="-5723" heading="48268" /> <!-- Royal Guard Ant -->
<npc id="18023" x="-21710" y="183339" z="-5724" heading="12298" /> <!-- Escort Ant -->
<npc id="18024" x="-21335" y="183302" z="-5722" heading="59140" /> <!-- Royal Guard Ant -->
<npc id="18023" x="-21388" y="182696" z="-5725" heading="39026" /> <!-- Escort Ant -->
</group>
</spawnlist>
</instance>

View File

@ -0,0 +1,7 @@
<html><body>Event Manager Antri:<br>
The Queen Ant lives in the <font color="LEVEL">Ant Nest</font>. If you want to kill her, you should go there.<br>
However, the Ant Nest is a very dangerous place. If I send there everybody, many will die in vain. So only those who meet certain requirements can go.<br>
First of all, you have to be <font color="LEVEL">Lv. 65 or higher</font> to go to the Ant Nest. Secondly, you must find yourself a <font color="LEVEL">command channel</font> with <font color="LEVEL">50-200 members</font>.<br>
If you manage to defeat the Queen Ant, you will be rewarded.<br>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest DefeatTheQueen 34184.htm">Back</Button>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>Event Manager Antri:<br>
Hello! My name is Antri.<br>
The king has commanded the Order of Knights, to which I belong, to defeat the Queen Ant.<br>
Something weird has been going on near the Ant Nest. Unfortunately, our order is not strong enough to cope with this problem. That's why I am assigned to find brave heroes who will not be afraid to go to the Ant Nest and kill the Queen Ant.<br>
As you cannot defeat this monster alone, you should prepare well and gather your allies.<br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest DefeatTheQueen TeleportToAntNest">Teleport to the Ant Nest</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DefeatTheQueen 34184-1.htm">Ask about the Ant Nest</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Ant Nest Researcher Jio:<br>
Welcome. My name is Jio. I am teleporting adventurers to the Ant Nest.<br>
Only level 65 and higher!
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>Ant Nest Researcher Jio:<br>
So, the Queen Ant is dead, Perfect!<br>
I must say I've never doubted your capability to deal with troubles, because at the very moment I saw you and your friends I understood that all of you were very experienced warriors.<br>
Our order has prepared a special buff for those who have defeated the Queen Ant. I hope you like the gift.<br>
Also I can teleport you anywhere, just say a word!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DefeatTheQueen GiveAntProphecy">Get the buff</Button>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest DefeatTheQueen ExitInstance">Go outside</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Ant Nest Researcher Jio:<br>
Welcome. My name is Jio. I am teleporting adventurers to the Ant Nest.<br>
Do you wish to go there?<br>
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest QueenAntLair ENTER">Teleport to the Ant Nest</Button>
</body></html>

View File

@ -0,0 +1,112 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package events.DefeatTheQueen;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.quest.LongTimeEvent;
import org.l2jmobius.gameserver.model.skills.SkillCaster;
/**
* @author Mobius
*/
public class DefeatTheQueen extends LongTimeEvent
{
// NPCs
private static final int ANTRI = 34184;
private static final int JIO = 34185;
// Skill
private static final SkillHolder ANT_PROPHECY = new SkillHolder(48200, 1);
// Teleport
private static final Location ANT_NEST = new Location(-9997, 175533, -4152);
// Misc
private static final int MIN_LEVEL = 65;
private DefeatTheQueen()
{
addStartNpc(ANTRI, JIO);
addFirstTalkId(ANTRI, JIO);
addTalkId(ANTRI, JIO);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
if (!isEventPeriod())
{
return null;
}
switch (event)
{
case "34184.htm":
case "34184-1.htm":
{
return event;
}
case "TeleportToAntNest":
{
if ((npc != null) && (npc.getId() == ANTRI))
{
player.teleToLocation(ANT_NEST);
}
break;
}
case "ExitInstance":
{
if ((npc != null) && (npc.getId() == JIO) && npc.isInInstance())
{
npc.getInstanceWorld().ejectPlayer(player);
}
break;
}
case "GiveAntProphecy":
{
if ((npc != null) && (npc.getId() == JIO) && npc.isInInstance())
{
SkillCaster.triggerCast(npc, player, ANT_PROPHECY.getSkill());
}
break;
}
}
return null;
}
@Override
public String onFirstTalk(Npc npc, PlayerInstance player)
{
if (npc.getId() == JIO)
{
if (npc.isInInstance())
{
return "34185-2.htm";
}
if (player.getLevel() < MIN_LEVEL)
{
return "34185-1.htm";
}
}
return npc.getId() + ".htm";
}
public static void main(String[] args)
{
new DefeatTheQueen();
}
}

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<event name="DefeatTheQueen" active="22 09 2021-13 10 2021" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/eventConfig.xsd">
<spawnlist>
<add npc="34184" x="83332" y="149161" z="-3384" heading="49151" /> <!-- Antri Giran -->
<add npc="34184" x="147783" y="25627" z="-1996" heading="28180" /> <!-- Antri Aden Acord -->
<add npc="34184" x="-14789" y="123676" z="-3121" heading="7037" /> <!-- Antri Gludio -->
<add npc="34185" x="-9913" y="175356" z="-4154" heading="21798" /> <!-- Jio Ant Nest -->
</spawnlist>
<messages>
<add type="onEnd" text="Defeat the Queen: Event end!" />
<add type="onEnter" text="Defeat the Queen: Event ongoing!" />
</messages>
</event>

View File

@ -0,0 +1,303 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.QueenAntLair;
import java.util.List;
import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.SkillCaster;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import instances.AbstractInstance;
/**
* @author Serenitty
* @URL https://l2central.info/essence/events_and_promos/832.html
*/
public class QueenAntLair extends AbstractInstance
{
// NPCs
private static final int QUEEN = 18020;
private static final int ESCORT = 18023;
private static final int NURSE = 18022;
private static final int JIO = 34185;
// Skills
private static final SkillHolder RAIN_OF_STONES_LV_1 = new SkillHolder(48254, 1); // When player in Radius target boss attack.
private static final SkillHolder HEAL = new SkillHolder(4020, 1);
// Misc
private static final int TEMPLATE_ID = 217;
public QueenAntLair()
{
super(TEMPLATE_ID);
addKillId(QUEEN, ESCORT, NURSE);
addAttackId(QUEEN);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
switch (event)
{
case "ENTER":
{
if (player.isInParty())
{
final Party party = player.getParty();
final boolean isInCC = party.isInCommandChannel();
final List<PlayerInstance> members = (isInCC) ? party.getCommandChannel().getMembers() : party.getMembers();
for (PlayerInstance member : members)
{
if (!member.isInsideRadius3D(npc, 1000))
{
player.sendMessage("Player " + member.getName() + " must go closer to Jio.");
}
enterInstance(member, npc, TEMPLATE_ID);
}
}
else if (player.isGM())
{
enterInstance(player, npc, TEMPLATE_ID);
player.sendMessage("SYS: You have entered as GM/Admin to Queen Ant's Lair.");
}
else
{
if (!player.isInsideRadius3D(npc, 1000))
{
player.sendMessage("You must go closer to Jio.");
}
enterInstance(player, npc, TEMPLATE_ID);
}
break;
}
case "SPAWN_MINION":
{
final Instance world = npc.getInstanceWorld();
if (world == null)
{
return null;
}
if (!world.getParameters().getBoolean("spawnedMinions", false))
{
world.getParameters().set("spawnedMinions", true);
final int stage = world.getParameters().getInt("stage", 0);
world.getParameters().set("stage", stage + 1); // +1= -10% BOSS HP
addSpawn(ESCORT, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId());
addSpawn(ESCORT, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId());
addSpawn(ESCORT, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId());
world.setParameter("minion1", addSpawn(NURSE, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId()));
world.setParameter("minion2", addSpawn(NURSE, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId()));
world.setParameter("minion3", addSpawn(NURSE, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId()));
world.setParameter("minion4", addSpawn(NURSE, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId()));
world.setParameter("minion5", addSpawn(NURSE, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId()));
world.setParameter("minion6", addSpawn(NURSE, world.getNpc(QUEEN).getX() + getRandom(-400, 350), world.getNpc(QUEEN).getY() + getRandom(-400, 350), world.getNpc(QUEEN).getZ(), 31011, true, 0, true, npc.getInstanceId()));
startQuestTimer("SUPPORT_QUEEN", 5000, npc, null);
}
break;
}
case "SUPPORT_QUEEN":
{
final Instance world = npc.getInstanceWorld();
if (world == null)
{
return null;
}
final Npc nurse1 = world.getParameters().getObject("minion1", Npc.class);
final Npc nurse2 = world.getParameters().getObject("minion2", Npc.class);
final Npc nurse3 = world.getParameters().getObject("minion3", Npc.class);
final Npc nurse4 = world.getParameters().getObject("minion4", Npc.class);
final Npc nurse5 = world.getParameters().getObject("minion5", Npc.class);
final Npc nurse6 = world.getParameters().getObject("minion6", Npc.class);
if (!nurse1.isDead())
{
nurse1.setTarget(world.getNpc(QUEEN));
nurse1.doCast(HEAL.getSkill());
}
if (!nurse2.isDead())
{
nurse2.setTarget(world.getNpc(QUEEN));
nurse2.doCast(HEAL.getSkill());
}
if (!nurse3.isDead())
{
nurse3.setTarget(world.getNpc(QUEEN));
nurse3.doCast(HEAL.getSkill());
}
if (!nurse4.isDead())
{
nurse4.setTarget(world.getNpc(QUEEN));
nurse4.doCast(HEAL.getSkill());
}
if (!nurse5.isDead())
{
nurse5.setTarget(world.getNpc(QUEEN));
nurse5.doCast(HEAL.getSkill());
}
if (!nurse6.isDead())
{
nurse6.setTarget(world.getNpc(QUEEN));
nurse6.doCast(HEAL.getSkill());
}
startQuestTimer("SUPPORT_QUEEN", 5000, npc, null);
break;
}
case "RAINOF_STONES":
{
if (SkillCaster.checkUseConditions(npc, RAIN_OF_STONES_LV_1.getSkill()))
{
npc.doCast(RAIN_OF_STONES_LV_1.getSkill());
}
break;
}
}
return null;
}
@Override
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon, Skill skill)
{
final Instance world = npc.getInstanceWorld();
if (world == null)
{
return null;
}
if (npc.getId() == QUEEN)
{
if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.90)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.81)))
{
startQuestTimer("RAINOF_STONES", 10000, npc, null);
if (world.getParameters().getInt("stage", 0) == 0)
{
startQuestTimer("SPAWN_MINION", 1000, npc, null);
}
}
else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.80)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.71)))
{
world.getParameters().set("spawnedMinions", false);
startQuestTimer("RAINOF_STONES", 8000, npc, null);
if (world.getParameters().getInt("stage", 0) == 1)
{
startQuestTimer("SPAWN_MINION", 1000, npc, null);
}
}
else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.70)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.61)))
{
world.getParameters().set("spawnedMinions", false);
startQuestTimer("RAINOF_STONES", 8000, npc, null);
if (world.getParameters().getInt("stage", 0) == 2)
{
startQuestTimer("SPAWN_MINION", 1000, npc, null);
}
}
else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.60)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.51)))
{
world.getParameters().set("spawnedMinions", false);
startQuestTimer("RAINOF_STONES", 8000, npc, null);
if (world.getParameters().getInt("stage", 0) == 3)
{
startQuestTimer("SPAWN_MINION", 1000, npc, null);
}
}
else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.50)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.41)))
{
world.getParameters().set("spawnedMinions", false);
startQuestTimer("RAINOF_STONES", 7000, npc, null);
if (world.getParameters().getInt("stage", 0) == 4)
{
startQuestTimer("SPAWN_MINION", 1000, npc, null);
}
}
else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.40)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.31)))
{
world.getParameters().set("spawnedMinions", false);
startQuestTimer("RAINOF_STONES", 6000, npc, null);
if (world.getParameters().getInt("stage", 0) == 5)
{
startQuestTimer("SPAWN_MINION", 1000, npc, null);
}
}
else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.20)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.09)))
{
world.getParameters().set("spawnedMinions", false);
startQuestTimer("RAINOF_STONES", 4000, npc, null);
if (world.getParameters().getInt("stage", 0) == 6)
{
startQuestTimer("RAINOF_STONES", 2000, npc, null);
}
}
}
return super.onAttack(npc, attacker, damage, isSummon, skill);
}
@Override
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (world == null)
{
return null;
}
if (npc.getId() == QUEEN)
{
for (Npc spawn : world.getNpcs())
{
spawn.deleteMe();
}
cancelQuestTimer("SPAWN_MINION", npc, player);
cancelQuestTimer("SUPPORT_QUEEN", npc, player);
addSpawn(JIO, -22130, 182482, -5720, 49151, false, 0, true, player.getInstanceId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.YOU_HAVE_SUCCEEDED_IN_DEFEATING_QUEEN_ANT_NRECEIVE_YOUR_REWARD_FROM_JIO, 2, 9000));
for (PlayerInstance gamer : world.getPlayers())
{
gamer.sendPacket(new ExSendUIEvent(gamer, false, false, 0, 0, NpcStringId.TIME_LEFT));
}
world.finishInstance();
}
return super.onKill(npc, player, isSummon);
}
public static void main(String[] args)
{
new QueenAntLair();
}
}

View File

@ -808,96 +808,262 @@
<height normal="0.1" />
</collision>
</npc>
<npc id="18020" level="80" type="Npc" name="Queen Ant">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<npc id="18020" level="80" type="RaidBoss" name="Queen Ant">
<!-- DEFEAT THE QUEEN EVENT -->
<parameters>
<minions name="Privates">
<npc id="18023" count="2" respawnTime="200" weightPoint="1" />
<npc id="18024" count="2" respawnTime="200" weightPoint="1" />
</minions>
</parameters>
<race>BUG</race>
<sex>FEMALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
<vitals hp="386384" hpRegen="10.5" mp="300" mpRegen="3.6" />
<stats str="60" int="76" dex="73" wit="50" con="60" men="80">
<vitals hp="9000000" hpRegen="85.09694484" mp="15362.3283191629" mpRegen="1.8" />
<attack physical="990.441457140486" magical="600.33579646414" random="30" critical="4.75" accuracy="40" attackSpeed="250" type="FIST" range="40" distance="80" width="120" />
<defence physical="208.284023668639" magical="95.9748607784026" />
<speed>
<walk ground="80" />
<run ground="230" />
</speed>
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
<hitTime>370</hitTime>
<abnormalResist physical="230" magical="230" />
</stats>
<status attackable="false" />
<status attackable="true" undying="false" noSleepMode="true" />
<skillList>
<skill id="4021" level="1" /> <!-- Queen Ant -->
<skill id="4071" level="1" /> <!-- Bow Resistance -->
<skill id="4116" level="2" /> <!-- Magic Damage Resistance -->
<skill id="4416" level="12" /> <!-- Bugs -->
<skill id="4019" level="1" /> <!-- Decrease Speed -->
<skill id="4045" level="1" /> <!-- Resist Full Magic Attack -->
<skill id="4017" level="1" /> <!-- Queen Ant's Blow -->
</skillList>
<corpseTime>300</corpseTime>
<exCrtEffect>true</exCrtEffect>
<ai type="BALANCED" clanHelpRange="500" aggroRange="500">
<clanList>
<clan>QUEEN_ANT</clan>
</clanList>
</ai>
<collision>
<radius normal="45" />
<height normal="53" />
</collision>
</npc>
<dropLists>
<drop>
<item id="94383" min="1" max="1" chance="7.03" /> <!-- Scroll: Enchant Rare Accessories-->
<item id="94385" min="1" max="1" chance="7.11" /> <!-- Improved Scroll: Enchant Rare Accessories -->
<item id="91257" min="1" max="1" chance="2.03" /> <!-- Queen Ant Doll Lv. 2-->
<item id="92421" min="1" max="1" chance="0.03" /> <!-- Queen Ant's Stone Breaker-->
<item id="6328" min="1" max="1" chance="34.03" /> <!-- Sealed Majestic Ring -->
<item id="6326" min="1" max="1" chance="33.11" /> <!-- Sealed Majestic Necklace -->
<item id="6327" min="1" max="1" chance="32.56" /> <!-- Sealed Majestic Earring -->
<item id="5323" min="1" max="1" chance="7.762" /> <!-- Sealed Majestic Leather Armor -->
<item id="5316" min="1" max="1" chance="7.752" /> <!-- Sealed Majestic Plate Armor -->
<item id="5317" min="1" max="1" chance="7.746" /> <!-- Sealed Majestic Circlet -->
<item id="5318" min="1" max="1" chance="7.743" /> <!-- Sealed Majestic Gauntlets -->
<item id="5329" min="1" max="1" chance="7.731" /> <!-- Sealed Majestic Robe -->
<item id="5315" min="1" max="1" chance="7.725" /> <!-- Sealed Shield of Nightmare -->
<item id="5313" min="1" max="1" chance="7.724" /> <!-- Sealed Gauntlets of Nightmare -->
<item id="5311" min="1" max="1" chance="7.722" /> <!-- Sealed Armor of Nightmare -->
<item id="5326" min="1" max="1" chance="7.706" /> <!-- Sealed Robe of Nightmare -->
<item id="5314" min="1" max="1" chance="7.692" /> <!-- Sealed Boots of Nightmare -->
<item id="5312" min="1" max="1" chance="7.661" /> <!-- Sealed Helm of Nightmare -->
<item id="5319" min="1" max="1" chance="7.654" /> <!-- Sealed Majestic Boots -->
<item id="5320" min="1" max="1" chance="7.622" /> <!-- Sealed Leather Armor of Nightmare -->
<item id="6660" min="1" max="1" chance="4.935" /> <!-- Queen Ant's Ring -->
<item id="8686" min="1" max="1" chance="1.268" /> <!-- Themis' Tongue -->
<item id="8685" min="1" max="1" chance="1.258" /> <!-- Sobekk's Hurricane -->
<item id="8684" min="1" max="1" chance="1.254" /> <!-- Shyeed's Bow -->
<item id="8682" min="1" max="1" chance="1.245" /> <!-- Naga's Storm -->
<item id="8678" min="1" max="1" chance="1.222" /> <!-- Sirra's Blade -->
<item id="8679" min="1" max="1" chance="1.217" /> <!-- Sword of Ipos -->
<item id="8687" min="1" max="1" chance="1.214" /> <!-- Cabrio's Hand -->
<item id="8938" min="1" max="1" chance="1.208" /> <!-- Tallum Blade*Damascus -->
<item id="91902" min="1" max="1" chance="1.202" /> <!-- Γ‰clair Bijou -->
<item id="8680" min="1" max="1" chance="1.181" /> <!-- Barakiel's Axe -->
<item id="8683" min="1" max="1" chance="1.159" /> <!-- Tiphon's Spear -->
<item id="8681" min="1" max="1" chance="1.157" /> <!-- Behemoth' Tuning Fork -->
<item id="91887" min="1" max="1" chance="1.149" /> <!-- Durendal -->
<item id="8688" min="1" max="1" chance="1.149" /> <!-- Daimon Crystal -->
<item id="93910" min="1" max="1" chance="10.02" /> <!-- Queen Ant's Crystal -->
<item id="92401" min="1" max="1" chance="0.75" /> <!-- Spellbook: White Guardian -->
<item id="91945" min="1" max="1" chance="0.3" /> <!-- Book of Shadows -->
<item id="94137" min="1" max="1" chance="0.3" /> <!-- Spellbook: Devour -->
<item id="91944" min="1" max="1" chance="0.3" /> <!-- Book of Light -->
<item id="93631" min="1" max="1" chance="0.3" /> <!-- Spellbook: Hellfire -->
<item id="93869" min="1" max="1" chance="0.075" /> <!-- Spellbook: Elemental Burst -->
<item id="93870" min="1" max="1" chance="0.03" /> <!-- Spellbook: Ethereal Strike -->
<item id="94325" min="1" max="1" chance="0.03" /> <!-- Spellbook: song of hunter -->
<item id="94324" min="1" max="1" chance="0.03" /> <!-- Spellbook: song of eart -->
<item id="94326" min="1" max="1" chance="0.03" /> <!-- Spellbook: dance of warrior -->
<item id="94327" min="1" max="1" chance="0.03" /> <!-- Spellbook: dance of fire -->
<item id="94500" min="1" max="1" chance="0.03" /> <!-- Spellbook: Titanic Sweep-->
<item id="94501" min="1" max="1" chance="0.03" /> <!-- Spellbook: Titanic Break -->
<item id="94505" min="1" max="1" chance="0.03" /> <!-- Spellbook: Burning Strike -->
<item id="94507" min="1" max="1" chance="0.03" /> <!-- Spellbook: Armor Break -->
<item id="94670" min="1" max="1" chance="0.03" /> <!-- Spellbook: Debuff Master -->
<item id="94674" min="1" max="1" chance="0.03" /> <!-- Spellbook: Blood Bond -->
<item id="95348" min="1" max="1" chance="0.03" /> <!-- Spellbook: Song of Wind -->
<item id="95349" min="1" max="1" chance="0.03" /> <!-- Spellbook: Dance of Fury -->
<item id="95350" min="1" max="1" chance="0.03" /> <!-- Spellbook: Goring Charge -->
<item id="95352" min="1" max="1" chance="0.03" /> <!-- Spellbook: Elemental Changing -->
<item id="95365" min="1" max="1" chance="0.03" /> <!-- Spellbook: Elemental Spirit Lv. 4 -->
</drop>
</dropLists>
</npc>
<npc id="18021" level="80" type="Npc" name="Queen Ant Larva">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<sex>FEMALE</sex>
<race>BUG</race>
<sex>MALE</sex>
<acquire sp="1" />
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
<vitals hp="591" hpRegen="10.5" mp="315" mpRegen="3.6" />
<vitals hp="591" hpRegen="3.5" mp="315" mpRegen="1.5" />
<attack physical="89.21" magical="59.01" random="30" critical="7" accuracy="40" attackSpeed="257" type="FIST" range="40" distance="80" width="120" />
<defence physical="118.72" magical="84.16" />
<speed>
<walk ground="40" />
<run ground="60" />
</speed>
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
<hitTime>350</hitTime>
<abnormalResist physical="10" magical="10" />
</stats>
<status attackable="false" />
<status undying="true" />
<skillList>
<skill id="4416" level="12" /> <!-- Bugs -->
</skillList>
<exCrtEffect>true</exCrtEffect>
<ai clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>QUEEN_ANT</clan>
</clanList>
</ai>
<collision>
<radius normal="12" />
<height normal="8" />
</collision>
</npc>
<npc id="18022" level="80" type="Npc" name="Nurse Ant">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
<vitals hp="4000" hpRegen="10.5" mp="402" mpRegen="3.6" />
<npc id="18022" level="80" type="Monster" name="Nurse Ant">
<!-- DEFEAT THE QUEEN EVENT -->
<race>BUG</race>
<sex>MALE</sex>
<acquire sp="1" />
<stats str="40" int="41" dex="30" wit="20" con="43" men="10">
<vitals hp="408630" hpRegen="108" mp="402" mpRegen="1.8" />
<attack physical="637" magical="395" random="30" critical="7" accuracy="40" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="547" magical="200" />
<speed>
<walk ground="40" />
<run ground="130" />
</speed>
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
<hitTime>260</hitTime>
<abnormalResist physical="10" magical="10" />
</stats>
<status attackable="false" />
<status undying="false" />
<skillList>
<skill id="4045" level="1" /> <!-- Resist Full Magic Attack -->
<skill id="4408" level="1" /> <!-- HP Increase (1x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="20" /> <!-- Average P. Atk. -->
<skill id="4411" level="20" /> <!-- Average M. Atk. -->
<skill id="4412" level="11" /> <!-- Average P. Def. -->
<skill id="4413" level="11" /> <!-- Average M. Def. -->
<skill id="4414" level="2" /> <!-- Standard Type -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
<skill id="4416" level="12" /> <!-- Bugs -->
<skill id="4020" level="1" /> <!-- Recovery -->
</skillList>
<collision>
<radius normal="26" />
<height normal="15" />
</collision>
</npc>
<npc id="18023" level="80" type="Npc" name="Escort Ant">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
<vitals hp="4343" hpRegen="10.5" mp="432" mpRegen="3.6" />
<npc id="18023" level="80" type="Monster" name="Escort Ant">
<!-- DEFEAT THE QUEEN EVENT -->
<parameters>
<param name="MoveAroundSocial" value="120" />
<param name="MoveAroundSocial1" value="120" />
<param name="MoveAroundSocial2" value="120" />
</parameters>
<race>BUG</race>
<sex>MALE</sex>
<acquire sp="1" />
<stats str="40" int="41" dex="30" wit="20" con="43" men="10">
<vitals hp="234871" hpRegen="115" mp="432" mpRegen="1.8" />
<attack physical="178" magical="27" random="30" critical="7" accuracy="40" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="578" magical="211" />
<speed>
<walk ground="40" />
<run ground="230" />
</speed>
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
<hitTime>260</hitTime>
<abnormalResist physical="10" magical="10" />
</stats>
<status attackable="false" />
<status undying="false" noSleepMode="true" />
<skillList>
<skill id="4045" level="1" /> <!-- Resist Full Magic Attack -->
<skill id="4408" level="1" /> <!-- HP Increase (1x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="20" /> <!-- Average P. Atk. -->
<skill id="4411" level="20" /> <!-- Average M. Atk. -->
<skill id="4412" level="11" /> <!-- Average P. Def. -->
<skill id="4413" level="11" /> <!-- Average M. Def. -->
<skill id="4414" level="2" /> <!-- Standard Type -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
<skill id="4416" level="12" /> <!-- Bugs -->
</skillList>
<exCrtEffect>true</exCrtEffect>
<ai aggroRange="450" clanHelpRange="900" isAggressive="true">
<clanList>
<clan>QUEEN_ANT</clan>
</clanList>
</ai>
<collision>
<radius normal="26" />
<height normal="15" />
</collision>
</npc>
<npc id="18024" level="80" type="Npc" name="Royal Guard Ant">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
<vitals hp="7051" hpRegen="10.5" mp="463" mpRegen="3.6" />
<npc id="18024" level="80" type="Monster" name="Royal Guard Ant">
<!-- DEFEAT THE QUEEN EVENT -->
<parameters>
<param name="MoveAroundSocial" value="120" />
<param name="MoveAroundSocial1" value="120" />
<param name="MoveAroundSocial2" value="120" />
</parameters>
<race>BUG</race>
<sex>MALE</sex>
<acquire sp="1" />
<stats str="40" int="41" dex="30" wit="20" con="43" men="10">
<vitals hp="70051" hpRegen="122" mp="463" mpRegen="1.8" />
<attack physical="1190" magical="1074" random="30" critical="7" accuracy="40" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="610" magical="223" />
<speed>
<walk ground="40" />
<run ground="230" />
</speed>
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
<hitTime>260</hitTime>
<abnormalResist physical="10" magical="10" />
</stats>
<status attackable="false" />
<status undying="false" />
<skillList>
<skill id="4045" level="1" /> <!-- Resist Full Magic Attack -->
<skill id="4408" level="1" /> <!-- HP Increase (1x) -->
<skill id="4409" level="1" /> <!-- MP Increase (1x) -->
<skill id="4410" level="20" /> <!-- Average P. Atk. -->
<skill id="4411" level="20" /> <!-- Average M. Atk. -->
<skill id="4412" level="11" /> <!-- Average P. Def. -->
<skill id="4413" level="11" /> <!-- Average M. Def. -->
<skill id="4414" level="2" /> <!-- Standard Type -->
<skill id="4415" level="3" /> <!-- One-handed Sword -->
<skill id="4416" level="12" /> <!-- Bugs -->
</skillList>
<exCrtEffect>true</exCrtEffect>
<ai type="BALANCED" clanHelpRange="900" aggroRange="450">
<clanList>
<clan>QUEEN_ANT</clan>
</clanList>
</ai>
<collision>
<radius normal="26" />
<height normal="15" />

View File

@ -1592,7 +1592,7 @@
</collision>
</npc>
<npc id="34184" level="85" type="Npc" name="Antri" title="Event Manager">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<!-- DEFEAT THE QUEEN EVENT -->
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
@ -1611,7 +1611,7 @@
</collision>
</npc>
<npc id="34185" level="85" type="Npc" name="Jio" title="Ant Nest's Researcher">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<!-- DEFEAT THE QUEEN EVENT -->
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">

View File

@ -3,7 +3,57 @@
<skill id="48200" toLevel="1" name="Ant Prophecy">
<!-- PvE damage $s1 All Critical Rate $s2 All Critical Damage $s3 Sayha's Grace Consumption $s4 -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<abnormalLevel>1</abnormalLevel>
<abnormalTime>11700</abnormalTime>
<canBeDispelled>false</canBeDispelled>
<castRange>300</castRange>
<effectRange>1500</effectRange>
<hitTime>300</hitTime>
<isMagic>2</isMagic>
<magicLevel>76</magicLevel>
<operateType>A2</operateType>
<basicProperty>NONE</basicProperty>
<magicCriticalRate>-5</magicCriticalRate>
<reuseDelay>100</reuseDelay>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="CriticalRate">
<amount>50</amount>
<mode>DIFF</mode>
</effect>
<effect name="MagicCriticalRate">
<amount>50</amount>
<mode>DIFF</mode>
</effect>
<effect name="CriticalDamage">
<amount>100</amount>
<mode>DIFF</mode>
</effect>
<effect name="MagicCriticalDamage">
<amount>100</amount>
<mode>DIFF</mode>
</effect>
<effect name="PvePhysicalAttackDamageBonus">
<amount>5</amount>
<type>ENEMY_ALL</type>
<mode>PER</mode>
</effect>
<effect name="PvePhysicalSkillDamageBonus">
<amount>5</amount>
<type>ENEMY_ALL</type>
<mode>PER</mode>
</effect>
<effect name="PveMagicalSkillDamageBonus">
<amount>5</amount>
<type>ENEMY_ALL</type>
<mode>PER</mode>
</effect>
<effect name="VitalityPointsRate">
<amount>-10</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="48201" toLevel="1" name="Raid Boss (Lv. 85)">
<!-- A rift that appeared after an earthquake had weakened Maphr's Seal. It shifted to the material world and brought chaos and pain with it. -->
@ -269,8 +319,20 @@
<!-- Deals $s1 fixed damage. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<isMagic>1</isMagic>
<hitTime>3500</hitTime>
<castRange>1800</castRange>
<effectPoint>-300</effectPoint>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
<basicProperty>MAGIC</basicProperty>
<effects>
<effect name="MagicalAttack">
<power>2000</power>
</effect>
</effects>
</skill>
<skill id="48255" toLevel="1" name="Baium<75>s Thunder Bolt">
<skill id="48255" toLevel="1" name="Baium's Thunder Bolt">
<!-- Deals $s1 fixed damage. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>