Fixed Letter Collector event.

This commit is contained in:
MobiusDev
2017-10-09 01:37:50 +00:00
parent a26fc09af4
commit 18e135c488
21 changed files with 651 additions and 453 deletions

View File

@@ -5,5 +5,4 @@ Collect letters to create <font color="LEVEL">LINEAGE II</font>, <font color="LE
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector lineage">"I've collected 'LINEAGE II.'"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector lineage">"I've collected 'LINEAGE II.'"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector together">"I've collected 'TOGETHER.'"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector together">"I've collected 'TOGETHER.'"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector ncsoft">"I've collected 'NCSOFT.'"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector ncsoft">"I've collected 'NCSOFT.'"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 2042">"I'd like a Letter Collector's Lucky Pouch."</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,8 @@
<html><body>Angel Cat:<br> <html><body>Angel Cat:<br>
<font color="LEVEL">So, here's the gist:</font><br> <font color="LEVEL">So, here's the gist:</font><br>
If you hunt monsters in the Lineage II world, you have a chance of obtaining letter-engraved items. If you collect these letters and bring them to me, I will give you a gift depending on the combination.<br>There are a total of 14 letters, and they are:<br> If you hunt monsters in the Lineage II world, you have a chance of obtaining letter-engraved items. If you collect these letters and bring them to me, I will give you a gift depending on the combination.<br>
<font color="LEVEL">A</font>, <font color="LEVEL">C</font>, <font color="LEVEL">E</font>, <font color="LEVEL">F</font>, <font color="LEVEL">G</font>, <font color="LEVEL">I</font>, <font color="LEVEL">L</font>, <font color="LEVEL">N</font>, <font color="LEVEL">O</font>, <font color="LEVEL">S</font>, <font color="LEVEL">T</font>, <font color="LEVEL">II</font>, <font color="LEVEL">R</font>, and <font color="LEVEL">H</font>. There are a total of 14 letters, and they are:<br>
<br> <font color="LEVEL">A</font>, <font color="LEVEL">C</font>, <font color="LEVEL">E</font>, <font color="LEVEL">F</font>, <font color="LEVEL">G</font>, <font color="LEVEL">I</font>, <font color="LEVEL">L</font>, <font color="LEVEL">N</font>, <font color="LEVEL">O</font>, <font color="LEVEL">S</font>, <font color="LEVEL">T</font>, <font color="LEVEL">II</font>, <font color="LEVEL">R</font>, and <font color="LEVEL">H</font>.<br>
<br> Combine the letters and numbers to create <font color="LEVEL">LINEAGE II</font>, <font color="LEVEL">TOGETHER</font>, or <font color="LEVEL">NCSOFT</font>.<br>
<br>
<br>Combine the letters and numbers to create <font color="LEVEL">LINEAGE II</font>, <font color="LEVEL">TOGETHER</font>, or <font color="LEVEL">NCSOFT</font>.
<br>
When you collect repeat letters, you can exchange them for <font color="LEVEL">Letter Collector's Lucky Pouch</font>. From the pouch, you can get <font color="LEVEL">Letter Collector's Pouch: RIIS</font>, from which you'll have a chance to get the letters R, II, or S.<br>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest LetterCollector 33873-1.htm">Back</Button> <Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest LetterCollector 33873-1.htm">Back</Button>
</body></html> </body></html>

View File

@@ -18,12 +18,13 @@ package events.LetterCollector;
import com.l2jmobius.gameserver.model.actor.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.quest.LongTimeEvent; import com.l2jmobius.gameserver.model.quest.LongTimeEvent;
/** /**
* Event: Letter Collector * Event: Letter Collector
* @URL http://www.lineage2.com/en/news/events/letter-collector-event-05112016.php * @URL http://www.lineage2.com/en/news/events/letter-collector-event-05112016.php
* @author Gigi * @author Mobius, Gigi
*/ */
public final class LetterCollector extends LongTimeEvent public final class LetterCollector extends LongTimeEvent
{ {
@@ -44,74 +45,75 @@ public final class LetterCollector extends LongTimeEvent
private static final int S = 3886; private static final int S = 3886;
private static final int T = 3887; private static final int T = 3887;
private static final int II = 3888; private static final int II = 3888;
// Rewards Together // Rewards
private static final int DARK_AMARANTHINE_ENHANCEMENT_STONE = 3875; private static final ItemHolder[] REWARDS_TAUTI =
private static final int TAUTI_DUAL_AXE = 35001; {
private static final int TAUTI_ONE_HEADED_AXE = 34998; new ItemHolder(34998, 1), // Tauti's One-handed Axe
private static final int KELBIM_BOW = 46062; new ItemHolder(35001, 1), // Tauti's Dual Axe
private static final int KELBIM_DUAL_DAGER = 46061; };
private static final int KELBIM_DAGER = 46060; private static final ItemHolder[] REWARDS_SPECTER =
private static final int KELBIM_CROSSBOW = 46063; {
private static final int KELBIM_ATELIA_FRAGMENT = 46079; new ItemHolder(18035, 1), // Blessed Specter Shaper
private static final int BLESSED_SPECTER_THROWER = 18041; new ItemHolder(18036, 1), // Blessed Specter Cutter
private static final int BLESSED_SPECTER_STORMER = 18040; new ItemHolder(18037, 1), // Blessed Specter Slasher
private static final int BLESSED_SPECTER_RETRIBUTER = 18045; new ItemHolder(18038, 1), // Blessed Specter Avenger
private static final int BLESSED_SPECTER_BUSTER = 18043; new ItemHolder(18039, 1), // Blessed Specter Fighter
private static final int BLESSED_SPECTER_DUALSWORD = 18046; new ItemHolder(18040, 1), // Blessed Specter Stormer
private static final int BLESSED_SPECTER_FIGHTER = 18039; new ItemHolder(18041, 1), // Blessed Specter Thrower
private static final int BLESSED_SPECTER_CASTER = 18044; new ItemHolder(18042, 1), // Blessed Specter Shooter
private static final int BLESSED_SPECTER_DUAL_DAGGER = 18047; new ItemHolder(18043, 1), // Blessed Specter Buster
private static final int BLESSED_SPECTER_SLASHER = 18037; new ItemHolder(18044, 1), // Blessed Specter Caster
private static final int BLESSED_SPECTER_CUTTER = 18036; new ItemHolder(18045, 1), // Blessed Specter Retributer
private static final int BLESSED_SPECTER_SHAPER = 18035; new ItemHolder(18046, 1), // Blessed Specter Dualsword
private static final int BLESSED_SPECTER_AVANGER = 18038; new ItemHolder(18047, 1), // Blessed Specter Dual Dagger
private static final int BLESSED_SPECTER_DUAL_BLUNT = 18048; new ItemHolder(18048, 1), // Blessed Specter Dual Blunt Weapon
private static final int BLESSED_SPECTER_SHOOTER = 18042; };
private static final int DARK_ETERNAL_ENHACEMENT_STONE = 35567; private static final ItemHolder[] REWARDS_SERAPH =
private static final int BLESSED_SERAPH_BREASTPLATE = 18050; {
private static final int BLESSED_SERAPH_LEATHER_ARMOR = 18056; new ItemHolder(18049, 1), // Blessed Seraph Helmet
private static final int BLESSED_SERAPH_TUNIC = 18061; new ItemHolder(18050, 1), // Blessed Seraph Breastplate
private static final int BLESSED_SERAPH_LEATHER_LEGGINGS = 18057; new ItemHolder(18051, 1), // Blessed Seraph Gaiters
private static final int HIGH_GRADE_WIND_DEY_PACK = 39562; new ItemHolder(18052, 1), // Blessed Seraph Gauntlets
private static final int BLESSED_SERAPH_STOCKINGS = 18062; new ItemHolder(18053, 1), // Blessed Seraph Boots
private static final int LV_5_LEGENDERY_DEY_PACK = 34954; new ItemHolder(18054, 1), // Blessed Seraph Shield
private static final int BLESSED_SERAPH_SHOES = 18064; new ItemHolder(18055, 1), // Blessed Seraph Leather Helmet
private static final int BLESSED_SERAPH_HELMET = 18049; new ItemHolder(18056, 1), // Blessed Seraph Leather Armor
private static final int BLESSED_SERAPH_GAITERS = 18051; new ItemHolder(18057, 1), // Blessed Seraph Leather Leggings
private static final int BLESSED_SERAPH_LEATHER_HELMET = 18055; new ItemHolder(18058, 1), // Blessed Seraph Leather Gloves
private static final int BLESSED_SERAPH_CIRCLET = 18060; new ItemHolder(18059, 1), // Blessed Seraph Leather Boots
private static final int BLESSED_SERAPH_GUANTLETS = 18052; new ItemHolder(18060, 1), // Blessed Seraph Circlet
private static final int BLESSED_SERAPH_LEATHER_GLOVES = 18058; new ItemHolder(18061, 1), // Blessed Seraph Tunic
private static final int LV_5_ANCIENT_DEY_PACK = 34955; new ItemHolder(18062, 1), // Blessed Seraph Stockings
private static final int BLESSED_SERAPH_LEATHER_BOOTS = 18059; new ItemHolder(18063, 1), // Blessed Seraph Gloves
private static final int BLESSED_SERAPH_BOOTS = 18053; new ItemHolder(18064, 1), // Blessed Seraph Shoes
private static final int BLESSED_SERAPH_GLOVES = 18063; new ItemHolder(18065, 1), // Blessed Seraph Sigil
private static final int LV_5_GIANT_DEY_PACK = 34953; };
private static final int BLESSED_SERAPH_SIGIL = 18065; private static final ItemHolder[] OTHER_REWARDS =
private static final int BLESSED_SERAPH_SHIELD = 18054; {
private static final int DARK_ETERNAL_ENHACEMENT_STONE_FRAGMENT = 37802; new ItemHolder(17371, 20), // Crystal (R-grade)
private static final int TOP_GRADE_SPIRIT_STONE = 45932; new ItemHolder(17754, 2000), // Soulshot (R-grade)
private static final int MID_GRADE_WIND_DYE_PACK = 39561; new ItemHolder(19440, 1), // Gemstone (R-grade)
private static final int LV_4_LEGENDERY_DEY_PACK = 34951; new ItemHolder(19442, 500), // Blessed Spiritshot (R-grade)
private static final int FORTUNE_POKET_STAGE_5 = 39633; new ItemHolder(34945, 1), // Lv. 3 Giant Dye Pack
private static final int LEONAS_SCROLL_10000000_SP = 38103; new ItemHolder(34946, 1), // Lv. 3 Legendary Dye Pack
private static final int LOW_GRADE_WIND_DYE_PACK = 39560; new ItemHolder(34947, 1), // Lv. 3 Ancient Dye Pack
private static final int LV_4_ANCIENT_DEY_PACK = 34952; new ItemHolder(34950, 1), // Lv. 4 Giant Dye Pack
private static final int LV_3_LEGENDERY_DEY_PACK = 34946; new ItemHolder(34951, 1), // Lv. 4 Legendary Dye Pack
private static final int HIGH_GRADE_SPIRIT_STONE = 45931; new ItemHolder(34952, 1), // Lv. 4 Ancient Dye Pack
private static final int LEONAS_SCROLL_5000000_SP = 38102; new ItemHolder(34953, 1), // Lv. 5 Giant Dye Pack
private static final int LV_4_GIANT_DEY_PACK = 34950; new ItemHolder(34954, 1), // Lv. 5 Legendary Dye Pack
private static final int MID_GRADE_SPIRIT_STONE = 45930; new ItemHolder(34955, 1), // Lv. 5 Ancient Dye Pack
private static final int SPIRIT_STONE_HAIR_ACCESSORY = 45937; new ItemHolder(35567, 1), // Dark Eternal Enhancement Stone
private static final int LV_3_ANCIENT_DEY_PACK = 34947; new ItemHolder(37009, 3), // Blueberry Cake (MP)
private static final int LV_3_GIANT_DEY_PACK = 34945; new ItemHolder(37802, 1), // Dark Eternal Enhancement Stone Fragment
private static final int LEONAS_SCROLL_1000000_SP = 38101; new ItemHolder(38101, 1), // Leona's Scroll: 1,000,000 SP
private static final int GAMESTONE_R_GRADE = 19440; new ItemHolder(38102, 1), // Leona's Scroll: 5,000,000 SP
private static final int BLUEBERRY_CAKE = 37009; new ItemHolder(38103, 1), // Leona's Scroll: 10,000,000 SP
private static final int SPIRIT_STONE = 45929; new ItemHolder(39560, 1), // Low-grade Wind Dye Pack
private static final int BLESSED_SPIRITSHOT_R_GEADE = 19442; new ItemHolder(39561, 1), // Mid-grade Wind Dye Pack
private static final int SOULSHOT_R_GEADE = 17754; new ItemHolder(39562, 1), // High-grade Wind Dye Pack
private static final int CRYSTAL_R_GEADE = 17371; new ItemHolder(39633, 1), // Fortune Pocket - Stage 5
};
private LetterCollector() private LetterCollector()
{ {
@@ -134,7 +136,13 @@ public final class LetterCollector extends LongTimeEvent
} }
case "lineage": 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)) 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, L, 1);
takeItems(player, I, 1); takeItems(player, I, 1);
@@ -143,6 +151,7 @@ public final class LetterCollector extends LongTimeEvent
takeItems(player, A, 1); takeItems(player, A, 1);
takeItems(player, G, 1); takeItems(player, G, 1);
takeItems(player, II, 1); takeItems(player, II, 1);
giveItems(player, getReward());
htmltext = "33873-1.htm"; htmltext = "33873-1.htm";
} }
else else
@@ -153,7 +162,12 @@ public final class LetterCollector extends LongTimeEvent
} }
case "together": case "together":
{ {
if ((getQuestItemsCount(player, T) >= 2) && (getQuestItemsCount(player, O) >= 1) && (getQuestItemsCount(player, G) >= 1) && (getQuestItemsCount(player, E) >= 2) && (getQuestItemsCount(player, H) >= 1) && (getQuestItemsCount(player, R) >= 1)) if ((getQuestItemsCount(player, T) >= 2) && //
(getQuestItemsCount(player, O) >= 1) && //
(getQuestItemsCount(player, G) >= 1) && //
(getQuestItemsCount(player, E) >= 2) && //
(getQuestItemsCount(player, H) >= 1) && //
(getQuestItemsCount(player, R) >= 1))
{ {
takeItems(player, T, 2); takeItems(player, T, 2);
takeItems(player, O, 1); takeItems(player, O, 1);
@@ -161,73 +175,7 @@ public final class LetterCollector extends LongTimeEvent
takeItems(player, E, 2); takeItems(player, E, 2);
takeItems(player, H, 1); takeItems(player, H, 1);
takeItems(player, R, 1); takeItems(player, R, 1);
giveItemRandomly(player, null, DARK_AMARANTHINE_ENHANCEMENT_STONE, 1, 1, 0.07, false); giveItems(player, getReward());
giveItemRandomly(player, null, TAUTI_DUAL_AXE, 1, 1, 0.01, false);
giveItemRandomly(player, null, TAUTI_ONE_HEADED_AXE, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_BOW, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_DUAL_DAGER, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_DAGER, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_CROSSBOW, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_ATELIA_FRAGMENT, 1, 1, 0.05, false);
giveItemRandomly(player, null, BLESSED_SPECTER_THROWER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_STORMER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_RETRIBUTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_BUSTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_DUALSWORD, 1, 1, 0.015, false);
giveItemRandomly(player, null, BLESSED_SPECTER_FIGHTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_CASTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_DUAL_DAGGER, 1, 1, 0.015, false);
giveItemRandomly(player, null, BLESSED_SPECTER_SLASHER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_CUTTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_SHAPER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_AVANGER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_DUAL_BLUNT, 1, 1, 0.015, false);
giveItemRandomly(player, null, BLESSED_SPECTER_SHOOTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, DARK_ETERNAL_ENHACEMENT_STONE, 1, 1, 0.25, false);
giveItemRandomly(player, null, BLESSED_SERAPH_BREASTPLATE, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_ARMOR, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_TUNIC, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_LEGGINGS, 1, 1, 0.025, false);
giveItemRandomly(player, null, HIGH_GRADE_WIND_DEY_PACK, 1, 1, 0.3, false);
giveItemRandomly(player, null, BLESSED_SERAPH_STOCKINGS, 1, 1, 0.025, false);
giveItemRandomly(player, null, LV_5_LEGENDERY_DEY_PACK, 1, 1, 0.1, false);
giveItemRandomly(player, null, BLESSED_SERAPH_SHOES, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_HELMET, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_GAITERS, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_HELMET, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_CIRCLET, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_GUANTLETS, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_GLOVES, 1, 1, 0.025, false);
giveItemRandomly(player, null, LV_5_ANCIENT_DEY_PACK, 1, 1, 0.15, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_BOOTS, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_BOOTS, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_GLOVES, 1, 1, 0.025, false);
giveItemRandomly(player, null, LV_5_GIANT_DEY_PACK, 1, 1, 0.15, false);
giveItemRandomly(player, null, BLESSED_SERAPH_SIGIL, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_SHIELD, 1, 1, 0.025, false);
giveItemRandomly(player, null, DARK_ETERNAL_ENHACEMENT_STONE_FRAGMENT, 1, 1, 0.55, false);
giveItemRandomly(player, null, TOP_GRADE_SPIRIT_STONE, 1, 1, 0.06, false);
giveItemRandomly(player, null, MID_GRADE_WIND_DYE_PACK, 1, 1, 0.3, false);
giveItemRandomly(player, null, LV_4_LEGENDERY_DEY_PACK, 1, 1, 0.2, false);
giveItemRandomly(player, null, FORTUNE_POKET_STAGE_5, 1, 1, 0.32, false);
giveItemRandomly(player, null, LEONAS_SCROLL_10000000_SP, 1, 1, 0.25, false);
giveItemRandomly(player, null, LOW_GRADE_WIND_DYE_PACK, 1, 1, 0.38, false);
giveItemRandomly(player, null, LV_4_ANCIENT_DEY_PACK, 1, 1, 0.24, false);
giveItemRandomly(player, null, LV_3_LEGENDERY_DEY_PACK, 1, 1, 0.25, false);
giveItemRandomly(player, null, HIGH_GRADE_SPIRIT_STONE, 1, 1, 0.08, false);
giveItemRandomly(player, null, LV_4_GIANT_DEY_PACK, 1, 1, 0.2, false);
giveItemRandomly(player, null, MID_GRADE_SPIRIT_STONE, 1, 1, 0.1, false);
giveItemRandomly(player, null, SPIRIT_STONE_HAIR_ACCESSORY, 1, 1, 0.1, false);
giveItemRandomly(player, null, LV_3_ANCIENT_DEY_PACK, 1, 1, 0.26, false);
giveItemRandomly(player, null, LEONAS_SCROLL_5000000_SP, 1, 1, 0.3, false);
giveItemRandomly(player, null, LV_3_GIANT_DEY_PACK, 1, 1, 0.25, false);
giveItemRandomly(player, null, LEONAS_SCROLL_1000000_SP, 1, 1, 0.35, false);
giveItemRandomly(player, null, GAMESTONE_R_GRADE, 1, 1, 0.8, false);
giveItemRandomly(player, null, BLUEBERRY_CAKE, 3, 3, 0.3, false);
giveItemRandomly(player, null, SPIRIT_STONE, 1, 1, 0.15, false);
giveItemRandomly(player, null, BLESSED_SPIRITSHOT_R_GEADE, 500, 500, 0.7, false);
giveItemRandomly(player, null, SOULSHOT_R_GEADE, 2000, 2000, 0.8, false);
giveItemRandomly(player, null, CRYSTAL_R_GEADE, 20, 20, 0.14, false);
htmltext = "33873-1.htm"; htmltext = "33873-1.htm";
} }
else else
@@ -238,7 +186,12 @@ public final class LetterCollector extends LongTimeEvent
} }
case "ncsoft": case "ncsoft":
{ {
if ((getQuestItemsCount(player, N) >= 1) && (getQuestItemsCount(player, C) >= 1) && (getQuestItemsCount(player, S) >= 1) && (getQuestItemsCount(player, O) >= 1) && (getQuestItemsCount(player, F) >= 1) && (getQuestItemsCount(player, T) >= 1)) if ((getQuestItemsCount(player, N) >= 1) && //
(getQuestItemsCount(player, C) >= 1) && //
(getQuestItemsCount(player, S) >= 1) && //
(getQuestItemsCount(player, O) >= 1) && //
(getQuestItemsCount(player, F) >= 1) && //
(getQuestItemsCount(player, T) >= 1))
{ {
takeItems(player, N, 1); takeItems(player, N, 1);
takeItems(player, C, 1); takeItems(player, C, 1);
@@ -246,6 +199,7 @@ public final class LetterCollector extends LongTimeEvent
takeItems(player, O, 1); takeItems(player, O, 1);
takeItems(player, F, 1); takeItems(player, F, 1);
takeItems(player, T, 1); takeItems(player, T, 1);
giveItems(player, getReward());
htmltext = "33873-1.htm"; htmltext = "33873-1.htm";
} }
else else
@@ -258,6 +212,26 @@ public final class LetterCollector extends LongTimeEvent
return htmltext; return htmltext;
} }
private ItemHolder getReward()
{
if (getRandom(100) < 1)
{
return REWARDS_TAUTI[getRandom(REWARDS_TAUTI.length)];
}
else if (getRandom(100) < 4)
{
return REWARDS_SPECTER[getRandom(REWARDS_SPECTER.length)];
}
else if (getRandom(100) < 4)
{
return REWARDS_SERAPH[getRandom(REWARDS_SERAPH.length)];
}
else
{
return OTHER_REWARDS[getRandom(OTHER_REWARDS.length)];
}
}
@Override @Override
public String onFirstTalk(L2Npc npc, L2PcInstance player) public String onFirstTalk(L2Npc npc, L2PcInstance player)
{ {

View File

@@ -20,10 +20,10 @@
<add npc="33873" x="-78832" y="249115" z="-3272" heading="56380" /> <!-- Faeron Village --> <add npc="33873" x="-78832" y="249115" z="-3272" heading="56380" /> <!-- Faeron Village -->
<add npc="33873" x="-80485" y="149537" z="-3016" heading="16383" /> <!-- Gluddin --> <add npc="33873" x="-80485" y="149537" z="-3016" heading="16383" /> <!-- Gluddin -->
<add npc="33873" x="117380" y="76684" z="-2672" heading="40961" /> <!-- Hunters Village --> <add npc="33873" x="117380" y="76684" z="-2672" heading="40961" /> <!-- Hunters Village -->
<add npc="33873" x="208499" y="87743" z="-1006" heading="11264" /> <!-- Arcan Village --> <add npc="33873" x="208499" y="87743" z="-1006" heading="11264" /> <!-- Arcan -->
</spawnlist> </spawnlist>
<messages> <messages>
<add type="onEnd" text="Letter Collector: Event end!" /> <add type="onEnd" text="Letter Collector: Event end!" />
<add type="onEnter" text="Letter Collector (5/11~6/1)" /> <add type="onEnter" text="Letter Collector: Event ongoing!" />
</messages> </messages>
</event> </event>

View File

@@ -52,6 +52,18 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<set name="extractableCountMin" val="1" />
<set name="extractableCountMax" val="1" />
<capsuled_items>
<item id="3877" min="1" max="1" chance="28.571" />
<item id="3879" min="1" max="1" chance="14.286" />
<item id="3880" min="1" max="1" chance="14.286" />
<item id="3884" min="1" max="1" chance="14.286" />
<item id="3887" min="1" max="1" chance="28.571" />
</capsuled_items>
</item> </item>
<item id="37004" name="Letter Collector's Pouch: LINEAGE II" type="EtcItem"> <item id="37004" name="Letter Collector's Pouch: LINEAGE II" type="EtcItem">
<!-- Magic pouch that contains the letters of LINEAGE. Double-click to get one of the following letters: L, I, N, E, A, G and E. The letter II can be obtained from the RIIS pouch at a certain probability. --> <!-- Magic pouch that contains the letters of LINEAGE. Double-click to get one of the following letters: L, I, N, E, A, G and E. The letter II can be obtained from the RIIS pouch at a certain probability. -->
@@ -60,6 +72,19 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<set name="extractableCountMin" val="1" />
<set name="extractableCountMax" val="1" />
<capsuled_items>
<item id="3875" min="1" max="1" chance="14.286" />
<item id="3877" min="1" max="1" chance="28.571" />
<item id="3879" min="1" max="1" chance="14.285" />
<item id="3881" min="1" max="1" chance="14.286" />
<item id="3882" min="1" max="1" chance="14.286" />
<item id="3883" min="1" max="1" chance="14.286" />
</capsuled_items>
</item> </item>
<item id="37005" name="Letter Collector's Pouch: NCSOFT" type="EtcItem"> <item id="37005" name="Letter Collector's Pouch: NCSOFT" type="EtcItem">
<!-- Magic pouch that contains the letters of NCOFT. Double-click to get one of the following letters: N, C, O, F and T. The letter S can be obtained from the RIIS pouch at a certain probability. --> <!-- Magic pouch that contains the letters of NCOFT. Double-click to get one of the following letters: N, C, O, F and T. The letter S can be obtained from the RIIS pouch at a certain probability. -->
@@ -68,6 +93,18 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<set name="extractableCountMin" val="1" />
<set name="extractableCountMax" val="1" />
<capsuled_items>
<item id="3876" min="1" max="1" chance="20" />
<item id="3878" min="1" max="1" chance="20" />
<item id="3883" min="1" max="1" chance="20" />
<item id="3884" min="1" max="1" chance="20" />
<item id="3887" min="1" max="1" chance="20" />
</capsuled_items>
</item> </item>
<item id="37006" name="Letter Collector's Pouch: RIIS" type="EtcItem"> <item id="37006" name="Letter Collector's Pouch: RIIS" type="EtcItem">
<!-- Magic pouch that contains the letters of RIIS. Double-click to get one of the following letters: R, II and S. --> <!-- Magic pouch that contains the letters of RIIS. Double-click to get one of the following letters: R, II and S. -->
@@ -76,6 +113,16 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<set name="extractableCountMin" val="1" />
<set name="extractableCountMax" val="1" />
<capsuled_items>
<item id="3888" min="1" max="1" chance="33.333" />
<item id="3885" min="1" max="1" chance="33.333" />
<item id="3886" min="1" max="1" chance="33.334" />
</capsuled_items>
</item> </item>
<item id="37007" name="Letter Collector's Lucky Pouch" type="EtcItem"> <item id="37007" name="Letter Collector's Lucky Pouch" type="EtcItem">
<!-- Chance to test your luck! You can get Letter Collector's Pouch: RIIS at a certain probability. If you fail, you won't get anything. --> <!-- Chance to test your luck! You can get Letter Collector's Pouch: RIIS at a certain probability. If you fail, you won't get anything. -->
@@ -84,6 +131,12 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<capsuled_items>
<item id="37006" min="1" max="1" chance="75" />
</capsuled_items>
</item> </item>
<item id="37008" name="Strawberry Cake (HP)" type="EtcItem"> <item id="37008" name="Strawberry Cake (HP)" type="EtcItem">
<!-- Restores HP by 50%. Cooldown is 2 min. --> <!-- Restores HP by 50%. Cooldown is 2 min. -->

View File

@@ -22,8 +22,14 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" /> <set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SCROLL" />
<set name="handler" val="ItemSkills" />
<skills>
<skill id="17321" level="1" /> <!-- Leona's Scroll: 1,000,000 SP -->
</skills>
</item> </item>
<item id="38102" name="Leona's Scroll: 5,000,000 SP" type="EtcItem"> <item id="38102" name="Leona's Scroll: 5,000,000 SP" type="EtcItem">
<!-- Double-click to obtain 5,000,000 SP. --> <!-- Double-click to obtain 5,000,000 SP. -->
@@ -34,6 +40,13 @@
<set name="is_commissionable" val="false" /> <set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" /> <set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SCROLL" />
<set name="handler" val="ItemSkills" />
<skills>
<skill id="17322" level="1" /> <!-- Leona's Scroll: 5,000,000 SP -->
</skills>
</item> </item>
<item id="38103" name="Leona's Scroll: 10,000,000 SP" type="EtcItem"> <item id="38103" name="Leona's Scroll: 10,000,000 SP" type="EtcItem">
<!-- Double-click to obtain 10,000,000 SP. --> <!-- Double-click to obtain 10,000,000 SP. -->
@@ -44,6 +57,13 @@
<set name="is_commissionable" val="false" /> <set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" /> <set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SCROLL" />
<set name="handler" val="ItemSkills" />
<skills>
<skill id="17323" level="1" /> <!-- Leona's Scroll: 10,000,000 SP -->
</skills>
</item> </item>
<item id="38104" name="Leona's Cube Pack" type="EtcItem"> <item id="38104" name="Leona's Cube Pack" type="EtcItem">
<!-- Double-click to obtain Leona's Cube (30-day). --> <!-- Double-click to obtain Leona's Cube (30-day). -->

View File

@@ -246,7 +246,15 @@
<!-- Gives 1,000,000 SP. --> <!-- Gives 1,000,000 SP. -->
<icon>icon.etc_sp_scroll1_i00</icon> <icon>icon.etc_sp_scroll1_i00</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<hitTime>200</hitTime>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<magicLvl>1</magicLvl>
<isMagic>2</isMagic>
<reuseDelay>3000</reuseDelay> <reuseDelay>3000</reuseDelay>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<effects> <effects>
<effect name="GiveSp"> <effect name="GiveSp">
<sp>1000000</sp> <sp>1000000</sp>
@@ -257,7 +265,15 @@
<!-- Gives 5,000,000 SP. --> <!-- Gives 5,000,000 SP. -->
<icon>icon.etc_sp_scroll2_i00</icon> <icon>icon.etc_sp_scroll2_i00</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<hitTime>200</hitTime>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<magicLvl>1</magicLvl>
<isMagic>2</isMagic>
<reuseDelay>3000</reuseDelay> <reuseDelay>3000</reuseDelay>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<effects> <effects>
<effect name="GiveSp"> <effect name="GiveSp">
<sp>5000000</sp> <sp>5000000</sp>
@@ -268,7 +284,15 @@
<!-- Gives 10,000,000 SP. --> <!-- Gives 10,000,000 SP. -->
<icon>icon.etc_sp_scroll3_i00</icon> <icon>icon.etc_sp_scroll3_i00</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<hitTime>200</hitTime>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<magicLvl>1</magicLvl>
<isMagic>2</isMagic>
<reuseDelay>3000</reuseDelay> <reuseDelay>3000</reuseDelay>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<effects> <effects>
<effect name="GiveSp"> <effect name="GiveSp">
<sp>10000000</sp> <sp>10000000</sp>

View File

@@ -5,5 +5,4 @@ Collect letters to create <font color="LEVEL">LINEAGE II</font>, <font color="LE
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector lineage">"I've collected 'LINEAGE II.'"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector lineage">"I've collected 'LINEAGE II.'"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector together">"I've collected 'TOGETHER.'"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector together">"I've collected 'TOGETHER.'"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector ncsoft">"I've collected 'NCSOFT.'"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector ncsoft">"I've collected 'NCSOFT.'"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 2042">"I'd like a Letter Collector's Lucky Pouch."</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,8 @@
<html><body>Angel Cat:<br> <html><body>Angel Cat:<br>
<font color="LEVEL">So, here's the gist:</font><br> <font color="LEVEL">So, here's the gist:</font><br>
If you hunt monsters in the Lineage II world, you have a chance of obtaining letter-engraved items. If you collect these letters and bring them to me, I will give you a gift depending on the combination.<br>There are a total of 14 letters, and they are:<br> If you hunt monsters in the Lineage II world, you have a chance of obtaining letter-engraved items. If you collect these letters and bring them to me, I will give you a gift depending on the combination.<br>
<font color="LEVEL">A</font>, <font color="LEVEL">C</font>, <font color="LEVEL">E</font>, <font color="LEVEL">F</font>, <font color="LEVEL">G</font>, <font color="LEVEL">I</font>, <font color="LEVEL">L</font>, <font color="LEVEL">N</font>, <font color="LEVEL">O</font>, <font color="LEVEL">S</font>, <font color="LEVEL">T</font>, <font color="LEVEL">II</font>, <font color="LEVEL">R</font>, and <font color="LEVEL">H</font>. There are a total of 14 letters, and they are:<br>
<br> <font color="LEVEL">A</font>, <font color="LEVEL">C</font>, <font color="LEVEL">E</font>, <font color="LEVEL">F</font>, <font color="LEVEL">G</font>, <font color="LEVEL">I</font>, <font color="LEVEL">L</font>, <font color="LEVEL">N</font>, <font color="LEVEL">O</font>, <font color="LEVEL">S</font>, <font color="LEVEL">T</font>, <font color="LEVEL">II</font>, <font color="LEVEL">R</font>, and <font color="LEVEL">H</font>.<br>
<br> Combine the letters and numbers to create <font color="LEVEL">LINEAGE II</font>, <font color="LEVEL">TOGETHER</font>, or <font color="LEVEL">NCSOFT</font>.<br>
<br>
<br>Combine the letters and numbers to create <font color="LEVEL">LINEAGE II</font>, <font color="LEVEL">TOGETHER</font>, or <font color="LEVEL">NCSOFT</font>.
<br>
When you collect repeat letters, you can exchange them for <font color="LEVEL">Letter Collector's Lucky Pouch</font>. From the pouch, you can get <font color="LEVEL">Letter Collector's Pouch: RIIS</font>, from which you'll have a chance to get the letters R, II, or S.<br>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest LetterCollector 33873-1.htm">Back</Button> <Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest LetterCollector 33873-1.htm">Back</Button>
</body></html> </body></html>

View File

@@ -18,12 +18,13 @@ package events.LetterCollector;
import com.l2jmobius.gameserver.model.actor.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.quest.LongTimeEvent; import com.l2jmobius.gameserver.model.quest.LongTimeEvent;
/** /**
* Event: Letter Collector * Event: Letter Collector
* @URL http://www.lineage2.com/en/news/events/letter-collector-event-05112016.php * @URL http://www.lineage2.com/en/news/events/letter-collector-event-05112016.php
* @author Gigi * @author Mobius, Gigi
*/ */
public final class LetterCollector extends LongTimeEvent public final class LetterCollector extends LongTimeEvent
{ {
@@ -44,74 +45,75 @@ public final class LetterCollector extends LongTimeEvent
private static final int S = 3886; private static final int S = 3886;
private static final int T = 3887; private static final int T = 3887;
private static final int II = 3888; private static final int II = 3888;
// Rewards Together // Rewards
private static final int DARK_AMARANTHINE_ENHANCEMENT_STONE = 3875; private static final ItemHolder[] REWARDS_TAUTI =
private static final int TAUTI_DUAL_AXE = 35001; {
private static final int TAUTI_ONE_HEADED_AXE = 34998; new ItemHolder(34998, 1), // Tauti's One-handed Axe
private static final int KELBIM_BOW = 46062; new ItemHolder(35001, 1), // Tauti's Dual Axe
private static final int KELBIM_DUAL_DAGER = 46061; };
private static final int KELBIM_DAGER = 46060; private static final ItemHolder[] REWARDS_SPECTER =
private static final int KELBIM_CROSSBOW = 46063; {
private static final int KELBIM_ATELIA_FRAGMENT = 46079; new ItemHolder(18035, 1), // Blessed Specter Shaper
private static final int BLESSED_SPECTER_THROWER = 18041; new ItemHolder(18036, 1), // Blessed Specter Cutter
private static final int BLESSED_SPECTER_STORMER = 18040; new ItemHolder(18037, 1), // Blessed Specter Slasher
private static final int BLESSED_SPECTER_RETRIBUTER = 18045; new ItemHolder(18038, 1), // Blessed Specter Avenger
private static final int BLESSED_SPECTER_BUSTER = 18043; new ItemHolder(18039, 1), // Blessed Specter Fighter
private static final int BLESSED_SPECTER_DUALSWORD = 18046; new ItemHolder(18040, 1), // Blessed Specter Stormer
private static final int BLESSED_SPECTER_FIGHTER = 18039; new ItemHolder(18041, 1), // Blessed Specter Thrower
private static final int BLESSED_SPECTER_CASTER = 18044; new ItemHolder(18042, 1), // Blessed Specter Shooter
private static final int BLESSED_SPECTER_DUAL_DAGGER = 18047; new ItemHolder(18043, 1), // Blessed Specter Buster
private static final int BLESSED_SPECTER_SLASHER = 18037; new ItemHolder(18044, 1), // Blessed Specter Caster
private static final int BLESSED_SPECTER_CUTTER = 18036; new ItemHolder(18045, 1), // Blessed Specter Retributer
private static final int BLESSED_SPECTER_SHAPER = 18035; new ItemHolder(18046, 1), // Blessed Specter Dualsword
private static final int BLESSED_SPECTER_AVANGER = 18038; new ItemHolder(18047, 1), // Blessed Specter Dual Dagger
private static final int BLESSED_SPECTER_DUAL_BLUNT = 18048; new ItemHolder(18048, 1), // Blessed Specter Dual Blunt Weapon
private static final int BLESSED_SPECTER_SHOOTER = 18042; };
private static final int DARK_ETERNAL_ENHACEMENT_STONE = 35567; private static final ItemHolder[] REWARDS_SERAPH =
private static final int BLESSED_SERAPH_BREASTPLATE = 18050; {
private static final int BLESSED_SERAPH_LEATHER_ARMOR = 18056; new ItemHolder(18049, 1), // Blessed Seraph Helmet
private static final int BLESSED_SERAPH_TUNIC = 18061; new ItemHolder(18050, 1), // Blessed Seraph Breastplate
private static final int BLESSED_SERAPH_LEATHER_LEGGINGS = 18057; new ItemHolder(18051, 1), // Blessed Seraph Gaiters
private static final int HIGH_GRADE_WIND_DEY_PACK = 39562; new ItemHolder(18052, 1), // Blessed Seraph Gauntlets
private static final int BLESSED_SERAPH_STOCKINGS = 18062; new ItemHolder(18053, 1), // Blessed Seraph Boots
private static final int LV_5_LEGENDERY_DEY_PACK = 34954; new ItemHolder(18054, 1), // Blessed Seraph Shield
private static final int BLESSED_SERAPH_SHOES = 18064; new ItemHolder(18055, 1), // Blessed Seraph Leather Helmet
private static final int BLESSED_SERAPH_HELMET = 18049; new ItemHolder(18056, 1), // Blessed Seraph Leather Armor
private static final int BLESSED_SERAPH_GAITERS = 18051; new ItemHolder(18057, 1), // Blessed Seraph Leather Leggings
private static final int BLESSED_SERAPH_LEATHER_HELMET = 18055; new ItemHolder(18058, 1), // Blessed Seraph Leather Gloves
private static final int BLESSED_SERAPH_CIRCLET = 18060; new ItemHolder(18059, 1), // Blessed Seraph Leather Boots
private static final int BLESSED_SERAPH_GUANTLETS = 18052; new ItemHolder(18060, 1), // Blessed Seraph Circlet
private static final int BLESSED_SERAPH_LEATHER_GLOVES = 18058; new ItemHolder(18061, 1), // Blessed Seraph Tunic
private static final int LV_5_ANCIENT_DEY_PACK = 34955; new ItemHolder(18062, 1), // Blessed Seraph Stockings
private static final int BLESSED_SERAPH_LEATHER_BOOTS = 18059; new ItemHolder(18063, 1), // Blessed Seraph Gloves
private static final int BLESSED_SERAPH_BOOTS = 18053; new ItemHolder(18064, 1), // Blessed Seraph Shoes
private static final int BLESSED_SERAPH_GLOVES = 18063; new ItemHolder(18065, 1), // Blessed Seraph Sigil
private static final int LV_5_GIANT_DEY_PACK = 34953; };
private static final int BLESSED_SERAPH_SIGIL = 18065; private static final ItemHolder[] OTHER_REWARDS =
private static final int BLESSED_SERAPH_SHIELD = 18054; {
private static final int DARK_ETERNAL_ENHACEMENT_STONE_FRAGMENT = 37802; new ItemHolder(17371, 20), // Crystal (R-grade)
private static final int TOP_GRADE_SPIRIT_STONE = 45932; new ItemHolder(17754, 2000), // Soulshot (R-grade)
private static final int MID_GRADE_WIND_DYE_PACK = 39561; new ItemHolder(19440, 1), // Gemstone (R-grade)
private static final int LV_4_LEGENDERY_DEY_PACK = 34951; new ItemHolder(19442, 500), // Blessed Spiritshot (R-grade)
private static final int FORTUNE_POKET_STAGE_5 = 39633; new ItemHolder(34945, 1), // Lv. 3 Giant Dye Pack
private static final int LEONAS_SCROLL_10000000_SP = 38103; new ItemHolder(34946, 1), // Lv. 3 Legendary Dye Pack
private static final int LOW_GRADE_WIND_DYE_PACK = 39560; new ItemHolder(34947, 1), // Lv. 3 Ancient Dye Pack
private static final int LV_4_ANCIENT_DEY_PACK = 34952; new ItemHolder(34950, 1), // Lv. 4 Giant Dye Pack
private static final int LV_3_LEGENDERY_DEY_PACK = 34946; new ItemHolder(34951, 1), // Lv. 4 Legendary Dye Pack
private static final int HIGH_GRADE_SPIRIT_STONE = 45931; new ItemHolder(34952, 1), // Lv. 4 Ancient Dye Pack
private static final int LEONAS_SCROLL_5000000_SP = 38102; new ItemHolder(34953, 1), // Lv. 5 Giant Dye Pack
private static final int LV_4_GIANT_DEY_PACK = 34950; new ItemHolder(34954, 1), // Lv. 5 Legendary Dye Pack
private static final int MID_GRADE_SPIRIT_STONE = 45930; new ItemHolder(34955, 1), // Lv. 5 Ancient Dye Pack
private static final int SPIRIT_STONE_HAIR_ACCESSORY = 45937; new ItemHolder(35567, 1), // Dark Eternal Enhancement Stone
private static final int LV_3_ANCIENT_DEY_PACK = 34947; new ItemHolder(37009, 3), // Blueberry Cake (MP)
private static final int LV_3_GIANT_DEY_PACK = 34945; new ItemHolder(37802, 1), // Dark Eternal Enhancement Stone Fragment
private static final int LEONAS_SCROLL_1000000_SP = 38101; new ItemHolder(38101, 1), // Leona's Scroll: 1,000,000 SP
private static final int GAMESTONE_R_GRADE = 19440; new ItemHolder(38102, 1), // Leona's Scroll: 5,000,000 SP
private static final int BLUEBERRY_CAKE = 37009; new ItemHolder(38103, 1), // Leona's Scroll: 10,000,000 SP
private static final int SPIRIT_STONE = 45929; new ItemHolder(39560, 1), // Low-grade Wind Dye Pack
private static final int BLESSED_SPIRITSHOT_R_GEADE = 19442; new ItemHolder(39561, 1), // Mid-grade Wind Dye Pack
private static final int SOULSHOT_R_GEADE = 17754; new ItemHolder(39562, 1), // High-grade Wind Dye Pack
private static final int CRYSTAL_R_GEADE = 17371; new ItemHolder(39633, 1), // Fortune Pocket - Stage 5
};
private LetterCollector() private LetterCollector()
{ {
@@ -134,7 +136,13 @@ public final class LetterCollector extends LongTimeEvent
} }
case "lineage": 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)) 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, L, 1);
takeItems(player, I, 1); takeItems(player, I, 1);
@@ -143,6 +151,7 @@ public final class LetterCollector extends LongTimeEvent
takeItems(player, A, 1); takeItems(player, A, 1);
takeItems(player, G, 1); takeItems(player, G, 1);
takeItems(player, II, 1); takeItems(player, II, 1);
giveItems(player, getReward());
htmltext = "33873-1.htm"; htmltext = "33873-1.htm";
} }
else else
@@ -153,7 +162,12 @@ public final class LetterCollector extends LongTimeEvent
} }
case "together": case "together":
{ {
if ((getQuestItemsCount(player, T) >= 2) && (getQuestItemsCount(player, O) >= 1) && (getQuestItemsCount(player, G) >= 1) && (getQuestItemsCount(player, E) >= 2) && (getQuestItemsCount(player, H) >= 1) && (getQuestItemsCount(player, R) >= 1)) if ((getQuestItemsCount(player, T) >= 2) && //
(getQuestItemsCount(player, O) >= 1) && //
(getQuestItemsCount(player, G) >= 1) && //
(getQuestItemsCount(player, E) >= 2) && //
(getQuestItemsCount(player, H) >= 1) && //
(getQuestItemsCount(player, R) >= 1))
{ {
takeItems(player, T, 2); takeItems(player, T, 2);
takeItems(player, O, 1); takeItems(player, O, 1);
@@ -161,73 +175,7 @@ public final class LetterCollector extends LongTimeEvent
takeItems(player, E, 2); takeItems(player, E, 2);
takeItems(player, H, 1); takeItems(player, H, 1);
takeItems(player, R, 1); takeItems(player, R, 1);
giveItemRandomly(player, null, DARK_AMARANTHINE_ENHANCEMENT_STONE, 1, 1, 0.07, false); giveItems(player, getReward());
giveItemRandomly(player, null, TAUTI_DUAL_AXE, 1, 1, 0.01, false);
giveItemRandomly(player, null, TAUTI_ONE_HEADED_AXE, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_BOW, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_DUAL_DAGER, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_DAGER, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_CROSSBOW, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_ATELIA_FRAGMENT, 1, 1, 0.05, false);
giveItemRandomly(player, null, BLESSED_SPECTER_THROWER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_STORMER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_RETRIBUTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_BUSTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_DUALSWORD, 1, 1, 0.015, false);
giveItemRandomly(player, null, BLESSED_SPECTER_FIGHTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_CASTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_DUAL_DAGGER, 1, 1, 0.015, false);
giveItemRandomly(player, null, BLESSED_SPECTER_SLASHER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_CUTTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_SHAPER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_AVANGER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_DUAL_BLUNT, 1, 1, 0.015, false);
giveItemRandomly(player, null, BLESSED_SPECTER_SHOOTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, DARK_ETERNAL_ENHACEMENT_STONE, 1, 1, 0.25, false);
giveItemRandomly(player, null, BLESSED_SERAPH_BREASTPLATE, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_ARMOR, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_TUNIC, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_LEGGINGS, 1, 1, 0.025, false);
giveItemRandomly(player, null, HIGH_GRADE_WIND_DEY_PACK, 1, 1, 0.3, false);
giveItemRandomly(player, null, BLESSED_SERAPH_STOCKINGS, 1, 1, 0.025, false);
giveItemRandomly(player, null, LV_5_LEGENDERY_DEY_PACK, 1, 1, 0.1, false);
giveItemRandomly(player, null, BLESSED_SERAPH_SHOES, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_HELMET, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_GAITERS, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_HELMET, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_CIRCLET, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_GUANTLETS, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_GLOVES, 1, 1, 0.025, false);
giveItemRandomly(player, null, LV_5_ANCIENT_DEY_PACK, 1, 1, 0.15, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_BOOTS, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_BOOTS, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_GLOVES, 1, 1, 0.025, false);
giveItemRandomly(player, null, LV_5_GIANT_DEY_PACK, 1, 1, 0.15, false);
giveItemRandomly(player, null, BLESSED_SERAPH_SIGIL, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_SHIELD, 1, 1, 0.025, false);
giveItemRandomly(player, null, DARK_ETERNAL_ENHACEMENT_STONE_FRAGMENT, 1, 1, 0.55, false);
giveItemRandomly(player, null, TOP_GRADE_SPIRIT_STONE, 1, 1, 0.06, false);
giveItemRandomly(player, null, MID_GRADE_WIND_DYE_PACK, 1, 1, 0.3, false);
giveItemRandomly(player, null, LV_4_LEGENDERY_DEY_PACK, 1, 1, 0.2, false);
giveItemRandomly(player, null, FORTUNE_POKET_STAGE_5, 1, 1, 0.32, false);
giveItemRandomly(player, null, LEONAS_SCROLL_10000000_SP, 1, 1, 0.25, false);
giveItemRandomly(player, null, LOW_GRADE_WIND_DYE_PACK, 1, 1, 0.38, false);
giveItemRandomly(player, null, LV_4_ANCIENT_DEY_PACK, 1, 1, 0.24, false);
giveItemRandomly(player, null, LV_3_LEGENDERY_DEY_PACK, 1, 1, 0.25, false);
giveItemRandomly(player, null, HIGH_GRADE_SPIRIT_STONE, 1, 1, 0.08, false);
giveItemRandomly(player, null, LV_4_GIANT_DEY_PACK, 1, 1, 0.2, false);
giveItemRandomly(player, null, MID_GRADE_SPIRIT_STONE, 1, 1, 0.1, false);
giveItemRandomly(player, null, SPIRIT_STONE_HAIR_ACCESSORY, 1, 1, 0.1, false);
giveItemRandomly(player, null, LV_3_ANCIENT_DEY_PACK, 1, 1, 0.26, false);
giveItemRandomly(player, null, LEONAS_SCROLL_5000000_SP, 1, 1, 0.3, false);
giveItemRandomly(player, null, LV_3_GIANT_DEY_PACK, 1, 1, 0.25, false);
giveItemRandomly(player, null, LEONAS_SCROLL_1000000_SP, 1, 1, 0.35, false);
giveItemRandomly(player, null, GAMESTONE_R_GRADE, 1, 1, 0.8, false);
giveItemRandomly(player, null, BLUEBERRY_CAKE, 3, 3, 0.3, false);
giveItemRandomly(player, null, SPIRIT_STONE, 1, 1, 0.15, false);
giveItemRandomly(player, null, BLESSED_SPIRITSHOT_R_GEADE, 500, 500, 0.7, false);
giveItemRandomly(player, null, SOULSHOT_R_GEADE, 2000, 2000, 0.8, false);
giveItemRandomly(player, null, CRYSTAL_R_GEADE, 20, 20, 0.14, false);
htmltext = "33873-1.htm"; htmltext = "33873-1.htm";
} }
else else
@@ -238,7 +186,12 @@ public final class LetterCollector extends LongTimeEvent
} }
case "ncsoft": case "ncsoft":
{ {
if ((getQuestItemsCount(player, N) >= 1) && (getQuestItemsCount(player, C) >= 1) && (getQuestItemsCount(player, S) >= 1) && (getQuestItemsCount(player, O) >= 1) && (getQuestItemsCount(player, F) >= 1) && (getQuestItemsCount(player, T) >= 1)) if ((getQuestItemsCount(player, N) >= 1) && //
(getQuestItemsCount(player, C) >= 1) && //
(getQuestItemsCount(player, S) >= 1) && //
(getQuestItemsCount(player, O) >= 1) && //
(getQuestItemsCount(player, F) >= 1) && //
(getQuestItemsCount(player, T) >= 1))
{ {
takeItems(player, N, 1); takeItems(player, N, 1);
takeItems(player, C, 1); takeItems(player, C, 1);
@@ -246,6 +199,7 @@ public final class LetterCollector extends LongTimeEvent
takeItems(player, O, 1); takeItems(player, O, 1);
takeItems(player, F, 1); takeItems(player, F, 1);
takeItems(player, T, 1); takeItems(player, T, 1);
giveItems(player, getReward());
htmltext = "33873-1.htm"; htmltext = "33873-1.htm";
} }
else else
@@ -258,6 +212,26 @@ public final class LetterCollector extends LongTimeEvent
return htmltext; return htmltext;
} }
private ItemHolder getReward()
{
if (getRandom(100) < 1)
{
return REWARDS_TAUTI[getRandom(REWARDS_TAUTI.length)];
}
else if (getRandom(100) < 4)
{
return REWARDS_SPECTER[getRandom(REWARDS_SPECTER.length)];
}
else if (getRandom(100) < 4)
{
return REWARDS_SERAPH[getRandom(REWARDS_SERAPH.length)];
}
else
{
return OTHER_REWARDS[getRandom(OTHER_REWARDS.length)];
}
}
@Override @Override
public String onFirstTalk(L2Npc npc, L2PcInstance player) public String onFirstTalk(L2Npc npc, L2PcInstance player)
{ {

View File

@@ -20,10 +20,10 @@
<add npc="33873" x="-78832" y="249115" z="-3272" heading="56380" /> <!-- Faeron Village --> <add npc="33873" x="-78832" y="249115" z="-3272" heading="56380" /> <!-- Faeron Village -->
<add npc="33873" x="-80485" y="149537" z="-3016" heading="16383" /> <!-- Gluddin --> <add npc="33873" x="-80485" y="149537" z="-3016" heading="16383" /> <!-- Gluddin -->
<add npc="33873" x="117380" y="76684" z="-2672" heading="40961" /> <!-- Hunters Village --> <add npc="33873" x="117380" y="76684" z="-2672" heading="40961" /> <!-- Hunters Village -->
<add npc="33873" x="208499" y="87743" z="-1006" heading="11264" /> <!-- Arcan Village --> <add npc="33873" x="208499" y="87743" z="-1006" heading="11264" /> <!-- Arcan -->
</spawnlist> </spawnlist>
<messages> <messages>
<add type="onEnd" text="Letter Collector: Event end!" /> <add type="onEnd" text="Letter Collector: Event end!" />
<add type="onEnter" text="Letter Collector (5/11~6/1)" /> <add type="onEnter" text="Letter Collector: Event ongoing!" />
</messages> </messages>
</event> </event>

View File

@@ -52,6 +52,18 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<set name="extractableCountMin" val="1" />
<set name="extractableCountMax" val="1" />
<capsuled_items>
<item id="3877" min="1" max="1" chance="28.571" />
<item id="3879" min="1" max="1" chance="14.286" />
<item id="3880" min="1" max="1" chance="14.286" />
<item id="3884" min="1" max="1" chance="14.286" />
<item id="3887" min="1" max="1" chance="28.571" />
</capsuled_items>
</item> </item>
<item id="37004" name="Letter Collector's Pouch: LINEAGE II" type="EtcItem"> <item id="37004" name="Letter Collector's Pouch: LINEAGE II" type="EtcItem">
<!-- Magic pouch that contains the letters of LINEAGE II. Double-click to get one of the following letters: L, I, N, E, A, G, E, and II. The letter II can be obtained from the RIIS pouch at a certain probability. --> <!-- Magic pouch that contains the letters of LINEAGE II. Double-click to get one of the following letters: L, I, N, E, A, G, E, and II. The letter II can be obtained from the RIIS pouch at a certain probability. -->
@@ -60,6 +72,19 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<set name="extractableCountMin" val="1" />
<set name="extractableCountMax" val="1" />
<capsuled_items>
<item id="3875" min="1" max="1" chance="14.286" />
<item id="3877" min="1" max="1" chance="28.571" />
<item id="3879" min="1" max="1" chance="14.285" />
<item id="3881" min="1" max="1" chance="14.286" />
<item id="3882" min="1" max="1" chance="14.286" />
<item id="3883" min="1" max="1" chance="14.286" />
</capsuled_items>
</item> </item>
<item id="37005" name="Letter Collector's Pouch: NCSOFT" type="EtcItem"> <item id="37005" name="Letter Collector's Pouch: NCSOFT" type="EtcItem">
<!-- Magic pouch that contains the letters of NCSOFT. Double-click to get one of the following letters: N, C, S, O, F and T. The letter S can be obtained from the RIIS pouch at a certain probability. --> <!-- Magic pouch that contains the letters of NCSOFT. Double-click to get one of the following letters: N, C, S, O, F and T. The letter S can be obtained from the RIIS pouch at a certain probability. -->
@@ -68,6 +93,18 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<set name="extractableCountMin" val="1" />
<set name="extractableCountMax" val="1" />
<capsuled_items>
<item id="3876" min="1" max="1" chance="20" />
<item id="3878" min="1" max="1" chance="20" />
<item id="3883" min="1" max="1" chance="20" />
<item id="3884" min="1" max="1" chance="20" />
<item id="3887" min="1" max="1" chance="20" />
</capsuled_items>
</item> </item>
<item id="37006" name="Letter Collector's Pouch: RIIS" type="EtcItem"> <item id="37006" name="Letter Collector's Pouch: RIIS" type="EtcItem">
<!-- Magic pouch that contains the letters of RIIS. Double-click to get one of the following letters: R, II and S. --> <!-- Magic pouch that contains the letters of RIIS. Double-click to get one of the following letters: R, II and S. -->
@@ -76,6 +113,16 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<set name="extractableCountMin" val="1" />
<set name="extractableCountMax" val="1" />
<capsuled_items>
<item id="3888" min="1" max="1" chance="33.333" />
<item id="3885" min="1" max="1" chance="33.333" />
<item id="3886" min="1" max="1" chance="33.334" />
</capsuled_items>
</item> </item>
<item id="37007" name="Letter Collector's Lucky Pouch" type="EtcItem"> <item id="37007" name="Letter Collector's Lucky Pouch" type="EtcItem">
<!-- Chance to test your luck! You can get Letter Collector's Pouch: RIIS at a certain probability. If you fail, you won't get anything. --> <!-- Chance to test your luck! You can get Letter Collector's Pouch: RIIS at a certain probability. If you fail, you won't get anything. -->
@@ -84,6 +131,12 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<capsuled_items>
<item id="37006" min="1" max="1" chance="75" />
</capsuled_items>
</item> </item>
<item id="37008" name="Strawberry Cake (HP)" type="EtcItem"> <item id="37008" name="Strawberry Cake (HP)" type="EtcItem">
<!-- Restores HP by 50%. Cooldown is 2 min. --> <!-- Restores HP by 50%. Cooldown is 2 min. -->

View File

@@ -22,8 +22,14 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" /> <set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SCROLL" />
<set name="handler" val="ItemSkills" />
<skills>
<skill id="17321" level="1" /> <!-- Leona's Scroll: 1,000,000 SP -->
</skills>
</item> </item>
<item id="38102" name="Leona's Scroll: 5,000,000 SP" type="EtcItem"> <item id="38102" name="Leona's Scroll: 5,000,000 SP" type="EtcItem">
<!-- Double-click to obtain 5,000,000 SP. --> <!-- Double-click to obtain 5,000,000 SP. -->
@@ -34,6 +40,13 @@
<set name="is_commissionable" val="false" /> <set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" /> <set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SCROLL" />
<set name="handler" val="ItemSkills" />
<skills>
<skill id="17322" level="1" /> <!-- Leona's Scroll: 5,000,000 SP -->
</skills>
</item> </item>
<item id="38103" name="Leona's Scroll: 10,000,000 SP" type="EtcItem"> <item id="38103" name="Leona's Scroll: 10,000,000 SP" type="EtcItem">
<!-- Double-click to obtain 10,000,000 SP. --> <!-- Double-click to obtain 10,000,000 SP. -->
@@ -44,6 +57,13 @@
<set name="is_commissionable" val="false" /> <set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" /> <set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SCROLL" />
<set name="handler" val="ItemSkills" />
<skills>
<skill id="17323" level="1" /> <!-- Leona's Scroll: 10,000,000 SP -->
</skills>
</item> </item>
<item id="38104" name="Leona's Cube Pack" type="EtcItem"> <item id="38104" name="Leona's Cube Pack" type="EtcItem">
<!-- Double-click to obtain Leona's Cube (30-day). --> <!-- Double-click to obtain Leona's Cube (30-day). -->

View File

@@ -246,7 +246,15 @@
<!-- Gives 1,000,000 SP. --> <!-- Gives 1,000,000 SP. -->
<icon>icon.etc_sp_scroll1_i00</icon> <icon>icon.etc_sp_scroll1_i00</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<hitTime>200</hitTime>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<magicLvl>1</magicLvl>
<isMagic>2</isMagic>
<reuseDelay>3000</reuseDelay> <reuseDelay>3000</reuseDelay>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<effects> <effects>
<effect name="GiveSp"> <effect name="GiveSp">
<sp>1000000</sp> <sp>1000000</sp>
@@ -257,7 +265,15 @@
<!-- Gives 5,000,000 SP. --> <!-- Gives 5,000,000 SP. -->
<icon>icon.etc_sp_scroll2_i00</icon> <icon>icon.etc_sp_scroll2_i00</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<hitTime>200</hitTime>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<magicLvl>1</magicLvl>
<isMagic>2</isMagic>
<reuseDelay>3000</reuseDelay> <reuseDelay>3000</reuseDelay>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<effects> <effects>
<effect name="GiveSp"> <effect name="GiveSp">
<sp>5000000</sp> <sp>5000000</sp>
@@ -268,7 +284,15 @@
<!-- Gives 10,000,000 SP. --> <!-- Gives 10,000,000 SP. -->
<icon>icon.etc_sp_scroll3_i00</icon> <icon>icon.etc_sp_scroll3_i00</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<hitTime>200</hitTime>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<magicLvl>1</magicLvl>
<isMagic>2</isMagic>
<reuseDelay>3000</reuseDelay> <reuseDelay>3000</reuseDelay>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<effects> <effects>
<effect name="GiveSp"> <effect name="GiveSp">
<sp>10000000</sp> <sp>10000000</sp>

View File

@@ -5,5 +5,4 @@ Collect letters to create <font color="LEVEL">LINEAGE II</font>, <font color="LE
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector lineage">"I've collected 'LINEAGE II.'"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector lineage">"I've collected 'LINEAGE II.'"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector together">"I've collected 'TOGETHER.'"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector together">"I've collected 'TOGETHER.'"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector ncsoft">"I've collected 'NCSOFT.'"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest LetterCollector ncsoft">"I've collected 'NCSOFT.'"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 2042">"I'd like a Letter Collector's Lucky Pouch."</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,8 @@
<html><body>Angel Cat:<br> <html><body>Angel Cat:<br>
<font color="LEVEL">So, here's the gist:</font><br> <font color="LEVEL">So, here's the gist:</font><br>
If you hunt monsters in the Lineage II world, you have a chance of obtaining letter-engraved items. If you collect these letters and bring them to me, I will give you a gift depending on the combination.<br>There are a total of 14 letters, and they are:<br> If you hunt monsters in the Lineage II world, you have a chance of obtaining letter-engraved items. If you collect these letters and bring them to me, I will give you a gift depending on the combination.<br>
<font color="LEVEL">A</font>, <font color="LEVEL">C</font>, <font color="LEVEL">E</font>, <font color="LEVEL">F</font>, <font color="LEVEL">G</font>, <font color="LEVEL">I</font>, <font color="LEVEL">L</font>, <font color="LEVEL">N</font>, <font color="LEVEL">O</font>, <font color="LEVEL">S</font>, <font color="LEVEL">T</font>, <font color="LEVEL">II</font>, <font color="LEVEL">R</font>, and <font color="LEVEL">H</font>. There are a total of 14 letters, and they are:<br>
<br> <font color="LEVEL">A</font>, <font color="LEVEL">C</font>, <font color="LEVEL">E</font>, <font color="LEVEL">F</font>, <font color="LEVEL">G</font>, <font color="LEVEL">I</font>, <font color="LEVEL">L</font>, <font color="LEVEL">N</font>, <font color="LEVEL">O</font>, <font color="LEVEL">S</font>, <font color="LEVEL">T</font>, <font color="LEVEL">II</font>, <font color="LEVEL">R</font>, and <font color="LEVEL">H</font>.<br>
<br> Combine the letters and numbers to create <font color="LEVEL">LINEAGE II</font>, <font color="LEVEL">TOGETHER</font>, or <font color="LEVEL">NCSOFT</font>.<br>
<br>
<br>Combine the letters and numbers to create <font color="LEVEL">LINEAGE II</font>, <font color="LEVEL">TOGETHER</font>, or <font color="LEVEL">NCSOFT</font>.
<br>
When you collect repeat letters, you can exchange them for <font color="LEVEL">Letter Collector's Lucky Pouch</font>. From the pouch, you can get <font color="LEVEL">Letter Collector's Pouch: RIIS</font>, from which you'll have a chance to get the letters R, II, or S.<br>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest LetterCollector 33873-1.htm">Back</Button> <Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest LetterCollector 33873-1.htm">Back</Button>
</body></html> </body></html>

View File

@@ -18,12 +18,13 @@ package events.LetterCollector;
import com.l2jmobius.gameserver.model.actor.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.quest.LongTimeEvent; import com.l2jmobius.gameserver.model.quest.LongTimeEvent;
/** /**
* Event: Letter Collector * Event: Letter Collector
* @URL http://www.lineage2.com/en/news/events/letter-collector-event-05112016.php * @URL http://www.lineage2.com/en/news/events/letter-collector-event-05112016.php
* @author Gigi * @author Mobius, Gigi
*/ */
public final class LetterCollector extends LongTimeEvent public final class LetterCollector extends LongTimeEvent
{ {
@@ -44,74 +45,75 @@ public final class LetterCollector extends LongTimeEvent
private static final int S = 3886; private static final int S = 3886;
private static final int T = 3887; private static final int T = 3887;
private static final int II = 3888; private static final int II = 3888;
// Rewards Together // Rewards
private static final int DARK_AMARANTHINE_ENHANCEMENT_STONE = 3875; private static final ItemHolder[] REWARDS_TAUTI =
private static final int TAUTI_DUAL_AXE = 35001; {
private static final int TAUTI_ONE_HEADED_AXE = 34998; new ItemHolder(34998, 1), // Tauti's One-handed Axe
private static final int KELBIM_BOW = 46062; new ItemHolder(35001, 1), // Tauti's Dual Axe
private static final int KELBIM_DUAL_DAGER = 46061; };
private static final int KELBIM_DAGER = 46060; private static final ItemHolder[] REWARDS_SPECTER =
private static final int KELBIM_CROSSBOW = 46063; {
private static final int KELBIM_ATELIA_FRAGMENT = 46079; new ItemHolder(18035, 1), // Blessed Specter Shaper
private static final int BLESSED_SPECTER_THROWER = 18041; new ItemHolder(18036, 1), // Blessed Specter Cutter
private static final int BLESSED_SPECTER_STORMER = 18040; new ItemHolder(18037, 1), // Blessed Specter Slasher
private static final int BLESSED_SPECTER_RETRIBUTER = 18045; new ItemHolder(18038, 1), // Blessed Specter Avenger
private static final int BLESSED_SPECTER_BUSTER = 18043; new ItemHolder(18039, 1), // Blessed Specter Fighter
private static final int BLESSED_SPECTER_DUALSWORD = 18046; new ItemHolder(18040, 1), // Blessed Specter Stormer
private static final int BLESSED_SPECTER_FIGHTER = 18039; new ItemHolder(18041, 1), // Blessed Specter Thrower
private static final int BLESSED_SPECTER_CASTER = 18044; new ItemHolder(18042, 1), // Blessed Specter Shooter
private static final int BLESSED_SPECTER_DUAL_DAGGER = 18047; new ItemHolder(18043, 1), // Blessed Specter Buster
private static final int BLESSED_SPECTER_SLASHER = 18037; new ItemHolder(18044, 1), // Blessed Specter Caster
private static final int BLESSED_SPECTER_CUTTER = 18036; new ItemHolder(18045, 1), // Blessed Specter Retributer
private static final int BLESSED_SPECTER_SHAPER = 18035; new ItemHolder(18046, 1), // Blessed Specter Dualsword
private static final int BLESSED_SPECTER_AVANGER = 18038; new ItemHolder(18047, 1), // Blessed Specter Dual Dagger
private static final int BLESSED_SPECTER_DUAL_BLUNT = 18048; new ItemHolder(18048, 1), // Blessed Specter Dual Blunt Weapon
private static final int BLESSED_SPECTER_SHOOTER = 18042; };
private static final int DARK_ETERNAL_ENHACEMENT_STONE = 35567; private static final ItemHolder[] REWARDS_SERAPH =
private static final int BLESSED_SERAPH_BREASTPLATE = 18050; {
private static final int BLESSED_SERAPH_LEATHER_ARMOR = 18056; new ItemHolder(18049, 1), // Blessed Seraph Helmet
private static final int BLESSED_SERAPH_TUNIC = 18061; new ItemHolder(18050, 1), // Blessed Seraph Breastplate
private static final int BLESSED_SERAPH_LEATHER_LEGGINGS = 18057; new ItemHolder(18051, 1), // Blessed Seraph Gaiters
private static final int HIGH_GRADE_WIND_DEY_PACK = 39562; new ItemHolder(18052, 1), // Blessed Seraph Gauntlets
private static final int BLESSED_SERAPH_STOCKINGS = 18062; new ItemHolder(18053, 1), // Blessed Seraph Boots
private static final int LV_5_LEGENDERY_DEY_PACK = 34954; new ItemHolder(18054, 1), // Blessed Seraph Shield
private static final int BLESSED_SERAPH_SHOES = 18064; new ItemHolder(18055, 1), // Blessed Seraph Leather Helmet
private static final int BLESSED_SERAPH_HELMET = 18049; new ItemHolder(18056, 1), // Blessed Seraph Leather Armor
private static final int BLESSED_SERAPH_GAITERS = 18051; new ItemHolder(18057, 1), // Blessed Seraph Leather Leggings
private static final int BLESSED_SERAPH_LEATHER_HELMET = 18055; new ItemHolder(18058, 1), // Blessed Seraph Leather Gloves
private static final int BLESSED_SERAPH_CIRCLET = 18060; new ItemHolder(18059, 1), // Blessed Seraph Leather Boots
private static final int BLESSED_SERAPH_GUANTLETS = 18052; new ItemHolder(18060, 1), // Blessed Seraph Circlet
private static final int BLESSED_SERAPH_LEATHER_GLOVES = 18058; new ItemHolder(18061, 1), // Blessed Seraph Tunic
private static final int LV_5_ANCIENT_DEY_PACK = 34955; new ItemHolder(18062, 1), // Blessed Seraph Stockings
private static final int BLESSED_SERAPH_LEATHER_BOOTS = 18059; new ItemHolder(18063, 1), // Blessed Seraph Gloves
private static final int BLESSED_SERAPH_BOOTS = 18053; new ItemHolder(18064, 1), // Blessed Seraph Shoes
private static final int BLESSED_SERAPH_GLOVES = 18063; new ItemHolder(18065, 1), // Blessed Seraph Sigil
private static final int LV_5_GIANT_DEY_PACK = 34953; };
private static final int BLESSED_SERAPH_SIGIL = 18065; private static final ItemHolder[] OTHER_REWARDS =
private static final int BLESSED_SERAPH_SHIELD = 18054; {
private static final int DARK_ETERNAL_ENHACEMENT_STONE_FRAGMENT = 37802; new ItemHolder(17371, 20), // Crystal (R-grade)
private static final int TOP_GRADE_SPIRIT_STONE = 45932; new ItemHolder(17754, 2000), // Soulshot (R-grade)
private static final int MID_GRADE_WIND_DYE_PACK = 39561; new ItemHolder(19440, 1), // Gemstone (R-grade)
private static final int LV_4_LEGENDERY_DEY_PACK = 34951; new ItemHolder(19442, 500), // Blessed Spiritshot (R-grade)
private static final int FORTUNE_POKET_STAGE_5 = 39633; new ItemHolder(34945, 1), // Lv. 3 Giant Dye Pack
private static final int LEONAS_SCROLL_10000000_SP = 38103; new ItemHolder(34946, 1), // Lv. 3 Legendary Dye Pack
private static final int LOW_GRADE_WIND_DYE_PACK = 39560; new ItemHolder(34947, 1), // Lv. 3 Ancient Dye Pack
private static final int LV_4_ANCIENT_DEY_PACK = 34952; new ItemHolder(34950, 1), // Lv. 4 Giant Dye Pack
private static final int LV_3_LEGENDERY_DEY_PACK = 34946; new ItemHolder(34951, 1), // Lv. 4 Legendary Dye Pack
private static final int HIGH_GRADE_SPIRIT_STONE = 45931; new ItemHolder(34952, 1), // Lv. 4 Ancient Dye Pack
private static final int LEONAS_SCROLL_5000000_SP = 38102; new ItemHolder(34953, 1), // Lv. 5 Giant Dye Pack
private static final int LV_4_GIANT_DEY_PACK = 34950; new ItemHolder(34954, 1), // Lv. 5 Legendary Dye Pack
private static final int MID_GRADE_SPIRIT_STONE = 45930; new ItemHolder(34955, 1), // Lv. 5 Ancient Dye Pack
private static final int SPIRIT_STONE_HAIR_ACCESSORY = 45937; new ItemHolder(35567, 1), // Dark Eternal Enhancement Stone
private static final int LV_3_ANCIENT_DEY_PACK = 34947; new ItemHolder(37009, 3), // Blueberry Cake (MP)
private static final int LV_3_GIANT_DEY_PACK = 34945; new ItemHolder(37802, 1), // Dark Eternal Enhancement Stone Fragment
private static final int LEONAS_SCROLL_1000000_SP = 38101; new ItemHolder(38101, 1), // Leona's Scroll: 1,000,000 SP
private static final int GAMESTONE_R_GRADE = 19440; new ItemHolder(38102, 1), // Leona's Scroll: 5,000,000 SP
private static final int BLUEBERRY_CAKE = 37009; new ItemHolder(38103, 1), // Leona's Scroll: 10,000,000 SP
private static final int SPIRIT_STONE = 45929; new ItemHolder(39560, 1), // Low-grade Wind Dye Pack
private static final int BLESSED_SPIRITSHOT_R_GEADE = 19442; new ItemHolder(39561, 1), // Mid-grade Wind Dye Pack
private static final int SOULSHOT_R_GEADE = 17754; new ItemHolder(39562, 1), // High-grade Wind Dye Pack
private static final int CRYSTAL_R_GEADE = 17371; new ItemHolder(39633, 1), // Fortune Pocket - Stage 5
};
private LetterCollector() private LetterCollector()
{ {
@@ -134,7 +136,13 @@ public final class LetterCollector extends LongTimeEvent
} }
case "lineage": 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)) 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, L, 1);
takeItems(player, I, 1); takeItems(player, I, 1);
@@ -143,6 +151,7 @@ public final class LetterCollector extends LongTimeEvent
takeItems(player, A, 1); takeItems(player, A, 1);
takeItems(player, G, 1); takeItems(player, G, 1);
takeItems(player, II, 1); takeItems(player, II, 1);
giveItems(player, getReward());
htmltext = "33873-1.htm"; htmltext = "33873-1.htm";
} }
else else
@@ -153,7 +162,12 @@ public final class LetterCollector extends LongTimeEvent
} }
case "together": case "together":
{ {
if ((getQuestItemsCount(player, T) >= 2) && (getQuestItemsCount(player, O) >= 1) && (getQuestItemsCount(player, G) >= 1) && (getQuestItemsCount(player, E) >= 2) && (getQuestItemsCount(player, H) >= 1) && (getQuestItemsCount(player, R) >= 1)) if ((getQuestItemsCount(player, T) >= 2) && //
(getQuestItemsCount(player, O) >= 1) && //
(getQuestItemsCount(player, G) >= 1) && //
(getQuestItemsCount(player, E) >= 2) && //
(getQuestItemsCount(player, H) >= 1) && //
(getQuestItemsCount(player, R) >= 1))
{ {
takeItems(player, T, 2); takeItems(player, T, 2);
takeItems(player, O, 1); takeItems(player, O, 1);
@@ -161,73 +175,7 @@ public final class LetterCollector extends LongTimeEvent
takeItems(player, E, 2); takeItems(player, E, 2);
takeItems(player, H, 1); takeItems(player, H, 1);
takeItems(player, R, 1); takeItems(player, R, 1);
giveItemRandomly(player, null, DARK_AMARANTHINE_ENHANCEMENT_STONE, 1, 1, 0.07, false); giveItems(player, getReward());
giveItemRandomly(player, null, TAUTI_DUAL_AXE, 1, 1, 0.01, false);
giveItemRandomly(player, null, TAUTI_ONE_HEADED_AXE, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_BOW, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_DUAL_DAGER, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_DAGER, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_CROSSBOW, 1, 1, 0.01, false);
giveItemRandomly(player, null, KELBIM_ATELIA_FRAGMENT, 1, 1, 0.05, false);
giveItemRandomly(player, null, BLESSED_SPECTER_THROWER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_STORMER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_RETRIBUTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_BUSTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_DUALSWORD, 1, 1, 0.015, false);
giveItemRandomly(player, null, BLESSED_SPECTER_FIGHTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_CASTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_DUAL_DAGGER, 1, 1, 0.015, false);
giveItemRandomly(player, null, BLESSED_SPECTER_SLASHER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_CUTTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_SHAPER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_AVANGER, 1, 1, 0.02, false);
giveItemRandomly(player, null, BLESSED_SPECTER_DUAL_BLUNT, 1, 1, 0.015, false);
giveItemRandomly(player, null, BLESSED_SPECTER_SHOOTER, 1, 1, 0.02, false);
giveItemRandomly(player, null, DARK_ETERNAL_ENHACEMENT_STONE, 1, 1, 0.25, false);
giveItemRandomly(player, null, BLESSED_SERAPH_BREASTPLATE, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_ARMOR, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_TUNIC, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_LEGGINGS, 1, 1, 0.025, false);
giveItemRandomly(player, null, HIGH_GRADE_WIND_DEY_PACK, 1, 1, 0.3, false);
giveItemRandomly(player, null, BLESSED_SERAPH_STOCKINGS, 1, 1, 0.025, false);
giveItemRandomly(player, null, LV_5_LEGENDERY_DEY_PACK, 1, 1, 0.1, false);
giveItemRandomly(player, null, BLESSED_SERAPH_SHOES, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_HELMET, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_GAITERS, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_HELMET, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_CIRCLET, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_GUANTLETS, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_GLOVES, 1, 1, 0.025, false);
giveItemRandomly(player, null, LV_5_ANCIENT_DEY_PACK, 1, 1, 0.15, false);
giveItemRandomly(player, null, BLESSED_SERAPH_LEATHER_BOOTS, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_BOOTS, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_GLOVES, 1, 1, 0.025, false);
giveItemRandomly(player, null, LV_5_GIANT_DEY_PACK, 1, 1, 0.15, false);
giveItemRandomly(player, null, BLESSED_SERAPH_SIGIL, 1, 1, 0.025, false);
giveItemRandomly(player, null, BLESSED_SERAPH_SHIELD, 1, 1, 0.025, false);
giveItemRandomly(player, null, DARK_ETERNAL_ENHACEMENT_STONE_FRAGMENT, 1, 1, 0.55, false);
giveItemRandomly(player, null, TOP_GRADE_SPIRIT_STONE, 1, 1, 0.06, false);
giveItemRandomly(player, null, MID_GRADE_WIND_DYE_PACK, 1, 1, 0.3, false);
giveItemRandomly(player, null, LV_4_LEGENDERY_DEY_PACK, 1, 1, 0.2, false);
giveItemRandomly(player, null, FORTUNE_POKET_STAGE_5, 1, 1, 0.32, false);
giveItemRandomly(player, null, LEONAS_SCROLL_10000000_SP, 1, 1, 0.25, false);
giveItemRandomly(player, null, LOW_GRADE_WIND_DYE_PACK, 1, 1, 0.38, false);
giveItemRandomly(player, null, LV_4_ANCIENT_DEY_PACK, 1, 1, 0.24, false);
giveItemRandomly(player, null, LV_3_LEGENDERY_DEY_PACK, 1, 1, 0.25, false);
giveItemRandomly(player, null, HIGH_GRADE_SPIRIT_STONE, 1, 1, 0.08, false);
giveItemRandomly(player, null, LV_4_GIANT_DEY_PACK, 1, 1, 0.2, false);
giveItemRandomly(player, null, MID_GRADE_SPIRIT_STONE, 1, 1, 0.1, false);
giveItemRandomly(player, null, SPIRIT_STONE_HAIR_ACCESSORY, 1, 1, 0.1, false);
giveItemRandomly(player, null, LV_3_ANCIENT_DEY_PACK, 1, 1, 0.26, false);
giveItemRandomly(player, null, LEONAS_SCROLL_5000000_SP, 1, 1, 0.3, false);
giveItemRandomly(player, null, LV_3_GIANT_DEY_PACK, 1, 1, 0.25, false);
giveItemRandomly(player, null, LEONAS_SCROLL_1000000_SP, 1, 1, 0.35, false);
giveItemRandomly(player, null, GAMESTONE_R_GRADE, 1, 1, 0.8, false);
giveItemRandomly(player, null, BLUEBERRY_CAKE, 3, 3, 0.3, false);
giveItemRandomly(player, null, SPIRIT_STONE, 1, 1, 0.15, false);
giveItemRandomly(player, null, BLESSED_SPIRITSHOT_R_GEADE, 500, 500, 0.7, false);
giveItemRandomly(player, null, SOULSHOT_R_GEADE, 2000, 2000, 0.8, false);
giveItemRandomly(player, null, CRYSTAL_R_GEADE, 20, 20, 0.14, false);
htmltext = "33873-1.htm"; htmltext = "33873-1.htm";
} }
else else
@@ -238,7 +186,12 @@ public final class LetterCollector extends LongTimeEvent
} }
case "ncsoft": case "ncsoft":
{ {
if ((getQuestItemsCount(player, N) >= 1) && (getQuestItemsCount(player, C) >= 1) && (getQuestItemsCount(player, S) >= 1) && (getQuestItemsCount(player, O) >= 1) && (getQuestItemsCount(player, F) >= 1) && (getQuestItemsCount(player, T) >= 1)) if ((getQuestItemsCount(player, N) >= 1) && //
(getQuestItemsCount(player, C) >= 1) && //
(getQuestItemsCount(player, S) >= 1) && //
(getQuestItemsCount(player, O) >= 1) && //
(getQuestItemsCount(player, F) >= 1) && //
(getQuestItemsCount(player, T) >= 1))
{ {
takeItems(player, N, 1); takeItems(player, N, 1);
takeItems(player, C, 1); takeItems(player, C, 1);
@@ -246,6 +199,7 @@ public final class LetterCollector extends LongTimeEvent
takeItems(player, O, 1); takeItems(player, O, 1);
takeItems(player, F, 1); takeItems(player, F, 1);
takeItems(player, T, 1); takeItems(player, T, 1);
giveItems(player, getReward());
htmltext = "33873-1.htm"; htmltext = "33873-1.htm";
} }
else else
@@ -258,6 +212,26 @@ public final class LetterCollector extends LongTimeEvent
return htmltext; return htmltext;
} }
private ItemHolder getReward()
{
if (getRandom(100) < 1)
{
return REWARDS_TAUTI[getRandom(REWARDS_TAUTI.length)];
}
else if (getRandom(100) < 4)
{
return REWARDS_SPECTER[getRandom(REWARDS_SPECTER.length)];
}
else if (getRandom(100) < 4)
{
return REWARDS_SERAPH[getRandom(REWARDS_SERAPH.length)];
}
else
{
return OTHER_REWARDS[getRandom(OTHER_REWARDS.length)];
}
}
@Override @Override
public String onFirstTalk(L2Npc npc, L2PcInstance player) public String onFirstTalk(L2Npc npc, L2PcInstance player)
{ {

View File

@@ -20,10 +20,10 @@
<add npc="33873" x="-78832" y="249115" z="-3272" heading="56380" /> <!-- Faeron Village --> <add npc="33873" x="-78832" y="249115" z="-3272" heading="56380" /> <!-- Faeron Village -->
<add npc="33873" x="-80485" y="149537" z="-3016" heading="16383" /> <!-- Gluddin --> <add npc="33873" x="-80485" y="149537" z="-3016" heading="16383" /> <!-- Gluddin -->
<add npc="33873" x="117380" y="76684" z="-2672" heading="40961" /> <!-- Hunters Village --> <add npc="33873" x="117380" y="76684" z="-2672" heading="40961" /> <!-- Hunters Village -->
<add npc="33873" x="208499" y="87743" z="-1006" heading="11264" /> <!-- Arcan Village --> <add npc="33873" x="208499" y="87743" z="-1006" heading="11264" /> <!-- Arcan -->
</spawnlist> </spawnlist>
<messages> <messages>
<add type="onEnd" text="Letter Collector: Event end!" /> <add type="onEnd" text="Letter Collector: Event end!" />
<add type="onEnter" text="Letter Collector (5/11~6/1)" /> <add type="onEnter" text="Letter Collector: Event ongoing!" />
</messages> </messages>
</event> </event>

View File

@@ -52,6 +52,18 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<set name="extractableCountMin" val="1" />
<set name="extractableCountMax" val="1" />
<capsuled_items>
<item id="3877" min="1" max="1" chance="28.571" />
<item id="3879" min="1" max="1" chance="14.286" />
<item id="3880" min="1" max="1" chance="14.286" />
<item id="3884" min="1" max="1" chance="14.286" />
<item id="3887" min="1" max="1" chance="28.571" />
</capsuled_items>
</item> </item>
<item id="37004" name="Letter Collector's Pouch: LINEAGE II" type="EtcItem"> <item id="37004" name="Letter Collector's Pouch: LINEAGE II" type="EtcItem">
<!-- Magic pouch that contains the letters of LINEAGE. Double-click to get one of the following letters: L, I, N, E, A, G and E. The letter II can be obtained from the RIIS pouch at a certain probability. --> <!-- Magic pouch that contains the letters of LINEAGE. Double-click to get one of the following letters: L, I, N, E, A, G and E. The letter II can be obtained from the RIIS pouch at a certain probability. -->
@@ -60,6 +72,19 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<set name="extractableCountMin" val="1" />
<set name="extractableCountMax" val="1" />
<capsuled_items>
<item id="3875" min="1" max="1" chance="14.286" />
<item id="3877" min="1" max="1" chance="28.571" />
<item id="3879" min="1" max="1" chance="14.285" />
<item id="3881" min="1" max="1" chance="14.286" />
<item id="3882" min="1" max="1" chance="14.286" />
<item id="3883" min="1" max="1" chance="14.286" />
</capsuled_items>
</item> </item>
<item id="37005" name="Letter Collector's Pouch: NCSOFT" type="EtcItem"> <item id="37005" name="Letter Collector's Pouch: NCSOFT" type="EtcItem">
<!-- Magic pouch that contains the letters of NCOFT. Double-click to get one of the following letters: N, C, O, F and T. The letter S can be obtained from the RIIS pouch at a certain probability. --> <!-- Magic pouch that contains the letters of NCOFT. Double-click to get one of the following letters: N, C, O, F and T. The letter S can be obtained from the RIIS pouch at a certain probability. -->
@@ -68,6 +93,18 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<set name="extractableCountMin" val="1" />
<set name="extractableCountMax" val="1" />
<capsuled_items>
<item id="3876" min="1" max="1" chance="20" />
<item id="3878" min="1" max="1" chance="20" />
<item id="3883" min="1" max="1" chance="20" />
<item id="3884" min="1" max="1" chance="20" />
<item id="3887" min="1" max="1" chance="20" />
</capsuled_items>
</item> </item>
<item id="37006" name="Letter Collector's Pouch: RIIS" type="EtcItem"> <item id="37006" name="Letter Collector's Pouch: RIIS" type="EtcItem">
<!-- Magic pouch that contains the letters of RIIS. Double-click to get one of the following letters: R, II and S. --> <!-- Magic pouch that contains the letters of RIIS. Double-click to get one of the following letters: R, II and S. -->
@@ -76,6 +113,16 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<set name="extractableCountMin" val="1" />
<set name="extractableCountMax" val="1" />
<capsuled_items>
<item id="3888" min="1" max="1" chance="33.333" />
<item id="3885" min="1" max="1" chance="33.333" />
<item id="3886" min="1" max="1" chance="33.334" />
</capsuled_items>
</item> </item>
<item id="37007" name="Letter Collector's Lucky Pouch" type="EtcItem"> <item id="37007" name="Letter Collector's Lucky Pouch" type="EtcItem">
<!-- Chance to test your luck! You can get Letter Collector's Pouch: RIIS at a certain probability. If you fail, you won't get anything. --> <!-- Chance to test your luck! You can get Letter Collector's Pouch: RIIS at a certain probability. If you fail, you won't get anything. -->
@@ -84,6 +131,12 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
<set name="immediate_effect" val="true" />
<set name="handler" val="ExtractableItems" />
<capsuled_items>
<item id="37006" min="1" max="1" chance="75" />
</capsuled_items>
</item> </item>
<item id="37008" name="Strawberry Cake (HP)" type="EtcItem"> <item id="37008" name="Strawberry Cake (HP)" type="EtcItem">
<!-- Restores HP by 50%. Cooldown is 2 min. --> <!-- Restores HP by 50%. Cooldown is 2 min. -->

View File

@@ -22,8 +22,14 @@
<set name="is_freightable" val="false" /> <set name="is_freightable" val="false" />
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" /> <set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SCROLL" />
<set name="handler" val="ItemSkills" />
<skills>
<skill id="17321" level="1" /> <!-- Leona's Scroll: 1,000,000 SP -->
</skills>
</item> </item>
<item id="38102" name="Leona's Scroll: 5,000,000 SP" type="EtcItem"> <item id="38102" name="Leona's Scroll: 5,000,000 SP" type="EtcItem">
<!-- Double-click to obtain 5,000,000 SP. --> <!-- Double-click to obtain 5,000,000 SP. -->
@@ -34,6 +40,13 @@
<set name="is_commissionable" val="false" /> <set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" /> <set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SCROLL" />
<set name="handler" val="ItemSkills" />
<skills>
<skill id="17322" level="1" /> <!-- Leona's Scroll: 5,000,000 SP -->
</skills>
</item> </item>
<item id="38103" name="Leona's Scroll: 10,000,000 SP" type="EtcItem"> <item id="38103" name="Leona's Scroll: 10,000,000 SP" type="EtcItem">
<!-- Double-click to obtain 10,000,000 SP. --> <!-- Double-click to obtain 10,000,000 SP. -->
@@ -44,6 +57,13 @@
<set name="is_commissionable" val="false" /> <set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" /> <set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SCROLL" />
<set name="handler" val="ItemSkills" />
<skills>
<skill id="17323" level="1" /> <!-- Leona's Scroll: 10,000,000 SP -->
</skills>
</item> </item>
<item id="38104" name="Leona's Cube Pack" type="EtcItem"> <item id="38104" name="Leona's Cube Pack" type="EtcItem">
<!-- Double-click to obtain Leona's Cube (30-day). --> <!-- Double-click to obtain Leona's Cube (30-day). -->

View File

@@ -246,7 +246,15 @@
<!-- Gives 1,000,000 SP. --> <!-- Gives 1,000,000 SP. -->
<icon>icon.etc_sp_scroll1_i00</icon> <icon>icon.etc_sp_scroll1_i00</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<hitTime>200</hitTime>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<magicLvl>1</magicLvl>
<isMagic>2</isMagic>
<reuseDelay>3000</reuseDelay> <reuseDelay>3000</reuseDelay>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<effects> <effects>
<effect name="GiveSp"> <effect name="GiveSp">
<sp>1000000</sp> <sp>1000000</sp>
@@ -257,7 +265,15 @@
<!-- Gives 5,000,000 SP. --> <!-- Gives 5,000,000 SP. -->
<icon>icon.etc_sp_scroll2_i00</icon> <icon>icon.etc_sp_scroll2_i00</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<hitTime>200</hitTime>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<magicLvl>1</magicLvl>
<isMagic>2</isMagic>
<reuseDelay>3000</reuseDelay> <reuseDelay>3000</reuseDelay>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<effects> <effects>
<effect name="GiveSp"> <effect name="GiveSp">
<sp>5000000</sp> <sp>5000000</sp>
@@ -268,7 +284,15 @@
<!-- Gives 10,000,000 SP. --> <!-- Gives 10,000,000 SP. -->
<icon>icon.etc_sp_scroll3_i00</icon> <icon>icon.etc_sp_scroll3_i00</icon>
<operateType>A1</operateType> <operateType>A1</operateType>
<hitTime>200</hitTime>
<rideState>NONE;STRIDER;WYVERN;WOLF</rideState>
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<magicLvl>1</magicLvl>
<isMagic>2</isMagic>
<reuseDelay>3000</reuseDelay> <reuseDelay>3000</reuseDelay>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<effects> <effects>
<effect name="GiveSp"> <effect name="GiveSp">
<sp>10000000</sp> <sp>10000000</sp>