New Throne of Heroes Instances.

Contributed by CostyKiller.
This commit is contained in:
MobiusDevelopment
2021-03-20 07:14:16 +00:00
parent 534289035c
commit caf165521e
54 changed files with 2514 additions and 370 deletions

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Throne of Heroes - Goldberg -->
<instance id="307" maxWorlds="100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/instance.xsd">
<time duration="60" empty="1" />
<locations>
<enter type="FIXED">
<location x="11722" y="-85014" z="-10972" /> <!-- battle location -->
<!-- <location x="11715" y="-84303" z="-11030" /> behind the door -->
</enter>
<exit type="ORIGIN" />
</locations>
<conditions>
<condition type="Party" showMessageAndHtml="true">
<param name="html" value="condNoGroup.html" />
</condition>
<condition type="CommandChannel" showMessageAndHtml="true">
<param name="html" value="condNoGroup.html" />
</condition>
<condition type="CommandChannelLeaderSameClan" />
<condition type="GroupMin">
<param name="limit" value="4" />
</condition>
<condition type="GroupMax">
<param name="html" value="condBigGroup.html"/>
<param name="limit" value="100" />
</condition>
<condition type="Level" showMessageAndHtml="true">
<param name="html" value="condNoLevel.html" />
<param name="min" value="110" />
</condition>
<condition type="Distance" />
<condition type="Reenter" />
</conditions>
<reenter apply="ON_FINISH">
<reset hour="6" minute="30" />
</reenter>
<spawnlist>
<group name="GOLDBERG" spawnByDefault="false">
<npc id="26250" x="11704" y="-86511" z="-10929" heading="0" /> <!-- Goldberg -->
</group>
<group name="GOLDBERG_MINIONS" spawnByDefault="false">
<npc id="26251" x="11797" y="-86046" z="-10964" heading="0" respawnTime="1min" /> <!-- Handy Cannon Gunner -->
<npc id="26252" x="11704" y="-86904" z="-10964" heading="0" respawnTime="1min" /> <!-- Anchor Warrior -->
<npc id="26253" x="11303" y="-86510" z="-10964" heading="0" respawnTime="1min" /> <!-- Operator -->
<npc id="26254" x="12136" y="-86488" z="-10964" heading="0" respawnTime="1min" /> <!-- Axe Warrior -->
</group>
</spawnlist>
</instance>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Throne of Heroes - Mary Reed -->
<instance id="308" maxWorlds="100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/instance.xsd">
<time duration="60" empty="1" />
<locations>
<enter type="FIXED">
<location x="11722" y="-85014" z="-10972" /> <!-- battle location -->
<!-- <location x="11715" y="-84303" z="-11030" /> behind the door -->
</enter>
<exit type="ORIGIN" />
</locations>
<conditions>
<condition type="Party" showMessageAndHtml="true">
<param name="html" value="condNoGroup.html" />
</condition>
<condition type="CommandChannel" showMessageAndHtml="true">
<param name="html" value="condNoGroup.html" />
</condition>
<condition type="CommandChannelLeaderSameClan" />
<condition type="GroupMin">
<param name="limit" value="4" />
</condition>
<condition type="GroupMax">
<param name="html" value="condBigGroup.html"/>
<param name="limit" value="100" />
</condition>
<condition type="Level" showMessageAndHtml="true">
<param name="html" value="condNoLevel.html" />
<param name="min" value="110" />
</condition>
<condition type="Distance" />
<condition type="Reenter" />
</conditions>
<reenter apply="ON_FINISH">
<reset hour="6" minute="30" />
</reenter>
<spawnlist>
<group name="MARY_REED" spawnByDefault="false">
<npc id="26267" x="11704" y="-86511" z="-10929" heading="0" /> <!-- Mary Reed -->
</group>
<group name="MARY_REED_MINIONS" spawnByDefault="false">
<npc id="26268" x="11797" y="-86046" z="-10964" heading="0" respawnTime="1min" /> <!-- Shield Master -->
<npc id="26269" x="11704" y="-86904" z="-10964" heading="0" respawnTime="1min" /> <!-- Spear Master -->
<npc id="26270" x="11303" y="-86510" z="-10964" heading="0" respawnTime="1min" /> <!-- Bow Master -->
<npc id="26271" x="12136" y="-86488" z="-10964" heading="0" respawnTime="1min" /> <!-- Magic Master -->
</group>
</spawnlist>
</instance>

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Throne of Heroes - Tauti -->
<instance id="309" maxWorlds="100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/instance.xsd">
<time duration="60" empty="1" />
<locations>
<enter type="FIXED">
<location x="11722" y="-85014" z="-10972" /> <!-- battle location -->
<!-- <location x="11715" y="-84303" z="-11030" /> behind the door -->
</enter>
<exit type="ORIGIN" />
</locations>
<conditions>
<condition type="Party" showMessageAndHtml="true">
<param name="html" value="condNoGroup.html" />
</condition>
<condition type="CommandChannel" showMessageAndHtml="true">
<param name="html" value="condNoGroup.html" />
</condition>
<condition type="CommandChannelLeaderSameClan" />
<condition type="GroupMin">
<param name="limit" value="4" />
</condition>
<condition type="GroupMax">
<param name="html" value="condBigGroup.html"/>
<param name="limit" value="100" />
</condition>
<condition type="Level" showMessageAndHtml="true">
<param name="html" value="condNoLevel.html" />
<param name="min" value="110" />
</condition>
<condition type="Distance" />
<condition type="Reenter" />
</conditions>
<reenter apply="ON_FINISH">
<reset hour="6" minute="30" />
</reenter>
<spawnlist>
<group name="TAUTI" spawnByDefault="false">
<npc id="26266" x="11704" y="-86511" z="-10929" heading="0" /> <!-- Tauti -->
</group>
</spawnlist>
</instance>

View File

@@ -0,0 +1,9 @@
<html><body>Roiental:<br>
Heroes whose strength grows day after day can put their abilities to the test and ascend the renovated Throne of Heroes.<br>
If you want to challenge Goldberg, you need to be a member of a <font color="LEVEL">Lv. 7 clan</font>. To fight Mary Reed your clan needs to be at least <font color="LEVEL">Lv. 10</font>, while Tauti can only be confronted by a <font color="LEVEL">Lv. 13 clan</font>.<br>
The request to enter the Throne of Heroes can only be submitted by the clan leader of a clan member who has been granted the requisite authority.<br>
So, what would you like?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Roiental enterGoldberg">Go to Throne of Heroes - Goldberg</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Roiental enterMaryReed">Go to Throne of Heroes - Mary Reed</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Roiental enterTauti">Go to Throne of Heroes - Tauti</Button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Roiental:<br>
Heroes whose strength grows day after day can put their abilities to the test and ascend the renovated Throne of Heroes.<br>
If you want to challenge Goldberg, you need to be a member of a <font color="LEVEL">Lv. 7 clan</font>.<br>
The request to enter the Throne of Heroes can only be submitted by the clan leader of a clan member who has been granted the requisite authority.<br>
So, would you like to enter?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ThroneOfHeroesGoldberg enterInstance">Yes go to Throne of Heroes - Goldberg</Button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Roiental:<br>
Heroes whose strength grows day after day can put their abilities to the test and ascend the renovated Throne of Heroes.<br>
If you want to challenge Mary Reed your clan needs to be at least <font color="LEVEL">Lv. 10</font>.<br>
The request to enter the Throne of Heroes can only be submitted by the clan leader of a clan member who has been granted the requisite authority.<br>
So, would you like to enter?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ThroneOfHeroesMaryReed enterInstance">Yes go to Throne of Heroes - Mary Reed</Button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Roiental:<br>
Heroes whose strength grows day after day can put their abilities to the test and ascend the renovated Throne of Heroes.<br>
If you want to challenge Tauti, you need to be a member of a <font color="LEVEL">Lv. 13 clan</font>.<br>
The request to enter the Throne of Heroes can only be submitted by the clan leader of a clan member who has been granted the requisite authority.<br>
So, would you like to enter?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ThroneOfHeroesTauti enterInstance">Yes go to Throne of Heroes - Tauti</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
Your party members are participating in battle. I'll move you to them.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ThroneOfHeroesGoldberg reenterInstance">"Thanks!"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
Your party members are participating in battle. I'll move you to them.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ThroneOfHeroesMaryReed reenterInstance">"Thanks!"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
Your party members are participating in battle. I'll move you to them.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ThroneOfHeroesTauti reenterInstance">"Thanks!"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
You are not a clan member or your clan hasn't reached Lv. 7 yet.<br>
(The Throne of Heroes can only be ascended by members of a command channel from the same clan (4-100 participants). The clan must have reached Lv. 7.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
You are not a clan member or your clan hasn't reached Lv. 10 yet.<br>
(The Throne of Heroes can only be ascended by members of a command channel from the same clan (4-100 participants). The clan must have reached Lv. 10.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
You are not a clan member or your clan hasn't reached Lv. 13 yet.<br>
(The Throne of Heroes can only be ascended by members of a command channel from the same clan (4-100 participants). The clan must have reached Lv. 13.)
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Roiental:<br>
Your clan mates already challenged one of the Throne of Heroes raids today.<br>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
You are not strong enough yet.<br>
(The Throne of Heroes can only be ascended by characters of level 110 or above.)
</body></html>

View File

@@ -0,0 +1,142 @@
/*
* 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 ai.areas.Rune.Roiental;
import org.l2jmobius.gameserver.instancemanager.InstanceManager;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import ai.AbstractNpcAI;
/**
* Roiental AI.
* @author CostyKiller
*/
public class Roiental extends AbstractNpcAI
{
// NPCs
private static final int ROIENTAL = 34571;
// Misc
private static final int TOH_GB_TEMPLATE_ID = 307; // Throne of Heroes - Goldberg
private static final int TOH_MR_TEMPLATE_ID = 308; // Throne of Heroes - Mary Reed
private static final int TOH_TA_TEMPLATE_ID = 309; // Throne of Heroes - Tauti
private static final int MIN_LVL = 110;
private static final int CLAN_MIN_LVL_GB = 7;
private static final int CLAN_MIN_LVL_MR = 10;
private static final int CLAN_MIN_LVL_TA = 13;
private Roiental()
{
addStartNpc(ROIENTAL);
addFirstTalkId(ROIENTAL);
addTalkId(ROIENTAL);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
if (event.equals("enterGoldberg"))
{
if (player.getLevel() < MIN_LVL)
{
htmltext = "Roiental-NoLevel.html";
}
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_GB))
{
htmltext = "Roiental-03a.html";
}
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE"))
{
htmltext = "Roiental-AlreadyDone.html";
}
else
{
htmltext = "Roiental-01a.html";
}
}
if (event.equals("enterMaryReed"))
{
if (player.getLevel() < MIN_LVL)
{
htmltext = "Roiental-NoLevel.html";
}
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_MR))
{
htmltext = "Roiental-03b.html";
}
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE"))
{
htmltext = "Roiental-AlreadyDone.html";
}
else
{
htmltext = "Roiental-01b.html";
}
}
if (event.equals("enterTauti"))
{
if (player.getLevel() < MIN_LVL)
{
htmltext = "Roiental-NoLevel.html";
}
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_TA))
{
htmltext = "Roiental-03c.html";
}
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE"))
{
htmltext = "Roiental-AlreadyDone.html";
}
else
{
htmltext = "Roiental-01c.html";
}
}
return htmltext;
}
@Override
public String onFirstTalk(Npc npc, PlayerInstance player)
{
String htmltext = null;
final Instance instance = InstanceManager.getInstance().getPlayerInstance(player, false);
if ((instance != null) && ((instance.getTemplateId() == TOH_GB_TEMPLATE_ID)))
{
htmltext = "Roiental-02a.html";
}
else if ((instance != null) && ((instance.getTemplateId() == TOH_MR_TEMPLATE_ID)))
{
htmltext = "Roiental-02b.html";
}
else if ((instance != null) && ((instance.getTemplateId() == TOH_TA_TEMPLATE_ID)))
{
htmltext = "Roiental-02c.html";
}
else
{
htmltext = "Roiental-01.html";
}
return htmltext;
}
public static void main(String[] args)
{
new Roiental();
}
}

View File

@@ -0,0 +1,210 @@
/*
* 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.ThroneOfHeroes;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import instances.AbstractInstance;
/**
* @author CostyKiller // https://www.youtube.com/watch?v=fJWAWU5XpZk
*/
public class ThroneOfHeroesGoldberg extends AbstractInstance
{
// NPCs
private static final int ROIENTAL = 34571;
// Monsters
private static final int GOLDBERG = 26250;
private static final int[] GOLDBERG_MINIONS =
{
26251, // Handy Cannon Gunner
26252, // Anchor Warrior
26253, // Operator
26254 // Axe Warrior
};
// Throne's Treasure Chest Goldberg
private static final int TREASURE_CHEST = 26455;
// World Instance
Instance world = null;
// Misc
private static final int TEMPLATE_ID = 307;
public ThroneOfHeroesGoldberg()
{
super(TEMPLATE_ID);
addInstanceCreatedId(TEMPLATE_ID);
addStartNpc(ROIENTAL);
addTalkId(ROIENTAL);
addAttackId(GOLDBERG);
addKillId(GOLDBERG);
}
@Override
public void onInstanceCreated(Instance activeInstance, PlayerInstance player)
{
activeInstance.setStatus(0);
startQuestTimer("ANNOUNCE_RAID_START", 10000, null, player);
world = activeInstance;
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
switch (event)
{
case "enterInstance":
{
enterInstance(player, npc, TEMPLATE_ID);
startQuestTimer("ANNOUNCE_RAID_PREP", 20000, null, player);
break;
}
case "reenterInstance":
{
final Instance activeInstance = getPlayerInstance(player);
if (isInInstance(activeInstance))
{
enterInstance(player, npc, activeInstance.getTemplateId());
}
}
case "ANNOUNCE_RAID_START":
{
showOnScreenMsg(world, NpcStringId.THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_GOLDBERG_WILL_BEGIN_SHORTLY_PLEASE_GET_READY, ExShowScreenMessage.TOP_CENTER, 5000, true);
startQuestTimer("ANNOUNCE_RAID_PREP", 15000, null, player);
break;
}
case "ANNOUNCE_RAID_PREP":
{
showOnScreenMsg(world, NpcStringId.THE_FIGHTING_AGAINST_GOLDBERG_WILL_BEGIN_IN_10_SECONDS, ExShowScreenMessage.TOP_CENTER, 5000, true);
startQuestTimer("ANNOUNCE_5", 5000, null, player);
break;
}
case "ANNOUNCE_5":
{
showOnScreenMsg(world, NpcStringId.FIVE_SECONDS, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_4", 1000, null, player);
break;
}
case "ANNOUNCE_4":
{
showOnScreenMsg(world, NpcStringId.FOUR_SECONDS, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_3", 1000, null, player);
break;
}
case "ANNOUNCE_3":
{
showOnScreenMsg(world, NpcStringId.THREE_SECONDS_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_2", 1000, null, player);
break;
}
case "ANNOUNCE_2":
{
showOnScreenMsg(world, NpcStringId.TWO_SECONDS_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_1", 1000, null, player);
break;
}
case "ANNOUNCE_1":
{
showOnScreenMsg(world, NpcStringId.ONE_SECOND_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("SPAWN_GOLDBERG", 1000, null, player);
break;
}
case "SPAWN_GOLDBERG":
{
showOnScreenMsg(world, NpcStringId.GOLDBERG_APPEARS, ExShowScreenMessage.TOP_CENTER, 5000, true);
world.spawnGroup("GOLDBERG");
break;
}
case "SPAWN_GOLDBERG_MINIONS":
{
showOnScreenMsg(world, NpcStringId.GOLDBERG_SUMMONS_HIS_MINIONS, ExShowScreenMessage.TOP_CENTER, 5000, true);
world.spawnGroup("GOLDBERG_MINIONS");
break;
}
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
final int hpPer = npc.getCurrentHpPercent();
final int maxHp = npc.getMaxHp();
if (npc.getId() == GOLDBERG)
{
if ((hpPer < (maxHp * 0.50)) && npc.isScriptValue(0))
{
startQuestTimer("SPAWN_GOLDBERG_MINIONS", 10000, npc, null);
npc.setScriptValue(1);
}
else if ((hpPer < (maxHp * 0.30)) && npc.isScriptValue(1))
{
showOnScreenMsg(world, NpcStringId.GOLDBERG_BRINGS_OUT_ALL_OF_THE_POWER_WITHIN_HIM, ExShowScreenMessage.TOP_CENTER, 5000, true);
npc.setScriptValue(2);
}
}
}
return super.onAttack(npc, attacker, damage, isSummon);
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
if (npc.getId() == GOLDBERG)
{
// Despawn minions and stop timer
cancelQuestTimer("SPAWN_GOLDBERG_MINIONS", npc, killer);
world.getAliveNpcs(GOLDBERG_MINIONS).forEach(beast -> beast.doDie(null));
// Spawn treasure chests
boolean eightCCMembersOrMore = ((killer.getCommandChannel() != null) && (killer.getCommandChannel().getMemberCount() >= 8));
if (killer.isGM() || eightCCMembersOrMore)
{
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
}
else
{
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
}
// Finish instance
world.finishInstance(2);
// Set clan variable
killer.getClan().getVariables().set("TOH_DONE", Chronos.currentTimeMillis());
killer.getClan().getVariables().storeMe();
}
}
return super.onKill(npc, killer, isSummon);
}
public static void main(String[] args)
{
new ThroneOfHeroesGoldberg();
}
}

View File

@@ -0,0 +1,226 @@
/*
* 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.ThroneOfHeroes;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import instances.AbstractInstance;
/**
* @author CostyKiller
*/
public class ThroneOfHeroesMaryReed extends AbstractInstance
{
// NPCs
private static final int ROIENTAL = 34571;
// Monsters
private static final int MARY_REED = 26267;
private static final int[] MARY_REED_MINIONS =
{
// add Zaken as minion
26268, // Shield Master -->
26269, // Spear Master -->
26270, // Bow Master -->
26271 // Magic Master -->
};
// Throne's Treasure Chest Mary Reed
private static final int TREASURE_CHEST = 26456;
// World Instance
Instance world = null;
// Misc
private static final int TEMPLATE_ID = 308;
// Npc Dialogs
private static final NpcStringId[] MINIONS_MESSAGES =
{
NpcStringId.MARY_REED_THEY_ARE_JUST_INSECTS_HAHA_SHOW_THEM_YOUR_TRUE_POWER,
NpcStringId.MARY_REED_THESE_BRATS_ARE_PRETTY_STRONG_I_SHALL_REST_UP_A_BIT,
NpcStringId.MARY_REED_THESE_BRATS_ARE_PRETTY_STRONG_WATCH_OUT,
NpcStringId.MARY_REED_REVEALS_HER_TRUE_POWER
};
public ThroneOfHeroesMaryReed()
{
super(TEMPLATE_ID);
addInstanceCreatedId(TEMPLATE_ID);
addStartNpc(ROIENTAL);
addTalkId(ROIENTAL);
addAttackId(MARY_REED);
addKillId(MARY_REED);
}
@Override
public void onInstanceCreated(Instance activeInstance, PlayerInstance player)
{
activeInstance.setStatus(0);
startQuestTimer("ANNOUNCE_RAID_START", 10000, null, player);
world = activeInstance;
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
switch (event)
{
case "enterInstance":
{
enterInstance(player, npc, TEMPLATE_ID);
startQuestTimer("ANNOUNCE_RAID_PREP", 20000, null, player);
break;
}
case "reenterInstance":
{
final Instance activeInstance = getPlayerInstance(player);
if (isInInstance(activeInstance))
{
enterInstance(player, npc, activeInstance.getTemplateId());
}
}
case "ANNOUNCE_RAID_START":
{
showOnScreenMsg(world, NpcStringId.THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_MARY_REED_WILL_BEGIN_SHORTLY, ExShowScreenMessage.TOP_CENTER, 5000, true);
startQuestTimer("ANNOUNCE_RAID_PREP", 15000, null, player);
break;
}
case "ANNOUNCE_RAID_PREP":
{
showOnScreenMsg(world, NpcStringId.THE_FIGHTING_AGAINST_MARY_REED_WILL_BEGIN_IN_10_SECONDS, ExShowScreenMessage.TOP_CENTER, 5000, true);
startQuestTimer("ANNOUNCE_5", 10000, null, player);
break;
}
case "ANNOUNCE_5":
{
showOnScreenMsg(world, NpcStringId.FIVE_SECONDS, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_4", 2000, null, player);
break;
}
case "ANNOUNCE_4":
{
showOnScreenMsg(world, NpcStringId.FOUR_SECONDS, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_3", 2000, null, player);
break;
}
case "ANNOUNCE_3":
{
showOnScreenMsg(world, NpcStringId.THREE_SECONDS_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_2", 2000, null, player);
break;
}
case "ANNOUNCE_2":
{
showOnScreenMsg(world, NpcStringId.TWO_SECONDS_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_1", 2000, null, player);
break;
}
case "ANNOUNCE_1":
{
showOnScreenMsg(world, NpcStringId.ONE_SECOND_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("SPAWN_MARY_REED", 2000, null, player);
break;
}
case "SPAWN_MARY_REED":
{
showOnScreenMsg(world, NpcStringId.MARY_REED_GREETS_HEROES, ExShowScreenMessage.TOP_CENTER, 5000, true);
world.spawnGroup("MARY_REED");
break;
}
case "SPAWN_MARY_REED_MINIONS":
{
showOnScreenMsg(world, NpcStringId.MARY_REED_SUMMONS_ZAKEN, ExShowScreenMessage.TOP_CENTER, 5000, true);
world.spawnGroup("MARY_REED_MINIONS");
break;
}
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
final int hpPer = npc.getCurrentHpPercent();
final int maxHp = npc.getMaxHp();
if (npc.getId() == MARY_REED)
{
if ((hpPer < (maxHp * 0.50)) && npc.isScriptValue(0))
{
startQuestTimer("SPAWN_MARY_REED_MINIONS", 10000, npc, null);
npc.setScriptValue(1);
}
else if ((hpPer < (maxHp * 0.30)) && npc.isScriptValue(1))
{
showOnScreenMsg(world, NpcStringId.DO_YOU_THINK_YOU_CAN_EVADE_MY_STRIKE_TAKE_THAT, ExShowScreenMessage.TOP_CENTER, 5000, true);
npc.setScriptValue(2);
}
}
else if (CommonUtil.contains(MARY_REED_MINIONS, npc.getId()) && world.getNpc(MARY_REED).isScriptValue(2))
{
showOnScreenMsg(world, MINIONS_MESSAGES[getRandom(4)], ExShowScreenMessage.TOP_CENTER, 5000, true);
}
}
return super.onAttack(npc, attacker, damage, isSummon);
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
if (npc.getId() == MARY_REED)
{
// Despawn minions and stop timer
cancelQuestTimer("SPAWN_MARY_REED_MINIONS", npc, killer);
world.getAliveNpcs(MARY_REED_MINIONS).forEach(beast -> beast.doDie(null));
// Spawn treasure chests
boolean eightCCMembersOrMore = ((killer.getCommandChannel() != null) && (killer.getCommandChannel().getMemberCount() >= 8));
if (killer.isGM() || eightCCMembersOrMore)
{
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
}
else
{
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
}
// Finish instance
world.finishInstance(2);
// Set clan variable
killer.getClan().getVariables().set("TOH_DONE", Chronos.currentTimeMillis());
killer.getClan().getVariables().storeMe();
}
}
return super.onKill(npc, killer, isSummon);
}
public static void main(String[] args)
{
new ThroneOfHeroesMaryReed();
}
}

View File

@@ -0,0 +1,213 @@
/*
* 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.ThroneOfHeroes;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import instances.AbstractInstance;
/**
* @author CostyKiller
*/
public class ThroneOfHeroesTauti extends AbstractInstance
{
// NPCs
private static final int ROIENTAL = 34571;
// Monsters
private static final int TAUTI = 26266;
// Throne's Treasure Chest Tauti
private static final int TREASURE_CHEST = 26457;
// World Instance
Instance world = null;
// Misc
private static final int TEMPLATE_ID = 309;
// Npc Dialogs
private static final NpcStringId[] TAUTI_MESSAGES =
{
NpcStringId.TAUTI_INTENDS_TO_SHOW_OFF_HIS_POWER_TO_HIS_FOLLOWERS,
NpcStringId.TAUTI_INTENDS_TO_SHOW_OFF_HIS_POWER_TO_THOSE_WHO_AVOID_HIM
};
public ThroneOfHeroesTauti()
{
super(TEMPLATE_ID);
addInstanceCreatedId(TEMPLATE_ID);
addStartNpc(ROIENTAL);
addTalkId(ROIENTAL);
addAttackId(TAUTI);
addKillId(TAUTI);
}
@Override
public void onInstanceCreated(Instance activeInstance, PlayerInstance player)
{
activeInstance.setStatus(0);
startQuestTimer("ANNOUNCE_RAID_START", 10000, null, player);
world = activeInstance;
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
switch (event)
{
case "enterInstance":
{
enterInstance(player, npc, TEMPLATE_ID);
startQuestTimer("ANNOUNCE_RAID_PREP", 20000, null, player);
break;
}
case "reenterInstance":
{
final Instance activeInstance = getPlayerInstance(player);
if (isInInstance(activeInstance))
{
enterInstance(player, npc, activeInstance.getTemplateId());
}
}
case "ANNOUNCE_RAID_START":
{
showOnScreenMsg(world, NpcStringId.THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_TAUTI_WILL_BEGIN_SHORTLY, ExShowScreenMessage.TOP_CENTER, 5000, true);
startQuestTimer("ANNOUNCE_RAID_PREP", 15000, null, player);
break;
}
case "ANNOUNCE_RAID_PREP":
{
showOnScreenMsg(world, NpcStringId.THE_FIGHTING_AGAINST_TAUTI_WILL_BEGIN_IN_10_SECONDS, ExShowScreenMessage.TOP_CENTER, 5000, true);
startQuestTimer("ANNOUNCE_5", 10000, null, player);
break;
}
case "ANNOUNCE_5":
{
showOnScreenMsg(world, NpcStringId.FIVE_SECONDS, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_4", 2000, null, player);
break;
}
case "ANNOUNCE_4":
{
showOnScreenMsg(world, NpcStringId.FOUR_SECONDS, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_3", 2000, null, player);
break;
}
case "ANNOUNCE_3":
{
showOnScreenMsg(world, NpcStringId.THREE_SECONDS_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_2", 2000, null, player);
break;
}
case "ANNOUNCE_2":
{
showOnScreenMsg(world, NpcStringId.TWO_SECONDS_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_1", 2000, null, player);
break;
}
case "ANNOUNCE_1":
{
showOnScreenMsg(world, NpcStringId.ONE_SECOND_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("SPAWN_TAUTI", 2000, null, player);
break;
}
case "SPAWN_TAUTI":
{
showOnScreenMsg(world, NpcStringId.TAUTI_IS_READY_TO_FIGHT, ExShowScreenMessage.TOP_CENTER, 5000, true);
world.spawnGroup("TAUTI");
break;
}
// case "SPAWN_TAUTI_MINIONS":
// {
// showOnScreenMsg(world, NpcStringId.TAUTI_SUMMONS_HIS_MECHANICAL_CONTRAPTION, ExShowScreenMessage.TOP_CENTER, 5000, true);
// world.spawnGroup("TAUTI_MINIONS");
// break;
// }
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
final int hpPer = npc.getCurrentHpPercent();
final int maxHp = npc.getMaxHp();
if (npc.getId() == TAUTI)
{
if ((hpPer < (maxHp * 0.50)) && npc.isScriptValue(0))
{
// startQuestTimer("SPAWN_TAUTI_MINIONS", 10000, npc, null);
showOnScreenMsg(world, TAUTI_MESSAGES[getRandom(2)], ExShowScreenMessage.TOP_CENTER, 5000, true);
npc.setScriptValue(1);
}
else if ((hpPer < (maxHp * 0.30)) && npc.isScriptValue(1))
{
showOnScreenMsg(world, TAUTI_MESSAGES[getRandom(2)], ExShowScreenMessage.TOP_CENTER, 5000, true);
npc.setScriptValue(2);
}
}
}
return super.onAttack(npc, attacker, damage, isSummon);
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
if (npc.getId() == TAUTI)
{
// Despawn minions and stop timer
// cancelQuestTimer("SPAWN_TAUTI_MINIONS", npc, killer);
// world.getAliveNpcs(TAUTI_MINIONS).forEach(beast -> beast.doDie(null));
// Spawn treasure chests
boolean eightCCMembersOrMore = ((killer.getCommandChannel() != null) && (killer.getCommandChannel().getMemberCount() >= 8));
if (killer.isGM() || eightCCMembersOrMore)
{
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
}
else
{
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
}
// Finish instance
world.finishInstance(2);
// Set clan variable
killer.getClan().getVariables().set("TOH_DONE", Chronos.currentTimeMillis());
killer.getClan().getVariables().storeMe();
}
}
return super.onKill(npc, killer, isSummon);
}
public static void main(String[] args)
{
new ThroneOfHeroesTauti();
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
That many people can't be moved.<br>
(A maximum of 100 people can participate.)
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Roiental:<br>
As I explained earlier, you can enter only by forming an association.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
You are too weak. I won't let you enter.<br>
(Only players of at least level 110 may participate.)
</body></html>

View File

@@ -151,6 +151,7 @@
<npc id="30981" x="44040" y="-47336" z="-804" heading="16383" respawnTime="60sec" /> <!-- Dark Judge --> <npc id="30981" x="44040" y="-47336" z="-804" heading="16383" respawnTime="60sec" /> <!-- Dark Judge -->
<npc id="31126" x="43712" y="-47208" z="-802" heading="21220" respawnTime="60sec" /> <!-- Blacksmith of Mammon --> <npc id="31126" x="43712" y="-47208" z="-802" heading="21220" respawnTime="60sec" /> <!-- Blacksmith of Mammon -->
<npc id="33737" x="43790" y="-47194" z="-802" heading="19739" respawnTime="60sec" /> <!-- Merchant of Mammon --> <npc id="33737" x="43790" y="-47194" z="-802" heading="19739" respawnTime="60sec" /> <!-- Merchant of Mammon -->
<npc id="34571" x="45432" y="-49880" z="-799" heading="23924" respawnTime="60sec" /> <!-- Roiental -->
</group> </group>
</spawn> </spawn>
</list> </list>

View File

@@ -2925,7 +2925,7 @@
</drop> </drop>
</dropLists> </dropLists>
</npc> </npc>
<npc id="26250" level="105" type="RaidBoss" name="Goldberg"> <npc id="26250" level="115" type="RaidBoss" name="Goldberg">
<race>UNDEAD</race> <race>UNDEAD</race>
<sex>MALE</sex> <sex>MALE</sex>
<acquire exp="999279716400" sp="899342325" raidPoints="21" /> <acquire exp="999279716400" sp="899342325" raidPoints="21" />
@@ -2939,6 +2939,11 @@
</speed> </speed>
</stats> </stats>
<status attackable="true" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="2000" aggroRange="2000">
<clanList>
<clan>GOLDBERG_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="37.5" /> <radius normal="37.5" />
<height normal="64.5" /> <height normal="64.5" />
@@ -2948,32 +2953,8 @@
<skill id="5467" level="1" /> <!-- Dark Attack --> <skill id="5467" level="1" /> <!-- Dark Attack -->
<skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance --> <skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance -->
</skillList> </skillList>
<dropLists>
<drop>
<item id="46492" min="1" max="1" chance="4.198" /> <!-- Pantheon's Soul Crystal Lv. 4 -->
<item id="46477" min="1" max="1" chance="4.146" /> <!-- Leona's Soul Crystal Lv. 4 -->
<item id="46507" min="1" max="1" chance="4.131" /> <!-- Lionel's Soul Crystal Lv. 4 -->
<item id="46493" min="1" max="1" chance="3.963" /> <!-- Pantheon's Soul Crystal Lv. 5 -->
<item id="46478" min="1" max="1" chance="3.923" /> <!-- Leona's Soul Crystal Lv. 5 -->
<item id="46508" min="1" max="1" chance="3.904" /> <!-- Lionel's Soul Crystal Lv. 5 -->
<item id="46509" min="1" max="1" chance="3.286" /> <!-- Lionel's Soul Crystal Lv. 6 -->
<item id="46494" min="1" max="1" chance="3.211" /> <!-- Pantheon's Soul Crystal Lv. 6 -->
<item id="46479" min="1" max="1" chance="3.184" /> <!-- Leona's Soul Crystal Lv. 6 -->
<item id="46462" min="1" max="1" chance="2.852" /> <!-- Mermoden's Soul Crystal Lv. 4 -->
<item id="46447" min="1" max="1" chance="2.787" /> <!-- Kain's Soul Crystal Lv. 4 -->
<item id="46463" min="1" max="1" chance="2.661" /> <!-- Mermoden's Soul Crystal Lv. 5 -->
<item id="46448" min="1" max="1" chance="2.569" /> <!-- Kain's Soul Crystal Lv. 5 -->
<item id="46449" min="1" max="1" chance="2.134" /> <!-- Kain's Soul Crystal Lv. 6 -->
<item id="46464" min="1" max="1" chance="2.103" /> <!-- Mermoden's Soul Crystal Lv. 6 -->
<item id="46510" min="1" max="1" chance="1.219" /> <!-- Lionel's Soul Crystal Lv. 7 -->
<item id="46480" min="1" max="1" chance="1.182" /> <!-- Leona's Soul Crystal Lv. 7 -->
<item id="46495" min="1" max="1" chance="1.171" /> <!-- Pantheon's Soul Crystal Lv. 7 -->
<item id="46465" min="1" max="1" chance="0.75" /> <!-- Mermoden's Soul Crystal Lv. 7 -->
<item id="46450" min="1" max="1" chance="0.75" /> <!-- Kain's Soul Crystal Lv. 7 -->
</drop>
</dropLists>
</npc> </npc>
<npc id="26251" level="85" type="Npc" name="Handy Cannon Gunner"> <npc id="26251" level="115" type="Monster" name="Handy Cannon Gunner">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -2986,13 +2967,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>GOLDBERG_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="30" /> <radius normal="30" />
<height normal="39" /> <height normal="39" />
</collision> </collision>
</npc> </npc>
<npc id="26252" level="85" type="Npc" name="Anchor Warrior"> <npc id="26252" level="115" type="Monster" name="Anchor Warrior">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3005,13 +2991,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>GOLDBERG_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="11" /> <radius normal="11" />
<height normal="35" /> <height normal="35" />
</collision> </collision>
</npc> </npc>
<npc id="26253" level="85" type="Npc" name="Operator"> <npc id="26253" level="115" type="Monster" name="Operator">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3024,13 +3015,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>GOLDBERG_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="13" /> <radius normal="13" />
<height normal="35.5" /> <height normal="35.5" />
</collision> </collision>
</npc> </npc>
<npc id="26254" level="85" type="Npc" name="Axe Warrior"> <npc id="26254" level="115" type="Monster" name="Axe Warrior">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3043,7 +3039,12 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>GOLDBERG_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="11" /> <radius normal="11" />
<height normal="35" /> <height normal="35" />
@@ -3052,7 +3053,7 @@
<npc id="26255" level="108" type="RaidBoss" name="Zaken"> <npc id="26255" level="108" type="RaidBoss" name="Zaken">
<race>UNDEAD</race> <race>UNDEAD</race>
<sex>MALE</sex> <sex>MALE</sex>
<acquire exp="3766456368864" sp="3389803344" /> <acquire exp="3766456368864" sp="3389803344" raidPoints="21" />
<stats str="164" int="188" dex="55" wit="78" con="111" men="149"> <stats str="164" int="188" dex="55" wit="78" con="111" men="149">
<vitals hp="123163664.15391" hpRegen="470.5528213" mp="88540.925" mpRegen="3.3" /> <vitals hp="123163664.15391" hpRegen="470.5528213" mp="88540.925" mpRegen="3.3" />
<attack physical="318573.0144" magical="228464.7134" random="30" critical="4.75" accuracy="4.75" attackSpeed="250" type="SWORD" range="40" distance="80" width="120" /> <attack physical="318573.0144" magical="228464.7134" random="30" critical="4.75" accuracy="4.75" attackSpeed="250" type="SWORD" range="40" distance="80" width="120" />
@@ -3063,6 +3064,11 @@
</speed> </speed>
</stats> </stats>
<status attackable="true" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="2000" aggroRange="2000">
<clanList>
<clan>ZAKEN_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="24" /> <radius normal="24" />
<height normal="49.5" /> <height normal="49.5" />
@@ -3072,32 +3078,8 @@
<skill id="5467" level="1" /> <!-- Dark Attack --> <skill id="5467" level="1" /> <!-- Dark Attack -->
<skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance --> <skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance -->
</skillList> </skillList>
<dropLists>
<drop>
<item id="46492" min="1" max="1" chance="8.27" /> <!-- Pantheon's Soul Crystal Lv. 4 -->
<item id="46477" min="1" max="1" chance="8.221" /> <!-- Leona's Soul Crystal Lv. 4 -->
<item id="46507" min="1" max="1" chance="8.219" /> <!-- Lionel's Soul Crystal Lv. 4 -->
<item id="46478" min="1" max="1" chance="7.889" /> <!-- Leona's Soul Crystal Lv. 5 -->
<item id="46493" min="1" max="1" chance="7.844" /> <!-- Pantheon's Soul Crystal Lv. 5 -->
<item id="46508" min="1" max="1" chance="7.827" /> <!-- Lionel's Soul Crystal Lv. 5 -->
<item id="46479" min="1" max="1" chance="6.392" /> <!-- Leona's Soul Crystal Lv. 6 -->
<item id="46494" min="1" max="1" chance="6.386" /> <!-- Pantheon's Soul Crystal Lv. 6 -->
<item id="46509" min="1" max="1" chance="6.376" /> <!-- Lionel's Soul Crystal Lv. 6 -->
<item id="46462" min="1" max="1" chance="5.554" /> <!-- Mermoden's Soul Crystal Lv. 4 -->
<item id="46447" min="1" max="1" chance="5.533" /> <!-- Kain's Soul Crystal Lv. 4 -->
<item id="46448" min="1" max="1" chance="5.261" /> <!-- Kain's Soul Crystal Lv. 5 -->
<item id="46463" min="1" max="1" chance="5.246" /> <!-- Mermoden's Soul Crystal Lv. 5 -->
<item id="46464" min="1" max="1" chance="4.405" /> <!-- Mermoden's Soul Crystal Lv. 6 -->
<item id="46449" min="1" max="1" chance="4.329" /> <!-- Kain's Soul Crystal Lv. 6 -->
<item id="46480" min="1" max="1" chance="2.319" /> <!-- Leona's Soul Crystal Lv. 7 -->
<item id="46495" min="1" max="1" chance="2.268" /> <!-- Pantheon's Soul Crystal Lv. 7 -->
<item id="46510" min="1" max="1" chance="2.234" /> <!-- Lionel's Soul Crystal Lv. 7 -->
<item id="46450" min="1" max="1" chance="1.516" /> <!-- Kain's Soul Crystal Lv. 7 -->
<item id="46465" min="1" max="1" chance="1.503" /> <!-- Mermoden's Soul Crystal Lv. 7 -->
</drop>
</dropLists>
</npc> </npc>
<npc id="26256" level="85" type="Npc" name="Devil Guardian"> <npc id="26256" level="108" type="Monster" name="Devil Guardian">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3110,13 +3092,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>ZAKEN_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="25" /> <radius normal="25" />
<height normal="44" /> <height normal="44" />
</collision> </collision>
</npc> </npc>
<npc id="26257" level="85" type="Npc" name="Devil Spearshooter"> <npc id="26257" level="108" type="Monster" name="Devil Spearshooter">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3130,13 +3117,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>ZAKEN_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="17" /> <radius normal="17" />
<height normal="44" /> <height normal="44" />
</collision> </collision>
</npc> </npc>
<npc id="26258" level="85" type="Npc" name="Devil Warrior"> <npc id="26258" level="108" type="Monster" name="Devil Warrior">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3149,13 +3141,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>ZAKEN_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="17" /> <radius normal="17" />
<height normal="44" /> <height normal="44" />
</collision> </collision>
</npc> </npc>
<npc id="26259" level="85" type="Npc" name="Devil Dolores"> <npc id="26259" level="108" type="Monster" name="Devil Dolores">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3168,13 +3165,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>ZAKEN_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="14" /> <radius normal="14" />
<height normal="38" /> <height normal="38" />
</collision> </collision>
</npc> </npc>
<npc id="26260" level="85" type="Npc" name="Blader"> <npc id="26260" level="108" type="Monster" name="Blader">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3187,35 +3189,46 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>ZAKEN_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="17" /> <radius normal="17" />
<height normal="55" /> <height normal="55" />
</collision> </collision>
</npc> </npc>
<npc id="26261" level="108" type="Monster" name="Tiat"> <npc id="26261" level="108" type="RaidBoss" name="Tiat">
<race>DRAGON</race> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="3766456368864" sp="3389803344" raidPoints="21" /> <acquire exp="3766456368864" sp="3389803344" raidPoints="21" />
<stats str="164" int="188" dex="55" wit="78" con="111" men="149"> <stats str="164" int="188" dex="55" wit="78" con="111" men="149">
<vitals hp="81988388.9122218" hpRegen="10.5" mp="54532.967032967" mpRegen="3.6" /> <vitals hp="126889330.100" hpRegen="470.5528213" mp="88540.925" mpRegen="3.3" />
<attack physical="318573.0144" magical="228464.7134" random="30" critical="4.75" accuracy="4.75" attackSpeed="250" type="SWORD" range="40" distance="80" width="120" />
<defence physical="36935.17502" magical="18028.22092" />
<speed> <speed>
<walk ground="80" /> <walk ground="80" />
<run ground="300" /> <run ground="300" />
</speed> </speed>
<attack physical="700940.567009664" magical="819.655878366979" critical="4.75" attackSpeed="253" range="40" />
<defence physical="12373.6040609137" magical="3595.38938219141" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<skillList> <ai type="BALANCED" clanHelpRange="2000" aggroRange="2000">
<skill id="4416" level="10" /> <!-- Dragons --> <clanList>
<skill id="5462" level="1" /> <!-- Fire Attack --> <clan>TIAT_TOH</clan>
<skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance --> </clanList>
</skillList> </ai>
<collision> <collision>
<radius normal="55" /> <radius normal="55" />
<height normal="104" /> <height normal="104" />
</collision> </collision>
<skillList>
<skill id="4416" level="1" /> <!-- Undead -->
<skill id="5467" level="1" /> <!-- Dark Attack -->
<skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance -->
</skillList>
<dropLists> <dropLists>
<drop> <drop>
<item id="46507" min="1" max="1" chance="8.331" /> <!-- Lionel's Soul Crystal Lv. 4 --> <item id="46507" min="1" max="1" chance="8.331" /> <!-- Lionel's Soul Crystal Lv. 4 -->
@@ -3241,12 +3254,13 @@
</drop> </drop>
</dropLists> </dropLists>
</npc> </npc>
<npc id="26262" level="85" type="Npc" name="Dragontroop Spellshifter"> <npc id="26262" level="108" type="Monster" name="Dragontroop Spellshifter">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="43" /> <walk ground="43" />
<run ground="230" /> <run ground="230" />
@@ -3254,38 +3268,50 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>TIAT_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="29" /> <radius normal="29" />
<height normal="49.9" /> <height normal="49.9" />
</collision> </collision>
</npc> </npc>
<npc id="26263" level="85" type="Npc" name="Dragontroop Royal Guard Captain"> <npc id="26263" level="108" type="Monster" name="Dragontroop Royal Guard Captain">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="100" /> <walk ground="43" />
<run ground="230" /> <run ground="230" />
</speed> </speed>
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>TIAT_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="40" /> <radius normal="40" />
<height normal="55" /> <height normal="55" />
</collision> </collision>
</npc> </npc>
<npc id="26264" level="85" type="Npc" name="Dragontroop Lancer"> <npc id="26264" level="108" type="Monster" name="Dragontroop Lancer">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<equipment rhand="13843" /> <equipment rhand="13843" />
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="89" /> <walk ground="89" />
<run ground="230" /> <run ground="230" />
@@ -3293,18 +3319,24 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>TIAT_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="25" /> <radius normal="25" />
<height normal="46.5" /> <height normal="46.5" />
</collision> </collision>
</npc> </npc>
<npc id="26265" level="85" type="Npc" name="Dragontroop Berserker"> <npc id="26265" level="108" type="Monster" name="Dragontroop Berserker">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="100" /> <walk ground="100" />
<run ground="230" /> <run ground="230" />
@@ -3312,13 +3344,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>TIAT_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="50" /> <radius normal="50" />
<height normal="55" /> <height normal="55" />
</collision> </collision>
</npc> </npc>
<npc id="26266" level="108" type="RaidBoss" name="Tauti"> <npc id="26266" level="125" type="RaidBoss" name="Tauti">
<race>DEMONIC</race> <race>DEMONIC</race>
<sex>MALE</sex> <sex>MALE</sex>
<acquire exp="3766456368864" sp="3389803344" raidPoints="21" /> <acquire exp="3766456368864" sp="3389803344" raidPoints="21" />
@@ -3341,37 +3378,13 @@
<skill id="5465" level="1" /> <!-- Earth Attack --> <skill id="5465" level="1" /> <!-- Earth Attack -->
<skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance --> <skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance -->
</skillList> </skillList>
<dropLists>
<drop>
<item id="46477" min="1" max="1" chance="8.345" /> <!-- Leona's Soul Crystal Lv. 4 -->
<item id="46492" min="1" max="1" chance="8.344" /> <!-- Pantheon's Soul Crystal Lv. 4 -->
<item id="46507" min="1" max="1" chance="8.31" /> <!-- Lionel's Soul Crystal Lv. 4 -->
<item id="46493" min="1" max="1" chance="7.825" /> <!-- Pantheon's Soul Crystal Lv. 5 -->
<item id="46478" min="1" max="1" chance="7.817" /> <!-- Leona's Soul Crystal Lv. 5 -->
<item id="46508" min="1" max="1" chance="7.772" /> <!-- Lionel's Soul Crystal Lv. 5 -->
<item id="46509" min="1" max="1" chance="6.486" /> <!-- Lionel's Soul Crystal Lv. 6 -->
<item id="46494" min="1" max="1" chance="6.481" /> <!-- Pantheon's Soul Crystal Lv. 6 -->
<item id="46479" min="1" max="1" chance="6.373" /> <!-- Leona's Soul Crystal Lv. 6 -->
<item id="46447" min="1" max="1" chance="5.637" /> <!-- Kain's Soul Crystal Lv. 4 -->
<item id="46462" min="1" max="1" chance="5.557" /> <!-- Mermoden's Soul Crystal Lv. 4 -->
<item id="46448" min="1" max="1" chance="5.34" /> <!-- Kain's Soul Crystal Lv. 5 -->
<item id="46463" min="1" max="1" chance="5.246" /> <!-- Mermoden's Soul Crystal Lv. 5 -->
<item id="46449" min="1" max="1" chance="4.292" /> <!-- Kain's Soul Crystal Lv. 6 -->
<item id="46464" min="1" max="1" chance="4.277" /> <!-- Mermoden's Soul Crystal Lv. 6 -->
<item id="46510" min="1" max="1" chance="2.317" /> <!-- Lionel's Soul Crystal Lv. 7 -->
<item id="46480" min="1" max="1" chance="2.262" /> <!-- Leona's Soul Crystal Lv. 7 -->
<item id="46495" min="1" max="1" chance="2.254" /> <!-- Pantheon's Soul Crystal Lv. 7 -->
<item id="46450" min="1" max="1" chance="1.587" /> <!-- Kain's Soul Crystal Lv. 7 -->
<item id="46465" min="1" max="1" chance="1.539" /> <!-- Mermoden's Soul Crystal Lv. 7 -->
</drop>
</dropLists>
</npc> </npc>
<npc id="26267" level="108" type="RaidBoss" name="Mary Reed"> <npc id="26267" level="120" type="RaidBoss" name="Mary Reed">
<race>UNDEAD</race> <race>UNDEAD</race>
<sex>MALE</sex> <sex>MALE</sex>
<acquire exp="3766456368864" sp="3389803344" raidPoints="21" /> <acquire exp="3766456368864" sp="3389803344" raidPoints="21" />
<stats str="164" int="188" dex="55" wit="78" con="111" men="149"> <stats str="164" int="188" dex="55" wit="78" con="111" men="149">
<vitals hp="81988388.9122218" hpRegen="470.5528213" mp="54532.967032967" mpRegen="3.3" /> <vitals hp="123163664.15391" hpRegen="470.5528213" mp="88540.925" mpRegen="3.3" />
<attack physical="318573.0144" magical="228464.7134" random="30" critical="4.75" accuracy="4.75" attackSpeed="250" type="SWORD" range="40" distance="80" width="120" /> <attack physical="318573.0144" magical="228464.7134" random="30" critical="4.75" accuracy="4.75" attackSpeed="250" type="SWORD" range="40" distance="80" width="120" />
<defence physical="36935.17502" magical="18028.22092" /> <defence physical="36935.17502" magical="18028.22092" />
<speed> <speed>
@@ -3380,6 +3393,11 @@
</speed> </speed>
</stats> </stats>
<status attackable="true" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="2000" aggroRange="2000">
<clanList>
<clan>MARY_REED_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="22" /> <radius normal="22" />
<height normal="62" /> <height normal="62" />
@@ -3389,37 +3407,14 @@
<skill id="5464" level="1" /> <!-- Wind Attack --> <skill id="5464" level="1" /> <!-- Wind Attack -->
<skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance --> <skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance -->
</skillList> </skillList>
<dropLists>
<drop>
<item id="46507" min="1" max="1" chance="8.336" /> <!-- Lionel's Soul Crystal Lv. 4 -->
<item id="46492" min="1" max="1" chance="8.324" /> <!-- Pantheon's Soul Crystal Lv. 4 -->
<item id="46477" min="1" max="1" chance="8.315" /> <!-- Leona's Soul Crystal Lv. 4 -->
<item id="46493" min="1" max="1" chance="7.873" /> <!-- Pantheon's Soul Crystal Lv. 5 -->
<item id="46508" min="1" max="1" chance="7.846" /> <!-- Lionel's Soul Crystal Lv. 5 -->
<item id="46478" min="1" max="1" chance="7.835" /> <!-- Leona's Soul Crystal Lv. 5 -->
<item id="46509" min="1" max="1" chance="6.504" /> <!-- Lionel's Soul Crystal Lv. 6 -->
<item id="46479" min="1" max="1" chance="6.502" /> <!-- Leona's Soul Crystal Lv. 6 -->
<item id="46494" min="1" max="1" chance="6.379" /> <!-- Pantheon's Soul Crystal Lv. 6 -->
<item id="46462" min="1" max="1" chance="5.62" /> <!-- Mermoden's Soul Crystal Lv. 4 -->
<item id="46447" min="1" max="1" chance="5.542" /> <!-- Kain's Soul Crystal Lv. 4 -->
<item id="46463" min="1" max="1" chance="5.269" /> <!-- Mermoden's Soul Crystal Lv. 5 -->
<item id="46448" min="1" max="1" chance="5.223" /> <!-- Kain's Soul Crystal Lv. 5 -->
<item id="46464" min="1" max="1" chance="4.364" /> <!-- Mermoden's Soul Crystal Lv. 6 -->
<item id="46449" min="1" max="1" chance="4.355" /> <!-- Kain's Soul Crystal Lv. 6 -->
<item id="46510" min="1" max="1" chance="2.315" /> <!-- Lionel's Soul Crystal Lv. 7 -->
<item id="46495" min="1" max="1" chance="2.307" /> <!-- Pantheon's Soul Crystal Lv. 7 -->
<item id="46480" min="1" max="1" chance="2.253" /> <!-- Leona's Soul Crystal Lv. 7 -->
<item id="46465" min="1" max="1" chance="1.604" /> <!-- Mermoden's Soul Crystal Lv. 7 -->
<item id="46450" min="1" max="1" chance="1.485" /> <!-- Kain's Soul Crystal Lv. 7 -->
</drop>
</dropLists>
</npc> </npc>
<npc id="26268" level="85" type="Npc" name="Shield Master"> <npc id="26268" level="120" type="Monster" name="Shield Master">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="60" /> <walk ground="60" />
<run ground="230" /> <run ground="230" />
@@ -3427,18 +3422,24 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>MARY_REED_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="18" /> <radius normal="18" />
<height normal="34.5" /> <height normal="34.5" />
</collision> </collision>
</npc> </npc>
<npc id="26269" level="85" type="Npc" name="Spear Master"> <npc id="26269" level="120" type="Monster" name="Spear Master">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="60" /> <walk ground="60" />
<run ground="230" /> <run ground="230" />
@@ -3446,19 +3447,25 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>MARY_REED_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="18" /> <radius normal="18" />
<height normal="35" /> <height normal="35" />
</collision> </collision>
</npc> </npc>
<npc id="26270" level="85" type="Npc" name="Bow Master"> <npc id="26270" level="120" type="Monster" name="Bow Master">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<equipment rhand="15302" /> <equipment rhand="15302" />
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="60" /> <walk ground="60" />
<run ground="230" /> <run ground="230" />
@@ -3466,18 +3473,24 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>MARY_REED_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="14" /> <radius normal="14" />
<height normal="26.5" /> <height normal="26.5" />
</collision> </collision>
</npc> </npc>
<npc id="26271" level="85" type="Npc" name="Magic Master"> <npc id="26271" level="120" type="Monster" name="Magic Master">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="60" /> <walk ground="60" />
<run ground="230" /> <run ground="230" />
@@ -3485,7 +3498,12 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>MARY_REED_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="12" /> <radius normal="12" />
<height normal="33.5" /> <height normal="33.5" />

View File

@@ -142,6 +142,7 @@
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:token"> <xs:restriction base="xs:token">
<xs:enumeration value="CommandChannel" /> <xs:enumeration value="CommandChannel" />
<xs:enumeration value="CommandChannelLeaderSameClan" />
<xs:enumeration value="CommandChannelLeader" /> <xs:enumeration value="CommandChannelLeader" />
<xs:enumeration value="Party" /> <xs:enumeration value="Party" />
<xs:enumeration value="PartyLeader" /> <xs:enumeration value="PartyLeader" />

View File

@@ -0,0 +1,51 @@
/*
* 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 org.l2jmobius.gameserver.model.instancezone.conditions;
import org.l2jmobius.gameserver.model.AbstractPlayerGroup;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate;
import org.l2jmobius.gameserver.network.SystemMessageId;
/**
* Command channel leader same clan condition
* @author CostyKiller
*/
public class ConditionCommandChannelLeaderSameClan extends Condition
{
public ConditionCommandChannelLeaderSameClan(InstanceTemplate template, StatSet parameters, boolean onlyLeader, boolean showMessageAndHtml)
{
super(template, parameters, true, showMessageAndHtml);
setSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER);
}
@Override
public boolean test(PlayerInstance player, Npc npc)
{
final AbstractPlayerGroup group = player.getCommandChannel();
return ((group != null) && group.isLeader(player) && group.forEachMember(m ->
{
if (m.getClan() == player.getClan())
{
return true;
}
return false;
}));
}
}

View File

@@ -38590,11 +38590,11 @@ public class NpcStringId
@ClientString(id = 1803406, message = "See? There's nothing you and I can't do when we're together!") @ClientString(id = 1803406, message = "See? There's nothing you and I can't do when we're together!")
public static NpcStringId SEE_THERE_S_NOTHING_YOU_AND_I_CAN_T_DO_WHEN_WE_RE_TOGETHER; public static NpcStringId SEE_THERE_S_NOTHING_YOU_AND_I_CAN_T_DO_WHEN_WE_RE_TOGETHER;
@ClientString(id = 1803407, message = "The challenge for the Throne of Heroes will begin shortly. Please get ready.") @ClientString(id = 1803407, message = "The challenge for the Throne of Heroes - Goldberg will begin shortly.\nPlease get ready, heroes!")
public static NpcStringId THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_WILL_BEGIN_SHORTLY_PLEASE_GET_READY; public static NpcStringId THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_GOLDBERG_WILL_BEGIN_SHORTLY_PLEASE_GET_READY;
@ClientString(id = 1803408, message = "The first challenge will begin in 10 seconds.") @ClientString(id = 1803408, message = "The fighting against Goldberg will begin in 10 seconds.")
public static NpcStringId THE_FIRST_CHALLENGE_WILL_BEGIN_IN_10_SECONDS; public static NpcStringId THE_FIGHTING_AGAINST_GOLDBERG_WILL_BEGIN_IN_10_SECONDS;
@ClientString(id = 1803409, message = "5 seconds") @ClientString(id = 1803409, message = "5 seconds")
public static NpcStringId FIVE_SECONDS; public static NpcStringId FIVE_SECONDS;
@@ -38611,41 +38611,41 @@ public class NpcStringId
@ClientString(id = 1803413, message = "1 second") @ClientString(id = 1803413, message = "1 second")
public static NpcStringId ONE_SECOND_2; public static NpcStringId ONE_SECOND_2;
@ClientString(id = 1803414, message = "The first challenge begins.") @ClientString(id = 1803414, message = "Goldberg appears.")
public static NpcStringId THE_FIRST_CHALLENGE_BEGINS; public static NpcStringId GOLDBERG_APPEARS;
@ClientString(id = 1803415, message = "Darion frees himself from the restraints that suppressed him and reveals his true power.") @ClientString(id = 1803415, message = "Darion frees himself from the restraints that suppressed him and reveals his true power.")
public static NpcStringId DARION_FREES_HIMSELF_FROM_THE_RESTRAINTS_THAT_SUPPRESSED_HIM_AND_REVEALS_HIS_TRUE_POWER; public static NpcStringId DARION_FREES_HIMSELF_FROM_THE_RESTRAINTS_THAT_SUPPRESSED_HIM_AND_REVEALS_HIS_TRUE_POWER;
@ClientString(id = 1803416, message = "The first challenge has been completed successfully. The second challenge will begin shortly.") @ClientString(id = 1803416, message = "The challenge for the Throne of Heroes - Mary Reed will begin shortly.\nPlease get ready, heroes!")
public static NpcStringId THE_FIRST_CHALLENGE_HAS_BEEN_COMPLETED_SUCCESSFULLY_THE_SECOND_CHALLENGE_WILL_BEGIN_SHORTLY; public static NpcStringId THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_MARY_REED_WILL_BEGIN_SHORTLY;
@ClientString(id = 1803417, message = "The second challenge will begin in 10 seconds.") @ClientString(id = 1803417, message = "The fighting against Mary Reed will begin in 10 seconds.")
public static NpcStringId THE_SECOND_CHALLENGE_WILL_BEGIN_IN_10_SECONDS; public static NpcStringId THE_FIGHTING_AGAINST_MARY_REED_WILL_BEGIN_IN_10_SECONDS;
@ClientString(id = 1803418, message = "The second challenge will begin.") @ClientString(id = 1803418, message = "Mary Reed greets heroes.")
public static NpcStringId THE_SECOND_CHALLENGE_WILL_BEGIN; public static NpcStringId MARY_REED_GREETS_HEROES;
@ClientString(id = 1803419, message = "Goldberg will summon his minions in 5 seconds.") @ClientString(id = 1803419, message = "Goldberg summons his minions.")
public static NpcStringId GOLDBERG_WILL_SUMMON_HIS_MINIONS_IN_5_SECONDS; public static NpcStringId GOLDBERG_SUMMONS_HIS_MINIONS;
@ClientString(id = 1803420, message = "Goldberg brings out all of the power within him.") @ClientString(id = 1803420, message = "Goldberg brings out all of the power within him.")
public static NpcStringId GOLDBERG_BRINGS_OUT_ALL_OF_THE_POWER_WITHIN_HIM; public static NpcStringId GOLDBERG_BRINGS_OUT_ALL_OF_THE_POWER_WITHIN_HIM;
@ClientString(id = 1803421, message = "The second challenge has been completed successfully. The third challenge will begin shortly.") @ClientString(id = 1803421, message = "The challenge for the Throne of Heroes - Tauti will begin shortly.\nPlease get ready, heroes!")
public static NpcStringId THE_SECOND_CHALLENGE_HAS_BEEN_COMPLETED_SUCCESSFULLY_THE_THIRD_CHALLENGE_WILL_BEGIN_SHORTLY; public static NpcStringId THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_TAUTI_WILL_BEGIN_SHORTLY;
@ClientString(id = 1803422, message = "The third challenge will begin in 10 seconds.") @ClientString(id = 1803422, message = "The fighting against Tauti will begin in 10 seconds.")
public static NpcStringId THE_THIRD_CHALLENGE_WILL_BEGIN_IN_10_SECONDS; public static NpcStringId THE_FIGHTING_AGAINST_TAUTI_WILL_BEGIN_IN_10_SECONDS;
@ClientString(id = 1803423, message = "The third challenge will begin.") @ClientString(id = 1803423, message = "Tauti is ready to fight.")
public static NpcStringId THE_THIRD_CHALLENGE_WILL_BEGIN; public static NpcStringId TAUTI_IS_READY_TO_FIGHT;
@ClientString(id = 1803424, message = "The third challenge has been completed successfully. The fourth challenge will begin in a moment.") @ClientString(id = 1803424, message = "Mary Reed, they are just insects. Haha! Show them your true power!")
public static NpcStringId THE_THIRD_CHALLENGE_HAS_BEEN_COMPLETED_SUCCESSFULLY_THE_FOURTH_CHALLENGE_WILL_BEGIN_IN_A_MOMENT; public static NpcStringId MARY_REED_THEY_ARE_JUST_INSECTS_HAHA_SHOW_THEM_YOUR_TRUE_POWER;
@ClientString(id = 1803425, message = "Zaken summons monsters from another world.") @ClientString(id = 1803425, message = "Do you think you can evade my strike? Take that!")
public static NpcStringId ZAKEN_SUMMONS_MONSTERS_FROM_ANOTHER_WORLD; public static NpcStringId DO_YOU_THINK_YOU_CAN_EVADE_MY_STRIKE_TAKE_THAT;
@ClientString(id = 1803426, message = "Your blood is mine!") @ClientString(id = 1803426, message = "Your blood is mine!")
public static NpcStringId YOUR_BLOOD_IS_MINE; public static NpcStringId YOUR_BLOOD_IS_MINE;
@@ -38656,11 +38656,11 @@ public class NpcStringId
@ClientString(id = 1803428, message = "Zaken reveals his hidden power.") @ClientString(id = 1803428, message = "Zaken reveals his hidden power.")
public static NpcStringId ZAKEN_REVEALS_HIS_HIDDEN_POWER; public static NpcStringId ZAKEN_REVEALS_HIS_HIDDEN_POWER;
@ClientString(id = 1803429, message = "Tiat summons his minions.") @ClientString(id = 1803429, message = "Mary Reed, these brats are pretty strong. I shall rest up a bit.")
public static NpcStringId TIAT_SUMMONS_HIS_MINIONS; public static NpcStringId MARY_REED_THESE_BRATS_ARE_PRETTY_STRONG_I_SHALL_REST_UP_A_BIT;
@ClientString(id = 1803430, message = "Tiat reveals his dignity.") @ClientString(id = 1803430, message = "Mary Reed, these brats are pretty strong. Watch out!")
public static NpcStringId TIAT_REVEALS_HIS_DIGNITY; public static NpcStringId MARY_REED_THESE_BRATS_ARE_PRETTY_STRONG_WATCH_OUT;
@ClientString(id = 1803431, message = "Tauti summons his mechanical contraption.") @ClientString(id = 1803431, message = "Tauti summons his mechanical contraption.")
public static NpcStringId TAUTI_SUMMONS_HIS_MECHANICAL_CONTRAPTION; public static NpcStringId TAUTI_SUMMONS_HIS_MECHANICAL_CONTRAPTION;
@@ -38716,8 +38716,8 @@ public class NpcStringId
@ClientString(id = 1803448, message = "Antharas has suffered critical injuries.") @ClientString(id = 1803448, message = "Antharas has suffered critical injuries.")
public static NpcStringId ANTHARAS_HAS_SUFFERED_CRITICAL_INJURIES; public static NpcStringId ANTHARAS_HAS_SUFFERED_CRITICAL_INJURIES;
@ClientString(id = 1803449, message = "Mary Reed summons her minions.") @ClientString(id = 1803449, message = "Zaken! Your time has come! Kill them all!")
public static NpcStringId MARY_REED_SUMMONS_HER_MINIONS; public static NpcStringId MARY_REED_SUMMONS_ZAKEN;
@ClientString(id = 1803450, message = "Mary Reed reveals her true power.") @ClientString(id = 1803450, message = "Mary Reed reveals her true power.")
public static NpcStringId MARY_REED_REVEALS_HER_TRUE_POWER; public static NpcStringId MARY_REED_REVEALS_HER_TRUE_POWER;

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Throne of Heroes - Goldberg -->
<instance id="307" maxWorlds="100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/instance.xsd">
<time duration="60" empty="1" />
<locations>
<enter type="FIXED">
<location x="11722" y="-85014" z="-10972" /> <!-- battle location -->
<!-- <location x="11715" y="-84303" z="-11030" /> behind the door -->
</enter>
<exit type="ORIGIN" />
</locations>
<conditions>
<condition type="Party" showMessageAndHtml="true">
<param name="html" value="condNoGroup.html" />
</condition>
<condition type="CommandChannel" showMessageAndHtml="true">
<param name="html" value="condNoGroup.html" />
</condition>
<condition type="CommandChannelLeaderSameClan" />
<condition type="GroupMin">
<param name="limit" value="4" />
</condition>
<condition type="GroupMax">
<param name="html" value="condBigGroup.html"/>
<param name="limit" value="100" />
</condition>
<condition type="Level" showMessageAndHtml="true">
<param name="html" value="condNoLevel.html" />
<param name="min" value="110" />
</condition>
<condition type="Distance" />
<condition type="Reenter" />
</conditions>
<reenter apply="ON_FINISH">
<reset hour="6" minute="30" />
</reenter>
<spawnlist>
<group name="GOLDBERG" spawnByDefault="false">
<npc id="26250" x="11704" y="-86511" z="-10929" heading="0" /> <!-- Goldberg -->
</group>
<group name="GOLDBERG_MINIONS" spawnByDefault="false">
<npc id="26251" x="11797" y="-86046" z="-10964" heading="0" respawnTime="1min" /> <!-- Handy Cannon Gunner -->
<npc id="26252" x="11704" y="-86904" z="-10964" heading="0" respawnTime="1min" /> <!-- Anchor Warrior -->
<npc id="26253" x="11303" y="-86510" z="-10964" heading="0" respawnTime="1min" /> <!-- Operator -->
<npc id="26254" x="12136" y="-86488" z="-10964" heading="0" respawnTime="1min" /> <!-- Axe Warrior -->
</group>
</spawnlist>
</instance>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Throne of Heroes - Mary Reed -->
<instance id="308" maxWorlds="100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/instance.xsd">
<time duration="60" empty="1" />
<locations>
<enter type="FIXED">
<location x="11722" y="-85014" z="-10972" /> <!-- battle location -->
<!-- <location x="11715" y="-84303" z="-11030" /> behind the door -->
</enter>
<exit type="ORIGIN" />
</locations>
<conditions>
<condition type="Party" showMessageAndHtml="true">
<param name="html" value="condNoGroup.html" />
</condition>
<condition type="CommandChannel" showMessageAndHtml="true">
<param name="html" value="condNoGroup.html" />
</condition>
<condition type="CommandChannelLeaderSameClan" />
<condition type="GroupMin">
<param name="limit" value="4" />
</condition>
<condition type="GroupMax">
<param name="html" value="condBigGroup.html"/>
<param name="limit" value="100" />
</condition>
<condition type="Level" showMessageAndHtml="true">
<param name="html" value="condNoLevel.html" />
<param name="min" value="110" />
</condition>
<condition type="Distance" />
<condition type="Reenter" />
</conditions>
<reenter apply="ON_FINISH">
<reset hour="6" minute="30" />
</reenter>
<spawnlist>
<group name="MARY_REED" spawnByDefault="false">
<npc id="26267" x="11704" y="-86511" z="-10929" heading="0" /> <!-- Mary Reed -->
</group>
<group name="MARY_REED_MINIONS" spawnByDefault="false">
<npc id="26268" x="11797" y="-86046" z="-10964" heading="0" respawnTime="1min" /> <!-- Shield Master -->
<npc id="26269" x="11704" y="-86904" z="-10964" heading="0" respawnTime="1min" /> <!-- Spear Master -->
<npc id="26270" x="11303" y="-86510" z="-10964" heading="0" respawnTime="1min" /> <!-- Bow Master -->
<npc id="26271" x="12136" y="-86488" z="-10964" heading="0" respawnTime="1min" /> <!-- Magic Master -->
</group>
</spawnlist>
</instance>

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Throne of Heroes - Tauti -->
<instance id="309" maxWorlds="100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/instance.xsd">
<time duration="60" empty="1" />
<locations>
<enter type="FIXED">
<location x="11722" y="-85014" z="-10972" /> <!-- battle location -->
<!-- <location x="11715" y="-84303" z="-11030" /> behind the door -->
</enter>
<exit type="ORIGIN" />
</locations>
<conditions>
<condition type="Party" showMessageAndHtml="true">
<param name="html" value="condNoGroup.html" />
</condition>
<condition type="CommandChannel" showMessageAndHtml="true">
<param name="html" value="condNoGroup.html" />
</condition>
<condition type="CommandChannelLeaderSameClan" />
<condition type="GroupMin">
<param name="limit" value="4" />
</condition>
<condition type="GroupMax">
<param name="html" value="condBigGroup.html"/>
<param name="limit" value="100" />
</condition>
<condition type="Level" showMessageAndHtml="true">
<param name="html" value="condNoLevel.html" />
<param name="min" value="110" />
</condition>
<condition type="Distance" />
<condition type="Reenter" />
</conditions>
<reenter apply="ON_FINISH">
<reset hour="6" minute="30" />
</reenter>
<spawnlist>
<group name="TAUTI" spawnByDefault="false">
<npc id="26266" x="11704" y="-86511" z="-10929" heading="0" /> <!-- Tauti -->
</group>
</spawnlist>
</instance>

View File

@@ -0,0 +1,9 @@
<html><body>Roiental:<br>
Heroes whose strength grows day after day can put their abilities to the test and ascend the renovated Throne of Heroes.<br>
If you want to challenge Goldberg, you need to be a member of a <font color="LEVEL">Lv. 7 clan</font>. To fight Mary Reed your clan needs to be at least <font color="LEVEL">Lv. 10</font>, while Tauti can only be confronted by a <font color="LEVEL">Lv. 13 clan</font>.<br>
The request to enter the Throne of Heroes can only be submitted by the clan leader of a clan member who has been granted the requisite authority.<br>
So, what would you like?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Roiental enterGoldberg">Go to Throne of Heroes - Goldberg</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Roiental enterMaryReed">Go to Throne of Heroes - Mary Reed</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Roiental enterTauti">Go to Throne of Heroes - Tauti</Button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Roiental:<br>
Heroes whose strength grows day after day can put their abilities to the test and ascend the renovated Throne of Heroes.<br>
If you want to challenge Goldberg, you need to be a member of a <font color="LEVEL">Lv. 7 clan</font>.<br>
The request to enter the Throne of Heroes can only be submitted by the clan leader of a clan member who has been granted the requisite authority.<br>
So, would you like to enter?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ThroneOfHeroesGoldberg enterInstance">Yes go to Throne of Heroes - Goldberg</Button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Roiental:<br>
Heroes whose strength grows day after day can put their abilities to the test and ascend the renovated Throne of Heroes.<br>
If you want to challenge Mary Reed your clan needs to be at least <font color="LEVEL">Lv. 10</font>.<br>
The request to enter the Throne of Heroes can only be submitted by the clan leader of a clan member who has been granted the requisite authority.<br>
So, would you like to enter?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ThroneOfHeroesMaryReed enterInstance">Yes go to Throne of Heroes - Mary Reed</Button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Roiental:<br>
Heroes whose strength grows day after day can put their abilities to the test and ascend the renovated Throne of Heroes.<br>
If you want to challenge Tauti, you need to be a member of a <font color="LEVEL">Lv. 13 clan</font>.<br>
The request to enter the Throne of Heroes can only be submitted by the clan leader of a clan member who has been granted the requisite authority.<br>
So, would you like to enter?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ThroneOfHeroesTauti enterInstance">Yes go to Throne of Heroes - Tauti</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
Your party members are participating in battle. I'll move you to them.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ThroneOfHeroesGoldberg reenterInstance">"Thanks!"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
Your party members are participating in battle. I'll move you to them.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ThroneOfHeroesMaryReed reenterInstance">"Thanks!"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
Your party members are participating in battle. I'll move you to them.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ThroneOfHeroesTauti reenterInstance">"Thanks!"</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
You are not a clan member or your clan hasn't reached Lv. 7 yet.<br>
(The Throne of Heroes can only be ascended by members of a command channel from the same clan (4-100 participants). The clan must have reached Lv. 7.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
You are not a clan member or your clan hasn't reached Lv. 10 yet.<br>
(The Throne of Heroes can only be ascended by members of a command channel from the same clan (4-100 participants). The clan must have reached Lv. 10.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
You are not a clan member or your clan hasn't reached Lv. 13 yet.<br>
(The Throne of Heroes can only be ascended by members of a command channel from the same clan (4-100 participants). The clan must have reached Lv. 13.)
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Roiental:<br>
Your clan mates already challenged one of the Throne of Heroes raids today.<br>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
You are not strong enough yet.<br>
(The Throne of Heroes can only be ascended by characters of level 110 or above.)
</body></html>

View File

@@ -0,0 +1,142 @@
/*
* 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 ai.areas.Rune.Roiental;
import org.l2jmobius.gameserver.instancemanager.InstanceManager;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import ai.AbstractNpcAI;
/**
* Roiental AI.
* @author CostyKiller
*/
public class Roiental extends AbstractNpcAI
{
// NPCs
private static final int ROIENTAL = 34571;
// Misc
private static final int TOH_GB_TEMPLATE_ID = 307; // Throne of Heroes - Goldberg
private static final int TOH_MR_TEMPLATE_ID = 308; // Throne of Heroes - Mary Reed
private static final int TOH_TA_TEMPLATE_ID = 309; // Throne of Heroes - Tauti
private static final int MIN_LVL = 110;
private static final int CLAN_MIN_LVL_GB = 7;
private static final int CLAN_MIN_LVL_MR = 10;
private static final int CLAN_MIN_LVL_TA = 13;
private Roiental()
{
addStartNpc(ROIENTAL);
addFirstTalkId(ROIENTAL);
addTalkId(ROIENTAL);
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
String htmltext = null;
if (event.equals("enterGoldberg"))
{
if (player.getLevel() < MIN_LVL)
{
htmltext = "Roiental-NoLevel.html";
}
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_GB))
{
htmltext = "Roiental-03a.html";
}
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE"))
{
htmltext = "Roiental-AlreadyDone.html";
}
else
{
htmltext = "Roiental-01a.html";
}
}
if (event.equals("enterMaryReed"))
{
if (player.getLevel() < MIN_LVL)
{
htmltext = "Roiental-NoLevel.html";
}
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_MR))
{
htmltext = "Roiental-03b.html";
}
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE"))
{
htmltext = "Roiental-AlreadyDone.html";
}
else
{
htmltext = "Roiental-01b.html";
}
}
if (event.equals("enterTauti"))
{
if (player.getLevel() < MIN_LVL)
{
htmltext = "Roiental-NoLevel.html";
}
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_TA))
{
htmltext = "Roiental-03c.html";
}
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE"))
{
htmltext = "Roiental-AlreadyDone.html";
}
else
{
htmltext = "Roiental-01c.html";
}
}
return htmltext;
}
@Override
public String onFirstTalk(Npc npc, PlayerInstance player)
{
String htmltext = null;
final Instance instance = InstanceManager.getInstance().getPlayerInstance(player, false);
if ((instance != null) && ((instance.getTemplateId() == TOH_GB_TEMPLATE_ID)))
{
htmltext = "Roiental-02a.html";
}
else if ((instance != null) && ((instance.getTemplateId() == TOH_MR_TEMPLATE_ID)))
{
htmltext = "Roiental-02b.html";
}
else if ((instance != null) && ((instance.getTemplateId() == TOH_TA_TEMPLATE_ID)))
{
htmltext = "Roiental-02c.html";
}
else
{
htmltext = "Roiental-01.html";
}
return htmltext;
}
public static void main(String[] args)
{
new Roiental();
}
}

View File

@@ -0,0 +1,210 @@
/*
* 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.ThroneOfHeroes;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import instances.AbstractInstance;
/**
* @author CostyKiller // https://www.youtube.com/watch?v=fJWAWU5XpZk
*/
public class ThroneOfHeroesGoldberg extends AbstractInstance
{
// NPCs
private static final int ROIENTAL = 34571;
// Monsters
private static final int GOLDBERG = 26250;
private static final int[] GOLDBERG_MINIONS =
{
26251, // Handy Cannon Gunner
26252, // Anchor Warrior
26253, // Operator
26254 // Axe Warrior
};
// Throne's Treasure Chest Goldberg
private static final int TREASURE_CHEST = 26455;
// World Instance
Instance world = null;
// Misc
private static final int TEMPLATE_ID = 307;
public ThroneOfHeroesGoldberg()
{
super(TEMPLATE_ID);
addInstanceCreatedId(TEMPLATE_ID);
addStartNpc(ROIENTAL);
addTalkId(ROIENTAL);
addAttackId(GOLDBERG);
addKillId(GOLDBERG);
}
@Override
public void onInstanceCreated(Instance activeInstance, PlayerInstance player)
{
activeInstance.setStatus(0);
startQuestTimer("ANNOUNCE_RAID_START", 10000, null, player);
world = activeInstance;
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
switch (event)
{
case "enterInstance":
{
enterInstance(player, npc, TEMPLATE_ID);
startQuestTimer("ANNOUNCE_RAID_PREP", 20000, null, player);
break;
}
case "reenterInstance":
{
final Instance activeInstance = getPlayerInstance(player);
if (isInInstance(activeInstance))
{
enterInstance(player, npc, activeInstance.getTemplateId());
}
}
case "ANNOUNCE_RAID_START":
{
showOnScreenMsg(world, NpcStringId.THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_GOLDBERG_WILL_BEGIN_SHORTLY_PLEASE_GET_READY, ExShowScreenMessage.TOP_CENTER, 5000, true);
startQuestTimer("ANNOUNCE_RAID_PREP", 15000, null, player);
break;
}
case "ANNOUNCE_RAID_PREP":
{
showOnScreenMsg(world, NpcStringId.THE_FIGHTING_AGAINST_GOLDBERG_WILL_BEGIN_IN_10_SECONDS, ExShowScreenMessage.TOP_CENTER, 5000, true);
startQuestTimer("ANNOUNCE_5", 5000, null, player);
break;
}
case "ANNOUNCE_5":
{
showOnScreenMsg(world, NpcStringId.FIVE_SECONDS, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_4", 1000, null, player);
break;
}
case "ANNOUNCE_4":
{
showOnScreenMsg(world, NpcStringId.FOUR_SECONDS, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_3", 1000, null, player);
break;
}
case "ANNOUNCE_3":
{
showOnScreenMsg(world, NpcStringId.THREE_SECONDS_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_2", 1000, null, player);
break;
}
case "ANNOUNCE_2":
{
showOnScreenMsg(world, NpcStringId.TWO_SECONDS_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_1", 1000, null, player);
break;
}
case "ANNOUNCE_1":
{
showOnScreenMsg(world, NpcStringId.ONE_SECOND_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("SPAWN_GOLDBERG", 1000, null, player);
break;
}
case "SPAWN_GOLDBERG":
{
showOnScreenMsg(world, NpcStringId.GOLDBERG_APPEARS, ExShowScreenMessage.TOP_CENTER, 5000, true);
world.spawnGroup("GOLDBERG");
break;
}
case "SPAWN_GOLDBERG_MINIONS":
{
showOnScreenMsg(world, NpcStringId.GOLDBERG_SUMMONS_HIS_MINIONS, ExShowScreenMessage.TOP_CENTER, 5000, true);
world.spawnGroup("GOLDBERG_MINIONS");
break;
}
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
final int hpPer = npc.getCurrentHpPercent();
final int maxHp = npc.getMaxHp();
if (npc.getId() == GOLDBERG)
{
if ((hpPer < (maxHp * 0.50)) && npc.isScriptValue(0))
{
startQuestTimer("SPAWN_GOLDBERG_MINIONS", 10000, npc, null);
npc.setScriptValue(1);
}
else if ((hpPer < (maxHp * 0.30)) && npc.isScriptValue(1))
{
showOnScreenMsg(world, NpcStringId.GOLDBERG_BRINGS_OUT_ALL_OF_THE_POWER_WITHIN_HIM, ExShowScreenMessage.TOP_CENTER, 5000, true);
npc.setScriptValue(2);
}
}
}
return super.onAttack(npc, attacker, damage, isSummon);
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
if (npc.getId() == GOLDBERG)
{
// Despawn minions and stop timer
cancelQuestTimer("SPAWN_GOLDBERG_MINIONS", npc, killer);
world.getAliveNpcs(GOLDBERG_MINIONS).forEach(beast -> beast.doDie(null));
// Spawn treasure chests
boolean eightCCMembersOrMore = ((killer.getCommandChannel() != null) && (killer.getCommandChannel().getMemberCount() >= 8));
if (killer.isGM() || eightCCMembersOrMore)
{
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
}
else
{
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
}
// Finish instance
world.finishInstance(2);
// Set clan variable
killer.getClan().getVariables().set("TOH_DONE", Chronos.currentTimeMillis());
killer.getClan().getVariables().storeMe();
}
}
return super.onKill(npc, killer, isSummon);
}
public static void main(String[] args)
{
new ThroneOfHeroesGoldberg();
}
}

View File

@@ -0,0 +1,226 @@
/*
* 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.ThroneOfHeroes;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import instances.AbstractInstance;
/**
* @author CostyKiller
*/
public class ThroneOfHeroesMaryReed extends AbstractInstance
{
// NPCs
private static final int ROIENTAL = 34571;
// Monsters
private static final int MARY_REED = 26267;
private static final int[] MARY_REED_MINIONS =
{
// add Zaken as minion
26268, // Shield Master -->
26269, // Spear Master -->
26270, // Bow Master -->
26271 // Magic Master -->
};
// Throne's Treasure Chest Mary Reed
private static final int TREASURE_CHEST = 26456;
// World Instance
Instance world = null;
// Misc
private static final int TEMPLATE_ID = 308;
// Npc Dialogs
private static final NpcStringId[] MINIONS_MESSAGES =
{
NpcStringId.MARY_REED_THEY_ARE_JUST_INSECTS_HAHA_SHOW_THEM_YOUR_TRUE_POWER,
NpcStringId.MARY_REED_THESE_BRATS_ARE_PRETTY_STRONG_I_SHALL_REST_UP_A_BIT,
NpcStringId.MARY_REED_THESE_BRATS_ARE_PRETTY_STRONG_WATCH_OUT,
NpcStringId.MARY_REED_REVEALS_HER_TRUE_POWER
};
public ThroneOfHeroesMaryReed()
{
super(TEMPLATE_ID);
addInstanceCreatedId(TEMPLATE_ID);
addStartNpc(ROIENTAL);
addTalkId(ROIENTAL);
addAttackId(MARY_REED);
addKillId(MARY_REED);
}
@Override
public void onInstanceCreated(Instance activeInstance, PlayerInstance player)
{
activeInstance.setStatus(0);
startQuestTimer("ANNOUNCE_RAID_START", 10000, null, player);
world = activeInstance;
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
switch (event)
{
case "enterInstance":
{
enterInstance(player, npc, TEMPLATE_ID);
startQuestTimer("ANNOUNCE_RAID_PREP", 20000, null, player);
break;
}
case "reenterInstance":
{
final Instance activeInstance = getPlayerInstance(player);
if (isInInstance(activeInstance))
{
enterInstance(player, npc, activeInstance.getTemplateId());
}
}
case "ANNOUNCE_RAID_START":
{
showOnScreenMsg(world, NpcStringId.THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_MARY_REED_WILL_BEGIN_SHORTLY, ExShowScreenMessage.TOP_CENTER, 5000, true);
startQuestTimer("ANNOUNCE_RAID_PREP", 15000, null, player);
break;
}
case "ANNOUNCE_RAID_PREP":
{
showOnScreenMsg(world, NpcStringId.THE_FIGHTING_AGAINST_MARY_REED_WILL_BEGIN_IN_10_SECONDS, ExShowScreenMessage.TOP_CENTER, 5000, true);
startQuestTimer("ANNOUNCE_5", 10000, null, player);
break;
}
case "ANNOUNCE_5":
{
showOnScreenMsg(world, NpcStringId.FIVE_SECONDS, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_4", 2000, null, player);
break;
}
case "ANNOUNCE_4":
{
showOnScreenMsg(world, NpcStringId.FOUR_SECONDS, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_3", 2000, null, player);
break;
}
case "ANNOUNCE_3":
{
showOnScreenMsg(world, NpcStringId.THREE_SECONDS_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_2", 2000, null, player);
break;
}
case "ANNOUNCE_2":
{
showOnScreenMsg(world, NpcStringId.TWO_SECONDS_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_1", 2000, null, player);
break;
}
case "ANNOUNCE_1":
{
showOnScreenMsg(world, NpcStringId.ONE_SECOND_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("SPAWN_MARY_REED", 2000, null, player);
break;
}
case "SPAWN_MARY_REED":
{
showOnScreenMsg(world, NpcStringId.MARY_REED_GREETS_HEROES, ExShowScreenMessage.TOP_CENTER, 5000, true);
world.spawnGroup("MARY_REED");
break;
}
case "SPAWN_MARY_REED_MINIONS":
{
showOnScreenMsg(world, NpcStringId.MARY_REED_SUMMONS_ZAKEN, ExShowScreenMessage.TOP_CENTER, 5000, true);
world.spawnGroup("MARY_REED_MINIONS");
break;
}
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
final int hpPer = npc.getCurrentHpPercent();
final int maxHp = npc.getMaxHp();
if (npc.getId() == MARY_REED)
{
if ((hpPer < (maxHp * 0.50)) && npc.isScriptValue(0))
{
startQuestTimer("SPAWN_MARY_REED_MINIONS", 10000, npc, null);
npc.setScriptValue(1);
}
else if ((hpPer < (maxHp * 0.30)) && npc.isScriptValue(1))
{
showOnScreenMsg(world, NpcStringId.DO_YOU_THINK_YOU_CAN_EVADE_MY_STRIKE_TAKE_THAT, ExShowScreenMessage.TOP_CENTER, 5000, true);
npc.setScriptValue(2);
}
}
else if (CommonUtil.contains(MARY_REED_MINIONS, npc.getId()) && world.getNpc(MARY_REED).isScriptValue(2))
{
showOnScreenMsg(world, MINIONS_MESSAGES[getRandom(4)], ExShowScreenMessage.TOP_CENTER, 5000, true);
}
}
return super.onAttack(npc, attacker, damage, isSummon);
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
if (npc.getId() == MARY_REED)
{
// Despawn minions and stop timer
cancelQuestTimer("SPAWN_MARY_REED_MINIONS", npc, killer);
world.getAliveNpcs(MARY_REED_MINIONS).forEach(beast -> beast.doDie(null));
// Spawn treasure chests
boolean eightCCMembersOrMore = ((killer.getCommandChannel() != null) && (killer.getCommandChannel().getMemberCount() >= 8));
if (killer.isGM() || eightCCMembersOrMore)
{
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
}
else
{
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
}
// Finish instance
world.finishInstance(2);
// Set clan variable
killer.getClan().getVariables().set("TOH_DONE", Chronos.currentTimeMillis());
killer.getClan().getVariables().storeMe();
}
}
return super.onKill(npc, killer, isSummon);
}
public static void main(String[] args)
{
new ThroneOfHeroesMaryReed();
}
}

View File

@@ -0,0 +1,213 @@
/*
* 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.ThroneOfHeroes;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import instances.AbstractInstance;
/**
* @author CostyKiller
*/
public class ThroneOfHeroesTauti extends AbstractInstance
{
// NPCs
private static final int ROIENTAL = 34571;
// Monsters
private static final int TAUTI = 26266;
// Throne's Treasure Chest Tauti
private static final int TREASURE_CHEST = 26457;
// World Instance
Instance world = null;
// Misc
private static final int TEMPLATE_ID = 309;
// Npc Dialogs
private static final NpcStringId[] TAUTI_MESSAGES =
{
NpcStringId.TAUTI_INTENDS_TO_SHOW_OFF_HIS_POWER_TO_HIS_FOLLOWERS,
NpcStringId.TAUTI_INTENDS_TO_SHOW_OFF_HIS_POWER_TO_THOSE_WHO_AVOID_HIM
};
public ThroneOfHeroesTauti()
{
super(TEMPLATE_ID);
addInstanceCreatedId(TEMPLATE_ID);
addStartNpc(ROIENTAL);
addTalkId(ROIENTAL);
addAttackId(TAUTI);
addKillId(TAUTI);
}
@Override
public void onInstanceCreated(Instance activeInstance, PlayerInstance player)
{
activeInstance.setStatus(0);
startQuestTimer("ANNOUNCE_RAID_START", 10000, null, player);
world = activeInstance;
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
switch (event)
{
case "enterInstance":
{
enterInstance(player, npc, TEMPLATE_ID);
startQuestTimer("ANNOUNCE_RAID_PREP", 20000, null, player);
break;
}
case "reenterInstance":
{
final Instance activeInstance = getPlayerInstance(player);
if (isInInstance(activeInstance))
{
enterInstance(player, npc, activeInstance.getTemplateId());
}
}
case "ANNOUNCE_RAID_START":
{
showOnScreenMsg(world, NpcStringId.THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_TAUTI_WILL_BEGIN_SHORTLY, ExShowScreenMessage.TOP_CENTER, 5000, true);
startQuestTimer("ANNOUNCE_RAID_PREP", 15000, null, player);
break;
}
case "ANNOUNCE_RAID_PREP":
{
showOnScreenMsg(world, NpcStringId.THE_FIGHTING_AGAINST_TAUTI_WILL_BEGIN_IN_10_SECONDS, ExShowScreenMessage.TOP_CENTER, 5000, true);
startQuestTimer("ANNOUNCE_5", 10000, null, player);
break;
}
case "ANNOUNCE_5":
{
showOnScreenMsg(world, NpcStringId.FIVE_SECONDS, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_4", 2000, null, player);
break;
}
case "ANNOUNCE_4":
{
showOnScreenMsg(world, NpcStringId.FOUR_SECONDS, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_3", 2000, null, player);
break;
}
case "ANNOUNCE_3":
{
showOnScreenMsg(world, NpcStringId.THREE_SECONDS_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_2", 2000, null, player);
break;
}
case "ANNOUNCE_2":
{
showOnScreenMsg(world, NpcStringId.TWO_SECONDS_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("ANNOUNCE_1", 2000, null, player);
break;
}
case "ANNOUNCE_1":
{
showOnScreenMsg(world, NpcStringId.ONE_SECOND_2, ExShowScreenMessage.TOP_CENTER, 1000, true);
startQuestTimer("SPAWN_TAUTI", 2000, null, player);
break;
}
case "SPAWN_TAUTI":
{
showOnScreenMsg(world, NpcStringId.TAUTI_IS_READY_TO_FIGHT, ExShowScreenMessage.TOP_CENTER, 5000, true);
world.spawnGroup("TAUTI");
break;
}
// case "SPAWN_TAUTI_MINIONS":
// {
// showOnScreenMsg(world, NpcStringId.TAUTI_SUMMONS_HIS_MECHANICAL_CONTRAPTION, ExShowScreenMessage.TOP_CENTER, 5000, true);
// world.spawnGroup("TAUTI_MINIONS");
// break;
// }
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
final int hpPer = npc.getCurrentHpPercent();
final int maxHp = npc.getMaxHp();
if (npc.getId() == TAUTI)
{
if ((hpPer < (maxHp * 0.50)) && npc.isScriptValue(0))
{
// startQuestTimer("SPAWN_TAUTI_MINIONS", 10000, npc, null);
showOnScreenMsg(world, TAUTI_MESSAGES[getRandom(2)], ExShowScreenMessage.TOP_CENTER, 5000, true);
npc.setScriptValue(1);
}
else if ((hpPer < (maxHp * 0.30)) && npc.isScriptValue(1))
{
showOnScreenMsg(world, TAUTI_MESSAGES[getRandom(2)], ExShowScreenMessage.TOP_CENTER, 5000, true);
npc.setScriptValue(2);
}
}
}
return super.onAttack(npc, attacker, damage, isSummon);
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
if (npc.getId() == TAUTI)
{
// Despawn minions and stop timer
// cancelQuestTimer("SPAWN_TAUTI_MINIONS", npc, killer);
// world.getAliveNpcs(TAUTI_MINIONS).forEach(beast -> beast.doDie(null));
// Spawn treasure chests
boolean eightCCMembersOrMore = ((killer.getCommandChannel() != null) && (killer.getCommandChannel().getMemberCount() >= 8));
if (killer.isGM() || eightCCMembersOrMore)
{
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
}
else
{
addSpawn(TREASURE_CHEST, killer.getX() + getRandom(-150, 150), killer.getY() + getRandom(-150, 150), killer.getZ() + 10, 0, false, 0, true);
}
// Finish instance
world.finishInstance(2);
// Set clan variable
killer.getClan().getVariables().set("TOH_DONE", Chronos.currentTimeMillis());
killer.getClan().getVariables().storeMe();
}
}
return super.onKill(npc, killer, isSummon);
}
public static void main(String[] args)
{
new ThroneOfHeroesTauti();
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
That many people can't be moved.<br>
(A maximum of 100 people can participate.)
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Roiental:<br>
As I explained earlier, you can enter only by forming an association.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Roiental:<br>
You are too weak. I won't let you enter.<br>
(Only players of at least level 110 may participate.)
</body></html>

View File

@@ -151,6 +151,7 @@
<npc id="30981" x="44040" y="-47336" z="-804" heading="16383" respawnTime="60sec" /> <!-- Dark Judge --> <npc id="30981" x="44040" y="-47336" z="-804" heading="16383" respawnTime="60sec" /> <!-- Dark Judge -->
<npc id="31126" x="43712" y="-47208" z="-802" heading="21220" respawnTime="60sec" /> <!-- Blacksmith of Mammon --> <npc id="31126" x="43712" y="-47208" z="-802" heading="21220" respawnTime="60sec" /> <!-- Blacksmith of Mammon -->
<npc id="33737" x="43790" y="-47194" z="-802" heading="19739" respawnTime="60sec" /> <!-- Merchant of Mammon --> <npc id="33737" x="43790" y="-47194" z="-802" heading="19739" respawnTime="60sec" /> <!-- Merchant of Mammon -->
<npc id="34571" x="45432" y="-49880" z="-799" heading="23924" respawnTime="60sec" /> <!-- Roiental -->
</group> </group>
</spawn> </spawn>
</list> </list>

View File

@@ -2925,7 +2925,7 @@
</drop> </drop>
</dropLists> </dropLists>
</npc> </npc>
<npc id="26250" level="105" type="RaidBoss" name="Goldberg"> <npc id="26250" level="115" type="RaidBoss" name="Goldberg">
<race>UNDEAD</race> <race>UNDEAD</race>
<sex>MALE</sex> <sex>MALE</sex>
<acquire exp="999279716400" sp="899342325" raidPoints="21" /> <acquire exp="999279716400" sp="899342325" raidPoints="21" />
@@ -2939,6 +2939,11 @@
</speed> </speed>
</stats> </stats>
<status attackable="true" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="2000" aggroRange="2000">
<clanList>
<clan>GOLDBERG_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="37.5" /> <radius normal="37.5" />
<height normal="64.5" /> <height normal="64.5" />
@@ -2948,32 +2953,8 @@
<skill id="5467" level="1" /> <!-- Dark Attack --> <skill id="5467" level="1" /> <!-- Dark Attack -->
<skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance --> <skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance -->
</skillList> </skillList>
<dropLists>
<drop>
<item id="46492" min="1" max="1" chance="4.198" /> <!-- Pantheon's Soul Crystal Lv. 4 -->
<item id="46477" min="1" max="1" chance="4.146" /> <!-- Leona's Soul Crystal Lv. 4 -->
<item id="46507" min="1" max="1" chance="4.131" /> <!-- Lionel's Soul Crystal Lv. 4 -->
<item id="46493" min="1" max="1" chance="3.963" /> <!-- Pantheon's Soul Crystal Lv. 5 -->
<item id="46478" min="1" max="1" chance="3.923" /> <!-- Leona's Soul Crystal Lv. 5 -->
<item id="46508" min="1" max="1" chance="3.904" /> <!-- Lionel's Soul Crystal Lv. 5 -->
<item id="46509" min="1" max="1" chance="3.286" /> <!-- Lionel's Soul Crystal Lv. 6 -->
<item id="46494" min="1" max="1" chance="3.211" /> <!-- Pantheon's Soul Crystal Lv. 6 -->
<item id="46479" min="1" max="1" chance="3.184" /> <!-- Leona's Soul Crystal Lv. 6 -->
<item id="46462" min="1" max="1" chance="2.852" /> <!-- Mermoden's Soul Crystal Lv. 4 -->
<item id="46447" min="1" max="1" chance="2.787" /> <!-- Kain's Soul Crystal Lv. 4 -->
<item id="46463" min="1" max="1" chance="2.661" /> <!-- Mermoden's Soul Crystal Lv. 5 -->
<item id="46448" min="1" max="1" chance="2.569" /> <!-- Kain's Soul Crystal Lv. 5 -->
<item id="46449" min="1" max="1" chance="2.134" /> <!-- Kain's Soul Crystal Lv. 6 -->
<item id="46464" min="1" max="1" chance="2.103" /> <!-- Mermoden's Soul Crystal Lv. 6 -->
<item id="46510" min="1" max="1" chance="1.219" /> <!-- Lionel's Soul Crystal Lv. 7 -->
<item id="46480" min="1" max="1" chance="1.182" /> <!-- Leona's Soul Crystal Lv. 7 -->
<item id="46495" min="1" max="1" chance="1.171" /> <!-- Pantheon's Soul Crystal Lv. 7 -->
<item id="46465" min="1" max="1" chance="0.75" /> <!-- Mermoden's Soul Crystal Lv. 7 -->
<item id="46450" min="1" max="1" chance="0.75" /> <!-- Kain's Soul Crystal Lv. 7 -->
</drop>
</dropLists>
</npc> </npc>
<npc id="26251" level="85" type="Npc" name="Handy Cannon Gunner"> <npc id="26251" level="115" type="Monster" name="Handy Cannon Gunner">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -2986,13 +2967,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>GOLDBERG_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="30" /> <radius normal="30" />
<height normal="39" /> <height normal="39" />
</collision> </collision>
</npc> </npc>
<npc id="26252" level="85" type="Npc" name="Anchor Warrior"> <npc id="26252" level="115" type="Monster" name="Anchor Warrior">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3005,13 +2991,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>GOLDBERG_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="11" /> <radius normal="11" />
<height normal="35" /> <height normal="35" />
</collision> </collision>
</npc> </npc>
<npc id="26253" level="85" type="Npc" name="Operator"> <npc id="26253" level="115" type="Monster" name="Operator">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3024,13 +3015,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>GOLDBERG_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="13" /> <radius normal="13" />
<height normal="35.5" /> <height normal="35.5" />
</collision> </collision>
</npc> </npc>
<npc id="26254" level="85" type="Npc" name="Axe Warrior"> <npc id="26254" level="115" type="Monster" name="Axe Warrior">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3043,7 +3039,12 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>GOLDBERG_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="11" /> <radius normal="11" />
<height normal="35" /> <height normal="35" />
@@ -3052,7 +3053,7 @@
<npc id="26255" level="108" type="RaidBoss" name="Zaken"> <npc id="26255" level="108" type="RaidBoss" name="Zaken">
<race>UNDEAD</race> <race>UNDEAD</race>
<sex>MALE</sex> <sex>MALE</sex>
<acquire exp="3766456368864" sp="3389803344" /> <acquire exp="3766456368864" sp="3389803344" raidPoints="21" />
<stats str="164" int="188" dex="55" wit="78" con="111" men="149"> <stats str="164" int="188" dex="55" wit="78" con="111" men="149">
<vitals hp="123163664.15391" hpRegen="470.5528213" mp="88540.925" mpRegen="3.3" /> <vitals hp="123163664.15391" hpRegen="470.5528213" mp="88540.925" mpRegen="3.3" />
<attack physical="318573.0144" magical="228464.7134" random="30" critical="4.75" accuracy="4.75" attackSpeed="250" type="SWORD" range="40" distance="80" width="120" /> <attack physical="318573.0144" magical="228464.7134" random="30" critical="4.75" accuracy="4.75" attackSpeed="250" type="SWORD" range="40" distance="80" width="120" />
@@ -3063,6 +3064,11 @@
</speed> </speed>
</stats> </stats>
<status attackable="true" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="2000" aggroRange="2000">
<clanList>
<clan>ZAKEN_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="24" /> <radius normal="24" />
<height normal="49.5" /> <height normal="49.5" />
@@ -3072,32 +3078,8 @@
<skill id="5467" level="1" /> <!-- Dark Attack --> <skill id="5467" level="1" /> <!-- Dark Attack -->
<skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance --> <skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance -->
</skillList> </skillList>
<dropLists>
<drop>
<item id="46492" min="1" max="1" chance="8.27" /> <!-- Pantheon's Soul Crystal Lv. 4 -->
<item id="46477" min="1" max="1" chance="8.221" /> <!-- Leona's Soul Crystal Lv. 4 -->
<item id="46507" min="1" max="1" chance="8.219" /> <!-- Lionel's Soul Crystal Lv. 4 -->
<item id="46478" min="1" max="1" chance="7.889" /> <!-- Leona's Soul Crystal Lv. 5 -->
<item id="46493" min="1" max="1" chance="7.844" /> <!-- Pantheon's Soul Crystal Lv. 5 -->
<item id="46508" min="1" max="1" chance="7.827" /> <!-- Lionel's Soul Crystal Lv. 5 -->
<item id="46479" min="1" max="1" chance="6.392" /> <!-- Leona's Soul Crystal Lv. 6 -->
<item id="46494" min="1" max="1" chance="6.386" /> <!-- Pantheon's Soul Crystal Lv. 6 -->
<item id="46509" min="1" max="1" chance="6.376" /> <!-- Lionel's Soul Crystal Lv. 6 -->
<item id="46462" min="1" max="1" chance="5.554" /> <!-- Mermoden's Soul Crystal Lv. 4 -->
<item id="46447" min="1" max="1" chance="5.533" /> <!-- Kain's Soul Crystal Lv. 4 -->
<item id="46448" min="1" max="1" chance="5.261" /> <!-- Kain's Soul Crystal Lv. 5 -->
<item id="46463" min="1" max="1" chance="5.246" /> <!-- Mermoden's Soul Crystal Lv. 5 -->
<item id="46464" min="1" max="1" chance="4.405" /> <!-- Mermoden's Soul Crystal Lv. 6 -->
<item id="46449" min="1" max="1" chance="4.329" /> <!-- Kain's Soul Crystal Lv. 6 -->
<item id="46480" min="1" max="1" chance="2.319" /> <!-- Leona's Soul Crystal Lv. 7 -->
<item id="46495" min="1" max="1" chance="2.268" /> <!-- Pantheon's Soul Crystal Lv. 7 -->
<item id="46510" min="1" max="1" chance="2.234" /> <!-- Lionel's Soul Crystal Lv. 7 -->
<item id="46450" min="1" max="1" chance="1.516" /> <!-- Kain's Soul Crystal Lv. 7 -->
<item id="46465" min="1" max="1" chance="1.503" /> <!-- Mermoden's Soul Crystal Lv. 7 -->
</drop>
</dropLists>
</npc> </npc>
<npc id="26256" level="85" type="Npc" name="Devil Guardian"> <npc id="26256" level="108" type="Monster" name="Devil Guardian">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3110,13 +3092,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>ZAKEN_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="25" /> <radius normal="25" />
<height normal="44" /> <height normal="44" />
</collision> </collision>
</npc> </npc>
<npc id="26257" level="85" type="Npc" name="Devil Spearshooter"> <npc id="26257" level="108" type="Monster" name="Devil Spearshooter">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3130,13 +3117,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>ZAKEN_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="17" /> <radius normal="17" />
<height normal="44" /> <height normal="44" />
</collision> </collision>
</npc> </npc>
<npc id="26258" level="85" type="Npc" name="Devil Warrior"> <npc id="26258" level="108" type="Monster" name="Devil Warrior">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3149,13 +3141,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>ZAKEN_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="17" /> <radius normal="17" />
<height normal="44" /> <height normal="44" />
</collision> </collision>
</npc> </npc>
<npc id="26259" level="85" type="Npc" name="Devil Dolores"> <npc id="26259" level="108" type="Monster" name="Devil Dolores">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3168,13 +3165,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>ZAKEN_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="14" /> <radius normal="14" />
<height normal="38" /> <height normal="38" />
</collision> </collision>
</npc> </npc>
<npc id="26260" level="85" type="Npc" name="Blader"> <npc id="26260" level="108" type="Monster" name="Blader">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
@@ -3187,35 +3189,46 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>ZAKEN_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="17" /> <radius normal="17" />
<height normal="55" /> <height normal="55" />
</collision> </collision>
</npc> </npc>
<npc id="26261" level="108" type="Monster" name="Tiat"> <npc id="26261" level="108" type="RaidBoss" name="Tiat">
<race>DRAGON</race> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="3766456368864" sp="3389803344" raidPoints="21" /> <acquire exp="3766456368864" sp="3389803344" raidPoints="21" />
<stats str="164" int="188" dex="55" wit="78" con="111" men="149"> <stats str="164" int="188" dex="55" wit="78" con="111" men="149">
<vitals hp="81988388.9122218" hpRegen="10.5" mp="54532.967032967" mpRegen="3.6" /> <vitals hp="126889330.100" hpRegen="470.5528213" mp="88540.925" mpRegen="3.3" />
<attack physical="318573.0144" magical="228464.7134" random="30" critical="4.75" accuracy="4.75" attackSpeed="250" type="SWORD" range="40" distance="80" width="120" />
<defence physical="36935.17502" magical="18028.22092" />
<speed> <speed>
<walk ground="80" /> <walk ground="80" />
<run ground="300" /> <run ground="300" />
</speed> </speed>
<attack physical="700940.567009664" magical="819.655878366979" critical="4.75" attackSpeed="253" range="40" />
<defence physical="12373.6040609137" magical="3595.38938219141" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<skillList> <ai type="BALANCED" clanHelpRange="2000" aggroRange="2000">
<skill id="4416" level="10" /> <!-- Dragons --> <clanList>
<skill id="5462" level="1" /> <!-- Fire Attack --> <clan>TIAT_TOH</clan>
<skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance --> </clanList>
</skillList> </ai>
<collision> <collision>
<radius normal="55" /> <radius normal="55" />
<height normal="104" /> <height normal="104" />
</collision> </collision>
<skillList>
<skill id="4416" level="1" /> <!-- Undead -->
<skill id="5467" level="1" /> <!-- Dark Attack -->
<skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance -->
</skillList>
<dropLists> <dropLists>
<drop> <drop>
<item id="46507" min="1" max="1" chance="8.331" /> <!-- Lionel's Soul Crystal Lv. 4 --> <item id="46507" min="1" max="1" chance="8.331" /> <!-- Lionel's Soul Crystal Lv. 4 -->
@@ -3241,12 +3254,13 @@
</drop> </drop>
</dropLists> </dropLists>
</npc> </npc>
<npc id="26262" level="85" type="Npc" name="Dragontroop Spellshifter"> <npc id="26262" level="108" type="Monster" name="Dragontroop Spellshifter">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="43" /> <walk ground="43" />
<run ground="230" /> <run ground="230" />
@@ -3254,38 +3268,50 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>TIAT_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="29" /> <radius normal="29" />
<height normal="49.9" /> <height normal="49.9" />
</collision> </collision>
</npc> </npc>
<npc id="26263" level="85" type="Npc" name="Dragontroop Royal Guard Captain"> <npc id="26263" level="108" type="Monster" name="Dragontroop Royal Guard Captain">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="100" /> <walk ground="43" />
<run ground="230" /> <run ground="230" />
</speed> </speed>
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>TIAT_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="40" /> <radius normal="40" />
<height normal="55" /> <height normal="55" />
</collision> </collision>
</npc> </npc>
<npc id="26264" level="85" type="Npc" name="Dragontroop Lancer"> <npc id="26264" level="108" type="Monster" name="Dragontroop Lancer">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<equipment rhand="13843" /> <equipment rhand="13843" />
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="89" /> <walk ground="89" />
<run ground="230" /> <run ground="230" />
@@ -3293,18 +3319,24 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>TIAT_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="25" /> <radius normal="25" />
<height normal="46.5" /> <height normal="46.5" />
</collision> </collision>
</npc> </npc>
<npc id="26265" level="85" type="Npc" name="Dragontroop Berserker"> <npc id="26265" level="108" type="Monster" name="Dragontroop Berserker">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="100" /> <walk ground="100" />
<run ground="230" /> <run ground="230" />
@@ -3312,13 +3344,18 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>TIAT_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="50" /> <radius normal="50" />
<height normal="55" /> <height normal="55" />
</collision> </collision>
</npc> </npc>
<npc id="26266" level="108" type="RaidBoss" name="Tauti"> <npc id="26266" level="125" type="RaidBoss" name="Tauti">
<race>DEMONIC</race> <race>DEMONIC</race>
<sex>MALE</sex> <sex>MALE</sex>
<acquire exp="3766456368864" sp="3389803344" raidPoints="21" /> <acquire exp="3766456368864" sp="3389803344" raidPoints="21" />
@@ -3341,37 +3378,13 @@
<skill id="5465" level="1" /> <!-- Earth Attack --> <skill id="5465" level="1" /> <!-- Earth Attack -->
<skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance --> <skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance -->
</skillList> </skillList>
<dropLists>
<drop>
<item id="46477" min="1" max="1" chance="8.345" /> <!-- Leona's Soul Crystal Lv. 4 -->
<item id="46492" min="1" max="1" chance="8.344" /> <!-- Pantheon's Soul Crystal Lv. 4 -->
<item id="46507" min="1" max="1" chance="8.31" /> <!-- Lionel's Soul Crystal Lv. 4 -->
<item id="46493" min="1" max="1" chance="7.825" /> <!-- Pantheon's Soul Crystal Lv. 5 -->
<item id="46478" min="1" max="1" chance="7.817" /> <!-- Leona's Soul Crystal Lv. 5 -->
<item id="46508" min="1" max="1" chance="7.772" /> <!-- Lionel's Soul Crystal Lv. 5 -->
<item id="46509" min="1" max="1" chance="6.486" /> <!-- Lionel's Soul Crystal Lv. 6 -->
<item id="46494" min="1" max="1" chance="6.481" /> <!-- Pantheon's Soul Crystal Lv. 6 -->
<item id="46479" min="1" max="1" chance="6.373" /> <!-- Leona's Soul Crystal Lv. 6 -->
<item id="46447" min="1" max="1" chance="5.637" /> <!-- Kain's Soul Crystal Lv. 4 -->
<item id="46462" min="1" max="1" chance="5.557" /> <!-- Mermoden's Soul Crystal Lv. 4 -->
<item id="46448" min="1" max="1" chance="5.34" /> <!-- Kain's Soul Crystal Lv. 5 -->
<item id="46463" min="1" max="1" chance="5.246" /> <!-- Mermoden's Soul Crystal Lv. 5 -->
<item id="46449" min="1" max="1" chance="4.292" /> <!-- Kain's Soul Crystal Lv. 6 -->
<item id="46464" min="1" max="1" chance="4.277" /> <!-- Mermoden's Soul Crystal Lv. 6 -->
<item id="46510" min="1" max="1" chance="2.317" /> <!-- Lionel's Soul Crystal Lv. 7 -->
<item id="46480" min="1" max="1" chance="2.262" /> <!-- Leona's Soul Crystal Lv. 7 -->
<item id="46495" min="1" max="1" chance="2.254" /> <!-- Pantheon's Soul Crystal Lv. 7 -->
<item id="46450" min="1" max="1" chance="1.587" /> <!-- Kain's Soul Crystal Lv. 7 -->
<item id="46465" min="1" max="1" chance="1.539" /> <!-- Mermoden's Soul Crystal Lv. 7 -->
</drop>
</dropLists>
</npc> </npc>
<npc id="26267" level="108" type="RaidBoss" name="Mary Reed"> <npc id="26267" level="120" type="RaidBoss" name="Mary Reed">
<race>UNDEAD</race> <race>UNDEAD</race>
<sex>MALE</sex> <sex>MALE</sex>
<acquire exp="3766456368864" sp="3389803344" raidPoints="21" /> <acquire exp="3766456368864" sp="3389803344" raidPoints="21" />
<stats str="164" int="188" dex="55" wit="78" con="111" men="149"> <stats str="164" int="188" dex="55" wit="78" con="111" men="149">
<vitals hp="81988388.9122218" hpRegen="470.5528213" mp="54532.967032967" mpRegen="3.3" /> <vitals hp="123163664.15391" hpRegen="470.5528213" mp="88540.925" mpRegen="3.3" />
<attack physical="318573.0144" magical="228464.7134" random="30" critical="4.75" accuracy="4.75" attackSpeed="250" type="SWORD" range="40" distance="80" width="120" /> <attack physical="318573.0144" magical="228464.7134" random="30" critical="4.75" accuracy="4.75" attackSpeed="250" type="SWORD" range="40" distance="80" width="120" />
<defence physical="36935.17502" magical="18028.22092" /> <defence physical="36935.17502" magical="18028.22092" />
<speed> <speed>
@@ -3380,6 +3393,11 @@
</speed> </speed>
</stats> </stats>
<status attackable="true" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="2000" aggroRange="2000">
<clanList>
<clan>MARY_REED_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="22" /> <radius normal="22" />
<height normal="62" /> <height normal="62" />
@@ -3389,37 +3407,14 @@
<skill id="5464" level="1" /> <!-- Wind Attack --> <skill id="5464" level="1" /> <!-- Wind Attack -->
<skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance --> <skill id="14804" level="10" /> <!-- Damage Reflection Attack Resistance -->
</skillList> </skillList>
<dropLists>
<drop>
<item id="46507" min="1" max="1" chance="8.336" /> <!-- Lionel's Soul Crystal Lv. 4 -->
<item id="46492" min="1" max="1" chance="8.324" /> <!-- Pantheon's Soul Crystal Lv. 4 -->
<item id="46477" min="1" max="1" chance="8.315" /> <!-- Leona's Soul Crystal Lv. 4 -->
<item id="46493" min="1" max="1" chance="7.873" /> <!-- Pantheon's Soul Crystal Lv. 5 -->
<item id="46508" min="1" max="1" chance="7.846" /> <!-- Lionel's Soul Crystal Lv. 5 -->
<item id="46478" min="1" max="1" chance="7.835" /> <!-- Leona's Soul Crystal Lv. 5 -->
<item id="46509" min="1" max="1" chance="6.504" /> <!-- Lionel's Soul Crystal Lv. 6 -->
<item id="46479" min="1" max="1" chance="6.502" /> <!-- Leona's Soul Crystal Lv. 6 -->
<item id="46494" min="1" max="1" chance="6.379" /> <!-- Pantheon's Soul Crystal Lv. 6 -->
<item id="46462" min="1" max="1" chance="5.62" /> <!-- Mermoden's Soul Crystal Lv. 4 -->
<item id="46447" min="1" max="1" chance="5.542" /> <!-- Kain's Soul Crystal Lv. 4 -->
<item id="46463" min="1" max="1" chance="5.269" /> <!-- Mermoden's Soul Crystal Lv. 5 -->
<item id="46448" min="1" max="1" chance="5.223" /> <!-- Kain's Soul Crystal Lv. 5 -->
<item id="46464" min="1" max="1" chance="4.364" /> <!-- Mermoden's Soul Crystal Lv. 6 -->
<item id="46449" min="1" max="1" chance="4.355" /> <!-- Kain's Soul Crystal Lv. 6 -->
<item id="46510" min="1" max="1" chance="2.315" /> <!-- Lionel's Soul Crystal Lv. 7 -->
<item id="46495" min="1" max="1" chance="2.307" /> <!-- Pantheon's Soul Crystal Lv. 7 -->
<item id="46480" min="1" max="1" chance="2.253" /> <!-- Leona's Soul Crystal Lv. 7 -->
<item id="46465" min="1" max="1" chance="1.604" /> <!-- Mermoden's Soul Crystal Lv. 7 -->
<item id="46450" min="1" max="1" chance="1.485" /> <!-- Kain's Soul Crystal Lv. 7 -->
</drop>
</dropLists>
</npc> </npc>
<npc id="26268" level="85" type="Npc" name="Shield Master"> <npc id="26268" level="120" type="Monster" name="Shield Master">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="60" /> <walk ground="60" />
<run ground="230" /> <run ground="230" />
@@ -3427,18 +3422,24 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>MARY_REED_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="18" /> <radius normal="18" />
<height normal="34.5" /> <height normal="34.5" />
</collision> </collision>
</npc> </npc>
<npc id="26269" level="85" type="Npc" name="Spear Master"> <npc id="26269" level="120" type="Monster" name="Spear Master">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="60" /> <walk ground="60" />
<run ground="230" /> <run ground="230" />
@@ -3446,19 +3447,25 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>MARY_REED_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="18" /> <radius normal="18" />
<height normal="35" /> <height normal="35" />
</collision> </collision>
</npc> </npc>
<npc id="26270" level="85" type="Npc" name="Bow Master"> <npc id="26270" level="120" type="Monster" name="Bow Master">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<equipment rhand="15302" /> <equipment rhand="15302" />
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="60" /> <walk ground="60" />
<run ground="230" /> <run ground="230" />
@@ -3466,18 +3473,24 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>MARY_REED_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="14" /> <radius normal="14" />
<height normal="26.5" /> <height normal="26.5" />
</collision> </collision>
</npc> </npc>
<npc id="26271" level="85" type="Npc" name="Magic Master"> <npc id="26271" level="120" type="Monster" name="Magic Master">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race> <race>ETC</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<acquire exp="12968700048" sp="11664000" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78"> <stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" /> <vitals hp="174624069" hpRegen="10.5" mp="235500" mpRegen="3.6" />
<speed> <speed>
<walk ground="60" /> <walk ground="60" />
<run ground="230" /> <run ground="230" />
@@ -3485,7 +3498,12 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" /> <attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" /> <defence physical="405.85106382979" magical="297.0297029703" />
</stats> </stats>
<status attackable="false" /> <status attackable="true" />
<ai type="BALANCED" clanHelpRange="4500" aggroRange="450">
<clanList>
<clan>MARY_REED_TOH</clan>
</clanList>
</ai>
<collision> <collision>
<radius normal="12" /> <radius normal="12" />
<height normal="33.5" /> <height normal="33.5" />

View File

@@ -142,6 +142,7 @@
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:token"> <xs:restriction base="xs:token">
<xs:enumeration value="CommandChannel" /> <xs:enumeration value="CommandChannel" />
<xs:enumeration value="CommandChannelLeaderSameClan" />
<xs:enumeration value="CommandChannelLeader" /> <xs:enumeration value="CommandChannelLeader" />
<xs:enumeration value="Party" /> <xs:enumeration value="Party" />
<xs:enumeration value="PartyLeader" /> <xs:enumeration value="PartyLeader" />

View File

@@ -0,0 +1,51 @@
/*
* 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 org.l2jmobius.gameserver.model.instancezone.conditions;
import org.l2jmobius.gameserver.model.AbstractPlayerGroup;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate;
import org.l2jmobius.gameserver.network.SystemMessageId;
/**
* Command channel leader same clan condition
* @author CostyKiller
*/
public class ConditionCommandChannelLeaderSameClan extends Condition
{
public ConditionCommandChannelLeaderSameClan(InstanceTemplate template, StatSet parameters, boolean onlyLeader, boolean showMessageAndHtml)
{
super(template, parameters, true, showMessageAndHtml);
setSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER);
}
@Override
public boolean test(PlayerInstance player, Npc npc)
{
final AbstractPlayerGroup group = player.getCommandChannel();
return ((group != null) && group.isLeader(player) && group.forEachMember(m ->
{
if (m.getClan() == player.getClan())
{
return true;
}
return false;
}));
}
}

View File

@@ -38590,11 +38590,11 @@ public class NpcStringId
@ClientString(id = 1803406, message = "See? There's nothing you and I can't do when we're together!") @ClientString(id = 1803406, message = "See? There's nothing you and I can't do when we're together!")
public static NpcStringId SEE_THERE_S_NOTHING_YOU_AND_I_CAN_T_DO_WHEN_WE_RE_TOGETHER; public static NpcStringId SEE_THERE_S_NOTHING_YOU_AND_I_CAN_T_DO_WHEN_WE_RE_TOGETHER;
@ClientString(id = 1803407, message = "The challenge for the Throne of Heroes will begin shortly. Please get ready.") @ClientString(id = 1803407, message = "The challenge for the Throne of Heroes - Goldberg will begin shortly.\nPlease get ready, heroes!")
public static NpcStringId THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_WILL_BEGIN_SHORTLY_PLEASE_GET_READY; public static NpcStringId THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_GOLDBERG_WILL_BEGIN_SHORTLY_PLEASE_GET_READY;
@ClientString(id = 1803408, message = "The first challenge will begin in 10 seconds.") @ClientString(id = 1803408, message = "The fighting against Goldberg will begin in 10 seconds.")
public static NpcStringId THE_FIRST_CHALLENGE_WILL_BEGIN_IN_10_SECONDS; public static NpcStringId THE_FIGHTING_AGAINST_GOLDBERG_WILL_BEGIN_IN_10_SECONDS;
@ClientString(id = 1803409, message = "5 seconds") @ClientString(id = 1803409, message = "5 seconds")
public static NpcStringId FIVE_SECONDS; public static NpcStringId FIVE_SECONDS;
@@ -38611,41 +38611,41 @@ public class NpcStringId
@ClientString(id = 1803413, message = "1 second") @ClientString(id = 1803413, message = "1 second")
public static NpcStringId ONE_SECOND_2; public static NpcStringId ONE_SECOND_2;
@ClientString(id = 1803414, message = "The first challenge begins.") @ClientString(id = 1803414, message = "Goldberg appears.")
public static NpcStringId THE_FIRST_CHALLENGE_BEGINS; public static NpcStringId GOLDBERG_APPEARS;
@ClientString(id = 1803415, message = "Darion frees himself from the restraints that suppressed him and reveals his true power.") @ClientString(id = 1803415, message = "Darion frees himself from the restraints that suppressed him and reveals his true power.")
public static NpcStringId DARION_FREES_HIMSELF_FROM_THE_RESTRAINTS_THAT_SUPPRESSED_HIM_AND_REVEALS_HIS_TRUE_POWER; public static NpcStringId DARION_FREES_HIMSELF_FROM_THE_RESTRAINTS_THAT_SUPPRESSED_HIM_AND_REVEALS_HIS_TRUE_POWER;
@ClientString(id = 1803416, message = "The first challenge has been completed successfully. The second challenge will begin shortly.") @ClientString(id = 1803416, message = "The challenge for the Throne of Heroes - Mary Reed will begin shortly.\nPlease get ready, heroes!")
public static NpcStringId THE_FIRST_CHALLENGE_HAS_BEEN_COMPLETED_SUCCESSFULLY_THE_SECOND_CHALLENGE_WILL_BEGIN_SHORTLY; public static NpcStringId THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_MARY_REED_WILL_BEGIN_SHORTLY;
@ClientString(id = 1803417, message = "The second challenge will begin in 10 seconds.") @ClientString(id = 1803417, message = "The fighting against Mary Reed will begin in 10 seconds.")
public static NpcStringId THE_SECOND_CHALLENGE_WILL_BEGIN_IN_10_SECONDS; public static NpcStringId THE_FIGHTING_AGAINST_MARY_REED_WILL_BEGIN_IN_10_SECONDS;
@ClientString(id = 1803418, message = "The second challenge will begin.") @ClientString(id = 1803418, message = "Mary Reed greets heroes.")
public static NpcStringId THE_SECOND_CHALLENGE_WILL_BEGIN; public static NpcStringId MARY_REED_GREETS_HEROES;
@ClientString(id = 1803419, message = "Goldberg will summon his minions in 5 seconds.") @ClientString(id = 1803419, message = "Goldberg summons his minions.")
public static NpcStringId GOLDBERG_WILL_SUMMON_HIS_MINIONS_IN_5_SECONDS; public static NpcStringId GOLDBERG_SUMMONS_HIS_MINIONS;
@ClientString(id = 1803420, message = "Goldberg brings out all of the power within him.") @ClientString(id = 1803420, message = "Goldberg brings out all of the power within him.")
public static NpcStringId GOLDBERG_BRINGS_OUT_ALL_OF_THE_POWER_WITHIN_HIM; public static NpcStringId GOLDBERG_BRINGS_OUT_ALL_OF_THE_POWER_WITHIN_HIM;
@ClientString(id = 1803421, message = "The second challenge has been completed successfully. The third challenge will begin shortly.") @ClientString(id = 1803421, message = "The challenge for the Throne of Heroes - Tauti will begin shortly.\nPlease get ready, heroes!")
public static NpcStringId THE_SECOND_CHALLENGE_HAS_BEEN_COMPLETED_SUCCESSFULLY_THE_THIRD_CHALLENGE_WILL_BEGIN_SHORTLY; public static NpcStringId THE_CHALLENGE_FOR_THE_THRONE_OF_HEROES_TAUTI_WILL_BEGIN_SHORTLY;
@ClientString(id = 1803422, message = "The third challenge will begin in 10 seconds.") @ClientString(id = 1803422, message = "The fighting against Tauti will begin in 10 seconds.")
public static NpcStringId THE_THIRD_CHALLENGE_WILL_BEGIN_IN_10_SECONDS; public static NpcStringId THE_FIGHTING_AGAINST_TAUTI_WILL_BEGIN_IN_10_SECONDS;
@ClientString(id = 1803423, message = "The third challenge will begin.") @ClientString(id = 1803423, message = "Tauti is ready to fight.")
public static NpcStringId THE_THIRD_CHALLENGE_WILL_BEGIN; public static NpcStringId TAUTI_IS_READY_TO_FIGHT;
@ClientString(id = 1803424, message = "The third challenge has been completed successfully. The fourth challenge will begin in a moment.") @ClientString(id = 1803424, message = "Mary Reed, they are just insects. Haha! Show them your true power!")
public static NpcStringId THE_THIRD_CHALLENGE_HAS_BEEN_COMPLETED_SUCCESSFULLY_THE_FOURTH_CHALLENGE_WILL_BEGIN_IN_A_MOMENT; public static NpcStringId MARY_REED_THEY_ARE_JUST_INSECTS_HAHA_SHOW_THEM_YOUR_TRUE_POWER;
@ClientString(id = 1803425, message = "Zaken summons monsters from another world.") @ClientString(id = 1803425, message = "Do you think you can evade my strike? Take that!")
public static NpcStringId ZAKEN_SUMMONS_MONSTERS_FROM_ANOTHER_WORLD; public static NpcStringId DO_YOU_THINK_YOU_CAN_EVADE_MY_STRIKE_TAKE_THAT;
@ClientString(id = 1803426, message = "Your blood is mine!") @ClientString(id = 1803426, message = "Your blood is mine!")
public static NpcStringId YOUR_BLOOD_IS_MINE; public static NpcStringId YOUR_BLOOD_IS_MINE;
@@ -38656,11 +38656,11 @@ public class NpcStringId
@ClientString(id = 1803428, message = "Zaken reveals his hidden power.") @ClientString(id = 1803428, message = "Zaken reveals his hidden power.")
public static NpcStringId ZAKEN_REVEALS_HIS_HIDDEN_POWER; public static NpcStringId ZAKEN_REVEALS_HIS_HIDDEN_POWER;
@ClientString(id = 1803429, message = "Tiat summons his minions.") @ClientString(id = 1803429, message = "Mary Reed, these brats are pretty strong. I shall rest up a bit.")
public static NpcStringId TIAT_SUMMONS_HIS_MINIONS; public static NpcStringId MARY_REED_THESE_BRATS_ARE_PRETTY_STRONG_I_SHALL_REST_UP_A_BIT;
@ClientString(id = 1803430, message = "Tiat reveals his dignity.") @ClientString(id = 1803430, message = "Mary Reed, these brats are pretty strong. Watch out!")
public static NpcStringId TIAT_REVEALS_HIS_DIGNITY; public static NpcStringId MARY_REED_THESE_BRATS_ARE_PRETTY_STRONG_WATCH_OUT;
@ClientString(id = 1803431, message = "Tauti summons his mechanical contraption.") @ClientString(id = 1803431, message = "Tauti summons his mechanical contraption.")
public static NpcStringId TAUTI_SUMMONS_HIS_MECHANICAL_CONTRAPTION; public static NpcStringId TAUTI_SUMMONS_HIS_MECHANICAL_CONTRAPTION;
@@ -38716,8 +38716,8 @@ public class NpcStringId
@ClientString(id = 1803448, message = "Antharas has suffered critical injuries.") @ClientString(id = 1803448, message = "Antharas has suffered critical injuries.")
public static NpcStringId ANTHARAS_HAS_SUFFERED_CRITICAL_INJURIES; public static NpcStringId ANTHARAS_HAS_SUFFERED_CRITICAL_INJURIES;
@ClientString(id = 1803449, message = "Mary Reed summons her minions.") @ClientString(id = 1803449, message = "Zaken! Your time has come! Kill them all!")
public static NpcStringId MARY_REED_SUMMONS_HER_MINIONS; public static NpcStringId MARY_REED_SUMMONS_ZAKEN;
@ClientString(id = 1803450, message = "Mary Reed reveals her true power.") @ClientString(id = 1803450, message = "Mary Reed reveals her true power.")
public static NpcStringId MARY_REED_REVEALS_HER_TRUE_POWER; public static NpcStringId MARY_REED_REVEALS_HER_TRUE_POWER;