diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/9000-1.htm b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/9000-1.htm new file mode 100644 index 0000000000..eb301506d6 --- /dev/null +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/9000-1.htm @@ -0,0 +1,9 @@ +Letter Collector Rosalia:
+I'm glad to see you, adventurer!
+Do you want to claim reward for collecting the words LINEAGE II, MEMORIES, or CHRONICLE?
+You can make these words from the letters you get while hunting the monsters in Lineage II world.
+ + + + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/9000-2.htm b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/9000-2.htm new file mode 100644 index 0000000000..0969500e70 --- /dev/null +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/9000-2.htm @@ -0,0 +1,17 @@ +Letter Collector Rosalia:
+I can exchange two of your letters for one 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!
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/LetterCollector.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/LetterCollector.java new file mode 100644 index 0000000000..b5dac29bf1 --- /dev/null +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/LetterCollector.java @@ -0,0 +1,361 @@ +/* + * 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 . + */ +package events.LetterCollector; + +import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; +import com.l2jmobius.gameserver.model.quest.LongTimeEvent; + +/** + * Event: Letter Collector + * @URL https://eu.4gameforum.com/threads/648400/ + * @author Mobius, Gigi, Adapted for Classic by QuangNguyen + */ +public final 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, L2Npc npc, L2PcInstance player) + { + String htmltext = null; + switch (event) + { + 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 htmltext; + } + + @Override + public String onFirstTalk(L2Npc npc, L2PcInstance player) + { + return npc.getId() + "-1.htm"; + } + + public static void main(String[] args) + { + new LetterCollector(); + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/config.xml b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/config.xml new file mode 100644 index 0000000000..98eecba25d --- /dev/null +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/config.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/noItem.htm b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/noItem.htm new file mode 100644 index 0000000000..65916fd0cf --- /dev/null +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/noItem.htm @@ -0,0 +1,4 @@ +Letter Collector Rosalia:
+I'm sorry, but you'll need more letters to play.
+ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/noItemExchange.htm b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/noItemExchange.htm new file mode 100644 index 0000000000..f18782aa1e --- /dev/null +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/events/LetterCollector/noItemExchange.htm @@ -0,0 +1,4 @@ +Letter Collector Rosalia:
+I'm sorry, but you do not have enough letters to exchange!.
+ + \ No newline at end of file