Updated Letter Collector event.
Thanks to Index.
This commit is contained in:
@@ -1,9 +0,0 @@
|
||||
<html><body>Letter Collector Rosalia:<br>
|
||||
I'm glad to see you, adventurer!<br>
|
||||
Do you want to claim reward for collecting the words <font color="LEVEL">LINEAGE II</font>, <font color="LEVEL">MEMORIES</font>, or <font color="LEVEL">CHRONICLE</font>?<br>
|
||||
You can make these words from the letters you get while hunting the monsters in Lineage II world.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector lineage">"I have all of the letters of LINEAGE II!"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector memories">"I have all of the letters of MEMORIES!"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector chronicle">"I have all of the letters of CHRONICLE!"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector 9000-2.htm">"I'd like to exchange my letters for other ones."</Button>
|
||||
</body></html>
|
||||
@@ -1,17 +0,0 @@
|
||||
<html><body>Letter Collector Rosalia:<br>
|
||||
I can exchange <font color="LEVEL">two of your letters</font> for <font color="LEVEL">one</font> of random letters. In case with the rare S, H and the number II, you'll will need only one item for exchange. Press the button below when're you ready!<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector exchangeA">"I want to exchange two of my letters A for another random one."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector exchangeC">"I want to exchange two of my letters C for another random one."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector exchangeE">"I want to exchange two of my letters E for another random one."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector exchangeG">"I want to exchange two of my letters G for another random one."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector exchangeI">"I want to exchange two of my letters I for another random one."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector exchangeL">"I want to exchange two of my letters L for another random one."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector exchangeM">"I want to exchange two of my letters M for another random one."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector exchangeN">"I want to exchange two of my letters N for another random one."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector exchangeO">"I want to exchange two of my letters O for another random one."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector exchangeL">"I want to exchange two of my letters R for another random one."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector exchangeH">"I want to exchange one of my letters H for another random one."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector exchangeS">"I want to exchange one of my letters S for another random one."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector exchangeII">"I want to exchange one of my letters II for another random one."</Button>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest LetterCollector 9000-1.htm">Back</Button>
|
||||
</body></html>
|
||||
@@ -16,346 +16,42 @@
|
||||
*/
|
||||
package events.LetterCollector;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
|
||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
|
||||
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
|
||||
import org.l2jmobius.gameserver.model.quest.LongTimeEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExLetterCollectorUI;
|
||||
|
||||
/**
|
||||
* Event: Letter Collector
|
||||
* @URL https://eu.4gameforum.com/threads/648400/
|
||||
* @author Mobius, Gigi, Adapted for Classic by QuangNguyen
|
||||
* @author Mobius
|
||||
*/
|
||||
public class LetterCollector extends LongTimeEvent
|
||||
{
|
||||
// NPC
|
||||
private static final int ROSALIA = 9000;
|
||||
// Items
|
||||
private static final int A = 3875;
|
||||
private static final int C = 3876;
|
||||
private static final int E = 3877;
|
||||
private static final int G = 3879;
|
||||
private static final int I = 3881;
|
||||
private static final int L = 3882;
|
||||
private static final int N = 3883;
|
||||
private static final int R = 3885;
|
||||
private static final int M = 34956;
|
||||
private static final int O = 3884;
|
||||
private static final int S = 3886;
|
||||
private static final int H = 3880;
|
||||
private static final int II = 3888;
|
||||
// Exchange Letters
|
||||
private static final int[] LETTERS =
|
||||
{
|
||||
A,
|
||||
C,
|
||||
E,
|
||||
G,
|
||||
I,
|
||||
L,
|
||||
N,
|
||||
R,
|
||||
M,
|
||||
O,
|
||||
S,
|
||||
H,
|
||||
II
|
||||
};
|
||||
// Reward
|
||||
private static final int LINEAGEII = 29581;
|
||||
private static final int MEMMORIES = 29583;
|
||||
private static final int CHRONICLE = 29582;
|
||||
|
||||
private LetterCollector()
|
||||
{
|
||||
addStartNpc(ROSALIA);
|
||||
addFirstTalkId(ROSALIA);
|
||||
addTalkId(ROSALIA);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
|
||||
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||
public void onPlayerLogin(OnPlayerLogin event)
|
||||
{
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
if (!isEventPeriod())
|
||||
{
|
||||
case "9000-1.htm":
|
||||
case "9000-2.htm":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "lineage":
|
||||
{
|
||||
if ((getQuestItemsCount(player, L) >= 1) && //
|
||||
(getQuestItemsCount(player, I) >= 1) && //
|
||||
(getQuestItemsCount(player, N) >= 1) && //
|
||||
(getQuestItemsCount(player, E) >= 2) && //
|
||||
(getQuestItemsCount(player, A) >= 1) && //
|
||||
(getQuestItemsCount(player, G) >= 1) && //
|
||||
(getQuestItemsCount(player, II) >= 1))
|
||||
{
|
||||
takeItems(player, L, 1);
|
||||
takeItems(player, I, 1);
|
||||
takeItems(player, N, 1);
|
||||
takeItems(player, E, 2);
|
||||
takeItems(player, A, 1);
|
||||
takeItems(player, G, 1);
|
||||
takeItems(player, II, 1);
|
||||
giveItems(player, LINEAGEII, 1);
|
||||
htmltext = "9000-1.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItem.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "memories":
|
||||
{
|
||||
if ((getQuestItemsCount(player, M) >= 2) && //
|
||||
(getQuestItemsCount(player, E) >= 2) && //
|
||||
(getQuestItemsCount(player, O) >= 1) && //
|
||||
(getQuestItemsCount(player, R) >= 1) && //
|
||||
(getQuestItemsCount(player, I) >= 1) && //
|
||||
(getQuestItemsCount(player, S) >= 1))
|
||||
{
|
||||
takeItems(player, M, 2);
|
||||
takeItems(player, E, 2);
|
||||
takeItems(player, O, 1);
|
||||
takeItems(player, R, 1);
|
||||
takeItems(player, I, 1);
|
||||
takeItems(player, S, 1);
|
||||
giveItems(player, MEMMORIES, 1);
|
||||
htmltext = "9000-1.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItem.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "chronicle":
|
||||
{
|
||||
if ((getQuestItemsCount(player, C) >= 2) && //
|
||||
(getQuestItemsCount(player, H) >= 1) && //
|
||||
(getQuestItemsCount(player, R) >= 1) && //
|
||||
(getQuestItemsCount(player, O) >= 1) && //
|
||||
(getQuestItemsCount(player, N) >= 1) && //
|
||||
(getQuestItemsCount(player, I) >= 1) && //
|
||||
(getQuestItemsCount(player, L) >= 1) && //
|
||||
(getQuestItemsCount(player, E) >= 1))
|
||||
{
|
||||
takeItems(player, C, 2);
|
||||
takeItems(player, H, 1);
|
||||
takeItems(player, R, 1);
|
||||
takeItems(player, O, 1);
|
||||
takeItems(player, N, 1);
|
||||
takeItems(player, I, 1);
|
||||
takeItems(player, L, 1);
|
||||
takeItems(player, E, 1);
|
||||
giveItems(player, CHRONICLE, 1);
|
||||
htmltext = "9000-1.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItem.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "exchangeA":
|
||||
{
|
||||
if (getQuestItemsCount(player, A) >= 2)
|
||||
{
|
||||
takeItems(player, A, 2);
|
||||
giveItems(player, getRandomEntry(LETTERS), 1);
|
||||
htmltext = "9000-2.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItemExchange.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "exchangeC":
|
||||
{
|
||||
if (getQuestItemsCount(player, C) >= 2)
|
||||
{
|
||||
takeItems(player, C, 2);
|
||||
giveItems(player, getRandomEntry(LETTERS), 1);
|
||||
htmltext = "9000-2.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItemExchange.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "exchangeE":
|
||||
{
|
||||
if (getQuestItemsCount(player, E) >= 2)
|
||||
{
|
||||
takeItems(player, E, 2);
|
||||
giveItems(player, getRandomEntry(LETTERS), 1);
|
||||
htmltext = "9000-2.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItemExchange.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "exchangeG":
|
||||
{
|
||||
if (getQuestItemsCount(player, G) >= 2)
|
||||
{
|
||||
takeItems(player, G, 2);
|
||||
giveItems(player, getRandomEntry(LETTERS), 1);
|
||||
htmltext = "9000-2.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItemExchange.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "exchangeI":
|
||||
{
|
||||
if (getQuestItemsCount(player, I) >= 2)
|
||||
{
|
||||
takeItems(player, I, 2);
|
||||
giveItems(player, getRandomEntry(LETTERS), 1);
|
||||
htmltext = "9000-2.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItemExchange.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "exchangeL":
|
||||
{
|
||||
if (getQuestItemsCount(player, L) >= 2)
|
||||
{
|
||||
takeItems(player, L, 2);
|
||||
giveItems(player, getRandomEntry(LETTERS), 1);
|
||||
htmltext = "9000-2.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItemExchange.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "exchangeM":
|
||||
{
|
||||
if (getQuestItemsCount(player, M) >= 2)
|
||||
{
|
||||
takeItems(player, M, 2);
|
||||
giveItems(player, getRandomEntry(LETTERS), 1);
|
||||
htmltext = "9000-2.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItemExchange.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "exchangeN":
|
||||
{
|
||||
if (getQuestItemsCount(player, N) >= 2)
|
||||
{
|
||||
takeItems(player, N, 2);
|
||||
giveItems(player, getRandomEntry(LETTERS), 1);
|
||||
htmltext = "9000-2.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItemExchange.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "exchangeO":
|
||||
{
|
||||
if (getQuestItemsCount(player, O) >= 2)
|
||||
{
|
||||
takeItems(player, O, 2);
|
||||
giveItems(player, getRandomEntry(LETTERS), 1);
|
||||
htmltext = "9000-2.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItemExchange.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "exchangeR":
|
||||
{
|
||||
if (getQuestItemsCount(player, R) >= 2)
|
||||
{
|
||||
takeItems(player, R, 2);
|
||||
giveItems(player, getRandomEntry(LETTERS), 1);
|
||||
htmltext = "9000-2.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItemExchange.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "exchangeH":
|
||||
{
|
||||
if (getQuestItemsCount(player, H) >= 1)
|
||||
{
|
||||
takeItems(player, H, 1);
|
||||
giveItems(player, getRandomEntry(LETTERS), 1);
|
||||
htmltext = "9000-2.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItemExchange.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "exchangeS":
|
||||
{
|
||||
if (getQuestItemsCount(player, S) >= 1)
|
||||
{
|
||||
takeItems(player, S, 1);
|
||||
giveItems(player, getRandomEntry(LETTERS), 1);
|
||||
htmltext = "9000-2.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItemExchange.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "exchangeII":
|
||||
{
|
||||
if (getQuestItemsCount(player, II) >= 1)
|
||||
{
|
||||
takeItems(player, II, 1);
|
||||
giveItems(player, getRandomEntry(LETTERS), 1);
|
||||
htmltext = "9000-2.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "noItemExchange.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerInstance player = event.getPlayer();
|
||||
if (player != null)
|
||||
{
|
||||
player.sendPacket(ExLetterCollectorUI.STATIC_PACKET);
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
return npc.getId() + "-1.htm";
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new LetterCollector();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,37 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<event name="Looking for right words" active="08 03 2017-09 03 2018" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/eventConfig.xsd">
|
||||
<event name="Letter Collector" active="30 06 2021-29 07 2021" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/eventConfig.xsd">
|
||||
<!-- Minimum level (5) also set at ExLetterCollectorUI.java -->
|
||||
<!-- Rewards and items set at ExLetterCollectorTakeReward.java -->
|
||||
<droplist>
|
||||
<add item="3875" min="1" max="1" chance="3%" /> <!-- Letter Collector's A -->
|
||||
<add item="3876" min="1" max="1" chance="3%" /> <!-- Letter Collector's C -->
|
||||
<add item="3877" min="1" max="1" chance="3%" /> <!-- Letter Collector's E -->
|
||||
<add item="3879" min="1" max="1" chance="3%" /> <!-- Letter Collector's G -->
|
||||
<add item="3881" min="1" max="1" chance="3%" /> <!-- Letter Collector's I -->
|
||||
<add item="3882" min="1" max="1" chance="3%" /> <!-- Letter Collector's L -->
|
||||
<add item="3883" min="1" max="1" chance="3%" /> <!-- Letter Collector's N -->
|
||||
<add item="3885" min="1" max="1" chance="3%" /> <!-- Letter Collector's R -->
|
||||
<add item="34956" min="1" max="1" chance="3%" /> <!-- Letter Collector's M -->
|
||||
<add item="3884" min="1" max="1" chance="3%" /> <!-- Letter Collector's O -->
|
||||
<add item="3886" min="1" max="1" chance="3%" /> <!-- Letter Collector's S -->
|
||||
<add item="3880" min="1" max="1" chance="3%" /> <!-- Letter Collector's H -->
|
||||
<add item="3888" min="1" max="1" chance="3%" /> <!-- Letter Collector's II -->
|
||||
<add item="3875" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's A -->
|
||||
<add item="3877" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's E -->
|
||||
<add item="3879" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's G -->
|
||||
<add item="3881" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's I -->
|
||||
<add item="3882" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's L -->
|
||||
<add item="3883" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's N -->
|
||||
<add item="3885" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's R -->
|
||||
<add item="34956" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's M -->
|
||||
<add item="3886" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's S -->
|
||||
<add item="3886" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's T -->
|
||||
<add item="3880" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's H -->
|
||||
<add item="3888" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's II -->
|
||||
<add item="92021" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's D -->
|
||||
<add item="93412" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's K -->
|
||||
<add item="93413" min="1" max="1" chance="1%" minLevel="5" /> <!-- Letter Collector's U -->
|
||||
</droplist>
|
||||
<spawnlist>
|
||||
<add npc="9000" x="-84008" y="243032" z="-3728" heading="49744" /> <!-- Talking Island -->
|
||||
<add npc="9000" x="45688" y="49080" z="-3056" heading="49744" /> <!-- Elven Village -->
|
||||
<add npc="9000" x="-44584" y="-113608" z="-192" heading="49744" /> <!-- Orc Village -->
|
||||
<add npc="9000" x="10643" y="17034" z="-4592" heading="49744" /> <!-- Dark Elven Village -->
|
||||
<add npc="9000" x="115656" y="-178056" z="-912" heading="49744" /> <!-- Dwarf Village -->
|
||||
<add npc="9000" x="-80485" y="149537" z="-3016" heading="16383" /> <!-- Gluddin -->
|
||||
<add npc="9000" x="-14143" y="123176" z="-3096" heading="30212" /> <!-- Gludio -->
|
||||
<add npc="9000" x="16354" y="142848" z="-2680" heading="14450" /> <!-- Dion -->
|
||||
<add npc="9000" x="82312" y="148616" z="-3440" heading="3355" /> <!-- Giran -->
|
||||
<add npc="9000" x="82008" y="53874" z="-1472" heading="3355" /> <!-- Oren -->
|
||||
<add npc="9000" x="147064" y="25928" z="-2008" heading="17863" /> <!-- Aden -->
|
||||
<add npc="9000" x="117380" y="76684" z="-2672" heading="40961" /> <!-- Hunters Village -->
|
||||
<add npc="9000" x="147464" y="-56984" z="-2784" heading="11547" /> <!-- Goddard -->
|
||||
</spawnlist>
|
||||
<messages>
|
||||
<add type="onEnd" text="Looking for right words: Event end!" />
|
||||
<add type="onEnter" text="Looking for right words: Event ongoing!" />
|
||||
<add type="onEnd" text="Letter Collector: Event end!" />
|
||||
<add type="onEnter" text="Letter Collector: Event ongoing!" />
|
||||
</messages>
|
||||
</event>
|
||||
@@ -1,4 +0,0 @@
|
||||
<html><body>Letter Collector Rosalia:<br>
|
||||
I'm sorry, but you'll need more letters to play.<br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest LetterCollector 9000-1.htm">Back</Button>
|
||||
</body></html>
|
||||
@@ -1,4 +0,0 @@
|
||||
<html><body>Letter Collector Rosalia:<br>
|
||||
I'm sorry, but you do not have enough letters to exchange!.<br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest LetterCollector 9000-1.htm">Back</Button>
|
||||
</body></html>
|
||||
Reference in New Issue
Block a user