Eve the Fortune Teller.

This commit is contained in:
MobiusDev
2015-12-06 02:45:08 +00:00
parent 0f63734fe9
commit 76c65e1134
12 changed files with 673 additions and 10 deletions

View File

@@ -1,5 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<list enabled="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd/PrimeShop.xsd"> <list enabled="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd/PrimeShop.xsd">
<!-- Fortune Telling Event Items -->
<!--
<item id="1011633" cat="4" paymentType="0" price="1" panelType="1" recommended="1" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="76" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" >
<item itemId="23768" count="1" />
</item>
<item id="1011632" cat="4" paymentType="1" price="35000000" panelType="1" recommended="1" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="76" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" >
<item itemId="23767" count="1" />
</item>
-->
<item id="1010030" cat="2" paymentType="0" price="8" panelType="0" recommended="0" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="0" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" > <item id="1010030" cat="2" paymentType="0" price="8" panelType="0" recommended="0" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="0" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" >
<item itemId="20332" count="5000" /> <!-- Beast Soulshot--> <item itemId="20332" count="5000" /> <!-- Beast Soulshot-->
</item> </item>
@@ -720,13 +730,13 @@
<item itemId="23805" count="1" /> <!-- Hero Coin--> <item itemId="23805" count="1" /> <!-- Hero Coin-->
<item itemId="23985" count="1" /> <!-- Extra Pass: Ancient Kartia's Labyrinth--> <item itemId="23985" count="1" /> <!-- Extra Pass: Ancient Kartia's Labyrinth-->
</item> </item>
<item id="1011341" cat="4" paymentType="0" price="320" panelType="1" recommended="1" startSale="1404896400" endSale="1406710800" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" > <item id="1011341" cat="4" paymentType="0" price="320" panelType="1" recommended="1" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" >
<item itemId="22883" count="1" /> <!-- Scroll: Replenish Vitality--> <item itemId="22883" count="1" /> <!-- Scroll: Replenish Vitality-->
<item itemId="22966" count="1" /> <!-- Vitality Maintaining Potion (1-hour)--> <item itemId="22966" count="1" /> <!-- Vitality Maintaining Potion (1-hour)-->
<item itemId="23728" count="1" /> <!-- Erupting Vitality XP Potion--> <item itemId="23728" count="1" /> <!-- Erupting Vitality XP Potion-->
<item itemId="23805" count="5" /> <!-- Hero Coin--> <item itemId="23805" count="5" /> <!-- Hero Coin-->
</item> </item>
<item id="1011342" cat="4" paymentType="0" price="2000" panelType="1" recommended="1" startSale="1404896400" endSale="1406710800" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" > <item id="1011342" cat="4" paymentType="0" price="2000" panelType="1" recommended="1" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" >
<item itemId="22885" count="2" /> <!-- Scroll: Replenish Vitality (Top-grade)--> <item itemId="22885" count="2" /> <!-- Scroll: Replenish Vitality (Top-grade)-->
<item itemId="22966" count="5" /> <!-- Vitality Maintaining Potion (1-hour)--> <item itemId="22966" count="5" /> <!-- Vitality Maintaining Potion (1-hour)-->
<item itemId="23728" count="5" /> <!-- Erupting Vitality XP Potion--> <item itemId="23728" count="5" /> <!-- Erupting Vitality XP Potion-->

View File

@@ -249,6 +249,7 @@ conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java
# Events # Events
events/CharacterBirthday/CharacterBirthday.java events/CharacterBirthday/CharacterBirthday.java
events/EveTheFortuneTeller/EveTheFortuneTeller.java
events/HuntForSanta/HuntForSanta.java events/HuntForSanta/HuntForSanta.java
# Disabled by default events # Disabled by default events

View File

@@ -0,0 +1,9 @@
<html><body>Crystal Seer Eve:<br>
Welcome to the doorway to your future! Show me your tickets, and I'll show you all that you desire.<br>
As long as you bring me the Fortune Reading tickets needed, I can read your fortune.<br>
You can get various dimensional items and rare items. You can get better items from the Luxury Fortune Reading game than the Regular Fortune Reading game.<br>
To play the <font color="LEVEL">Luxury Fortune Reading game</font>, you'll need a <font color="LEVEL">Luxury Fortune Reading Ticket</font>.<br>
To play the <font color="LEVEL">Regular Fortune Reading game</font>, you'll need a <font color="LEVEL">Fortune Reading Ticket</font>.<br>
You can purchase <font color="LEVEL">Fortune Reading Tickets</font> from the <font color="LEVEL">L2Store</font> for 35,000,000 Adena each..<br>
You can purchase <font color="LEVEL">Luxury Fortune Reading Tickets</font> for 160 NCoins each.<br>
<a action="bypass -h Quest EveTheFortuneTeller 8542.htm">Back</a></body></html>

View File

@@ -0,0 +1,12 @@
<html><body scroll="no">
<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="L2UI_CH3.refinewnd_back_Pattern"> <tr>
<td valign="top" align="center"> <!-- Invitation Emblem --> <table border=0 cellpadding=0 cellspacing=0> <tr>
<td align="center" width=185 height=185 background="BranchSys3.LuckyGameEmblem"></td></tr>
</table> <!-- //Invitation Emblem --> <table border=0 cellpadding=0 cellspacing=0 width="272"> <tr>
<td align="center" height="30"><font color="af9878">May your future be full of mystery!</font></td></tr>
<tr><td align="center">What would suit your fancy, traveler?</td></tr> <tr><td height="10"></td></tr>
<tr><td align="center"><button action="bypass -h Quest EveTheFortuneTeller LuxuryFortuneReadingGame" value="Luxury Fortune Reading Game" width="200" height="31" back="L2UI_CT1.HtmlWnd_DF_Awake_Down" fore="L2UI_CT1.HtmlWnd_DF_Awake"></button></td></tr>
<tr><td height="10"></td></tr> <tr><td align="center"><button action="bypass -h Quest EveTheFortuneTeller FortuneReadingGame" value="Fortune Reading Game" width="200" height="31" back="L2UI_CT1.HtmlWnd_DF_contribution_down" fore="L2UI_CT1.HtmlWnd_DF_contribution"></button></td></tr> <tr><td height="10"></td></tr>
<tr><td align="center"><button action="bypass -h Quest EveTheFortuneTeller 8542-1.htm" value="Help" width="200" height="31" back="L2UI_CT1.OlympiadWnd_DF_Info_Down" fore="L2UI_CT1.OlympiadWnd_DF_Info"></button></td></tr>
<tr><td height="10"></td></tr> </table> </td></tr></table>
</body></html>

View File

@@ -0,0 +1,111 @@
/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package events.EveTheFortuneTeller;
import com.l2jserver.gameserver.enums.ChatType;
import com.l2jserver.gameserver.model.Location;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.event.LongTimeEvent;
import com.l2jserver.gameserver.network.NpcStringId;
import com.l2jserver.gameserver.network.serverpackets.NpcSay;
import com.l2jserver.gameserver.network.serverpackets.luckygame.ExStartLuckyGame;
import com.l2jserver.gameserver.util.Broadcast;
/**
* Eve the Fortune Teller Returns<br>
* Info - http://www.lineage2.com/en/news/events/11182015-eve-the-fortune-teller-returns.php
* @author Mobius
*/
public final class EveTheFortuneTeller extends LongTimeEvent
{
// NPCs
private static final int EVE = 8542;
private static final int JAYCE = 8540;
// Misc
private static final Location JAYCE_SPAWN = new Location(148090, 26644, -2209, 16383);
private static final NpcStringId[] JAYCE_TEXT =
{
NpcStringId.I_LOOK_WEST,
NpcStringId.EVE_WILL_BRING_YOU_GREAT_FORTUNE,
NpcStringId.YOU_WILL_ONE_DAY_ASK_ME_FOR_GUIDANCE_IN_YOUR_PATH
};
private EveTheFortuneTeller()
{
super(EveTheFortuneTeller.class.getSimpleName(), "events");
addStartNpc(EVE);
addFirstTalkId(EVE);
addTalkId(EVE);
addSpawnId(JAYCE);
if (isEventPeriod())
{
addSpawn(JAYCE, JAYCE_SPAWN, false, 0);
}
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
switch (event)
{
case "8542.htm":
case "8542-1.htm":
{
htmltext = event;
break;
}
case "FortuneReadingGame":
{
player.sendPacket(new ExStartLuckyGame(1));
break;
}
case "LuxuryFortuneReadingGame":
{
player.sendPacket(new ExStartLuckyGame(2));
break;
}
case "JAYCE_SHOUT":
{
Broadcast.toKnownPlayersInRadius(npc, new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), JAYCE_TEXT[getRandom(JAYCE_TEXT.length)]), 1000);
break;
}
}
return htmltext;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
return "8542.htm";
}
@Override
public String onSpawn(L2Npc npc)
{
startQuestTimer("JAYCE_SHOUT", 45000, npc, null, true);
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new EveTheFortuneTeller();
}
}

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<event name="Eve the Fortune Teller" active="11 11 1015-18 12 2015" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/eventConfig.xsd">
<spawnlist>
<!-- Eve -->
<add npc="8542" x="-114178" y="255031" z="-1538" heading="16383" /> <!-- Talking Island -->
<add npc="8542" x="-82484" y="153527" z="-3168" heading="32767" /> <!-- Gludin -->
<add npc="8542" x="-13373" y="124615" z="-3120" heading="49151" /> <!-- Gludio -->
<add npc="8542" x="20550" y="144602" z="-3080" heading="33104" /> <!-- Dion -->
<add npc="8542" x="82672" y="146596" z="-3464" heading="33000" /> <!-- Giran -->
<add npc="8542" x="109947" y="221058" z="-3483" heading="49151" /> <!-- Heine -->
<add npc="8542" x="81946" y="55388" z="-1520" heading="16500" /> <!-- Oren -->
<add npc="8542" x="115775" y="76783" z="-2664" heading="58062" /> <!-- Hunters -->
<add npc="8542" x="148123" y="26655" z="-2209" heading="16383" /> <!-- Aden -->
<add npc="8542" x="43521" y="-49074" z="-792" heading="597" /> <!-- Rune -->
<add npc="8542" x="146301" y="-57974" z="-2985" heading="44000" /> <!-- Goddard -->
<add npc="8542" x="88792" y="-140711" z="-1544" heading="11500" /> <!-- Schuttgart -->
</spawnlist>
<messages>
<add type="onEnd" text="Eve the Fortune Teller: Event end!" />
<add type="onEnter" text="Eve the Fortune Teller: Event ongoing!" />
</messages>
</event>

View File

@@ -934,17 +934,16 @@
</collision> </collision>
</npc> </npc>
<npc id="8540" level="90" type="L2Npc" name="Jayce" title="Fortunetelling Mentor"> <npc id="8540" level="90" type="L2Npc" name="Jayce" title="Fortunetelling Mentor">
<!-- AUTO GENERATED NPC TODO: FIX IT --> <race>KAMAEL</race>
<race>HUMAN</race> <sex>MALE</sex>
<sex>FEMALE</sex> <stats>
<stats str="40" int="21" dex="30" wit="20" con="43" men="20">
<vitals hp="615901" hpRegen="7.5" mp="1345.8" mpRegen="2.7" /> <vitals hp="615901" hpRegen="7.5" mp="1345.8" mpRegen="2.7" />
<speed> <speed>
<walk ground="50" /> <walk ground="50" />
<run ground="120" /> <run ground="120" />
</speed> </speed>
</stats> </stats>
<status attackable="false" /> <status attackable="false" targetable="false" talkable="false" />
<collision> <collision>
<radius normal="9.5" /> <radius normal="9.5" />
<height normal="22.4" /> <height normal="22.4" />
@@ -968,10 +967,9 @@
</collision> </collision>
</npc> </npc>
<npc id="8542" level="70" type="L2Npc" name="Eve" title="Crystal Seer"> <npc id="8542" level="70" type="L2Npc" name="Eve" title="Crystal Seer">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race> <race>HUMAN</race>
<sex>FEMALE</sex> <sex>FEMALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="20"> <stats>
<vitals hp="4228" hpRegen="7.5" mp="1345.8" mpRegen="2.7" /> <vitals hp="4228" hpRegen="7.5" mp="1345.8" mpRegen="2.7" />
<speed> <speed>
<walk ground="50" /> <walk ground="50" />

View File

@@ -67,6 +67,7 @@ import com.l2jserver.gameserver.network.clientpackets.friend.RequestFriendList;
import com.l2jserver.gameserver.network.clientpackets.friend.RequestSendFriendMsg; import com.l2jserver.gameserver.network.clientpackets.friend.RequestSendFriendMsg;
import com.l2jserver.gameserver.network.clientpackets.friend.RequestUpdateBlockMemo; import com.l2jserver.gameserver.network.clientpackets.friend.RequestUpdateBlockMemo;
import com.l2jserver.gameserver.network.clientpackets.friend.RequestUpdateFriendMemo; import com.l2jserver.gameserver.network.clientpackets.friend.RequestUpdateFriendMemo;
import com.l2jserver.gameserver.network.clientpackets.luckygame.RequestLuckyGamePlay;
import com.l2jserver.gameserver.network.clientpackets.mentoring.ConfirmMenteeAdd; import com.l2jserver.gameserver.network.clientpackets.mentoring.ConfirmMenteeAdd;
import com.l2jserver.gameserver.network.clientpackets.mentoring.RequestMenteeAdd; import com.l2jserver.gameserver.network.clientpackets.mentoring.RequestMenteeAdd;
import com.l2jserver.gameserver.network.clientpackets.mentoring.RequestMenteeWaitingList; import com.l2jserver.gameserver.network.clientpackets.mentoring.RequestMenteeWaitingList;
@@ -1630,7 +1631,7 @@ public final class L2GamePacketHandler implements IPacketHandler<L2GameClient>,
msg = new ExPCCafeRequestOpenWindowWithoutNPC(); msg = new ExPCCafeRequestOpenWindowWithoutNPC();
break; break;
case 0xF2: case 0xF2:
// msg = new RequestLuckyGamePlay(); msg = new RequestLuckyGamePlay();
break; break;
case 0xF3: case 0xF3:
// msg = new NotifyTrainingRoomEnd(); // msg = new NotifyTrainingRoomEnd();

View File

@@ -0,0 +1,50 @@
/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J Server is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.clientpackets.luckygame;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
import com.l2jserver.gameserver.network.serverpackets.luckygame.ExBettingLuckyGameResult;
/**
* @author Mobius
*/
public class RequestLuckyGamePlay extends L2GameClientPacket
{
private int _type;
private int _count;
@Override
protected void readImpl()
{
_type = readD(); // luxury = 2, normal = 1
_count = readD(); // count
}
@Override
protected void runImpl()
{
getActiveChar().sendPacket(new ExBettingLuckyGameResult(_type, _count));
}
@Override
public String getType()
{
return getClass().getSimpleName();
}
}

View File

@@ -0,0 +1,127 @@
/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J Server is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.serverpackets.luckygame;
import java.util.ArrayList;
import java.util.List;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
import com.l2jserver.util.Rnd;
/**
* @author Mobius
*/
public class ExBettingLuckyGameResult extends L2GameServerPacket
{
private static final int FORTUNE_READING_TICKET = 23767;
private static final int LUXURY_FORTUNE_READING_TICKET = 23768;
private int _count = 0;
private int _type = 0;
public ExBettingLuckyGameResult(int type, int count)
{
_count = count;
_type = type;
}
@Override
protected void writeImpl()
{
final L2PcInstance _activeChar = getClient().getActiveChar();
if (_activeChar.getInventory().getInventoryItemCount(_type == 2 ? LUXURY_FORTUNE_READING_TICKET : FORTUNE_READING_TICKET, -1) < 1)
{
_activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_TICKETS);
return;
}
// Remove tickets
_activeChar.getInventory().destroyItemByItemId("FortuneTelling", _type == 2 ? LUXURY_FORTUNE_READING_TICKET : FORTUNE_READING_TICKET, _count, _activeChar, "FortuneTelling");
// Count remaining tickets
final long remainingTickets = _activeChar.getInventory().getInventoryItemCount(_type == 2 ? LUXURY_FORTUNE_READING_TICKET : FORTUNE_READING_TICKET, -1);
// Calculate rewards
List<ItemHolder> rewards = new ArrayList<>();
for (int rewardCounter = 0; rewardCounter < _count; rewardCounter++)
{
if (Rnd.get(3) == 0) // 1 out of 3 chance
{
if (_type == 2)
{
if (_count >= 40)
{
rewards.add(LuckyGameRewards.getRandomRare()); // Rare
}
else
{
rewards.add(LuckyGameRewards.getRandomLuxury()); // Luxury
}
}
else
{
rewards.add(LuckyGameRewards.getRandomNormal()); // Normal
}
}
}
writeC(0xFE);
writeH(0x161);
writeD(0x01); // 0 disabled, 1 enabled
writeD(0x01); // ?
writeD((int) remainingTickets);
if (rewards.size() > 0)
{
writeD(rewards.size());
for (ItemHolder reward : rewards)
{
writeD(0x02); // normal = 1, rare = 2 (forcing 2)
writeD(reward.getId());
writeD((int) reward.getCount());
if (_type == 2)
{
_activeChar.addItem("LuxuryFortuneTelling", reward, _activeChar, false);
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.CONGRATULATIONS_C1_HAS_OBTAINED_S2_OF_S3_IN_THE_LUXURY_FORTUNE_READING);
sm.addPcName(_activeChar);
sm.addLong(reward.getCount());
sm.addItemName(new L2ItemInstance(reward.getId()));
_activeChar.sendPacket(sm);
}
else
{
_activeChar.addItem("FortuneTelling", reward, _activeChar, false);
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.CONGRATULATIONS_C1_HAS_OBTAINED_S2_OF_S3_THROUGH_FORTUNE_READING);
sm.addPcName(_activeChar);
sm.addLong(reward.getCount());
sm.addItemName(new L2ItemInstance(reward.getId()));
_activeChar.sendPacket(sm);
}
}
}
else
{
writeD(0x00);
}
}
}

View File

@@ -0,0 +1,47 @@
/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J Server is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.serverpackets.luckygame;
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
/**
* @author Mobius
*/
public class ExStartLuckyGame extends L2GameServerPacket
{
private static final int FORTUNE_READING_TICKET = 23767;
private static final int LUXURY_FORTUNE_READING_TICKET = 23768;
private int _type = 0;
public ExStartLuckyGame(int type)
{
_type = type;
}
@Override
protected void writeImpl()
{
final long count = getClient().getActiveChar().getInventory().getInventoryItemCount(_type == 2 ? LUXURY_FORTUNE_READING_TICKET : FORTUNE_READING_TICKET, -1);
writeC(0xFE);
writeH(0x160);
writeD(_type);
writeD((int) count);
}
}

View File

@@ -0,0 +1,275 @@
/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J Server is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.serverpackets.luckygame;
import java.util.ArrayList;
import java.util.List;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.util.Rnd;
/**
* @author Mobius
*/
public final class LuckyGameRewards // TODO: Move to XML?
{
private final static List<ItemHolder> _fortuneReadingTicketRewards = new ArrayList<>();
static
{
_fortuneReadingTicketRewards.add(new ItemHolder(6656, 1)); // Antharas' Earring
_fortuneReadingTicketRewards.add(new ItemHolder(21712, 1)); // Blessed Zaken's Earring
_fortuneReadingTicketRewards.add(new ItemHolder(37511, 1)); // Enhanced Istina's Earring - Warrior
_fortuneReadingTicketRewards.add(new ItemHolder(37517, 1)); // Enhanced Istina's Earring - Wizard
_fortuneReadingTicketRewards.add(new ItemHolder(37512, 1)); // Enhanced Istina's Necklace - Warrior
_fortuneReadingTicketRewards.add(new ItemHolder(37518, 1)); // Enhanced Istina's Necklace - Wizard
_fortuneReadingTicketRewards.add(new ItemHolder(37510, 1)); // Enhanced Istina's Ring - Warrior
_fortuneReadingTicketRewards.add(new ItemHolder(37516, 1)); // Enhanced Istina's Ring - Wizard
_fortuneReadingTicketRewards.add(new ItemHolder(37508, 1)); // Enhanced Octavis' Earring - Warrior
_fortuneReadingTicketRewards.add(new ItemHolder(37514, 1)); // Enhanced Octavis' Earring - Wizard
_fortuneReadingTicketRewards.add(new ItemHolder(37509, 1)); // Enhanced Octavis' Necklace - Warrior
_fortuneReadingTicketRewards.add(new ItemHolder(37515, 1)); // Enhanced Octavis' Necklace - Wizard
_fortuneReadingTicketRewards.add(new ItemHolder(37507, 1)); // Enhanced Octavis' Ring - Warrior
_fortuneReadingTicketRewards.add(new ItemHolder(37513, 1)); // Enhanced Octavis' Ring - Wizard
_fortuneReadingTicketRewards.add(new ItemHolder(6661, 1)); // Orfen's Earring
_fortuneReadingTicketRewards.add(new ItemHolder(6660, 1)); // Queen Ant's Ring
_fortuneReadingTicketRewards.add(new ItemHolder(6657, 1)); // Valakas' Necklace
_fortuneReadingTicketRewards.add(new ItemHolder(17527, 1)); // Scroll: Enchant Armor: (R-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(17526, 1)); // Scroll: Enchant Weapon: (R-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(19448, 1)); // Blessed Scroll: Enchant Armor (R-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(19447, 1)); // Blessed Scroll: Enchant Weapon (R-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(33817, 1)); // Giant's Scroll: Enchant Armor (R-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(33811, 1)); // Giant's Scroll: Enchant Weapon (R-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(36160, 1)); // Scroll of Blessing: (R2-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(36161, 1)); // Scroll of Blessing: (R95-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(36162, 1)); // Scroll of Blessing: (R99-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(27600, 1)); // Scroll of Blessing: Armor (R95-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(27601, 1)); // Scroll of Blessing: Armor (R99-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(27597, 1)); // Scroll of Blessing: Weapon (R95-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(27598, 1)); // Scroll of Blessing: Weapon (R99-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(36513, 5)); // Elcyum Powder
_fortuneReadingTicketRewards.add(new ItemHolder(39631, 1)); // Fortune Pocket - Stage 3
_fortuneReadingTicketRewards.add(new ItemHolder(39633, 1)); // Fortune Pocket - Stage 5
_fortuneReadingTicketRewards.add(new ItemHolder(19440, 5)); // Gemstone (R-grade)
_fortuneReadingTicketRewards.add(new ItemHolder(35563, 2)); // Giant's Energy
_fortuneReadingTicketRewards.add(new ItemHolder(46395, 1)); // Shadow Ingot
_fortuneReadingTicketRewards.add(new ItemHolder(39592, 1)); // Tempest Stone
_fortuneReadingTicketRewards.add(new ItemHolder(46151, 1)); // Superior Giant's Codex - Mastery Chapter 1
_fortuneReadingTicketRewards.add(new ItemHolder(46150, 1)); // Superior Giant's Codex Chapter 1
_fortuneReadingTicketRewards.add(new ItemHolder(46478, 1)); // Leona's Soul Crystal - Stage 5
_fortuneReadingTicketRewards.add(new ItemHolder(46508, 1)); // Lionel's Soul Crystal - Stage 5
_fortuneReadingTicketRewards.add(new ItemHolder(46493, 1)); // Pantheon's Soul Crystal - Stage 5
_fortuneReadingTicketRewards.add(new ItemHolder(46449, 1)); // Kain's Soul Crystal - Stage 6
_fortuneReadingTicketRewards.add(new ItemHolder(46509, 1)); // Lionel's Soul Crystal - Stage 6
_fortuneReadingTicketRewards.add(new ItemHolder(46464, 1)); // Mermoden's Soul Crystal - Stage 6
_fortuneReadingTicketRewards.add(new ItemHolder(46494, 1)); // Pantheon's Soul Crystal - Stage 6
_fortuneReadingTicketRewards.add(new ItemHolder(39637, 1)); // Venir's Talisman - Stage 4
_fortuneReadingTicketRewards.add(new ItemHolder(39639, 1)); // Venir's Talisman - Stage 6
_fortuneReadingTicketRewards.add(new ItemHolder(39641, 1)); // Venir's Talisman - Stage 8
_fortuneReadingTicketRewards.add(new ItemHolder(35649, 1)); // Sealed Talisman - Longing
_fortuneReadingTicketRewards.add(new ItemHolder(37715, 1)); // Talisman - Anakim
_fortuneReadingTicketRewards.add(new ItemHolder(37714, 1)); // Talisman - Lilith
}
private static final List<ItemHolder> _luxuryFortuneReadingTicketRewards = new ArrayList<>();
static
{
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(22426, 1)); // Ancient Scroll: Enchant Weapon: (R-grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(19448, 1)); // Blessed Scroll: Enchant Armor: (R-grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(19447, 1)); // Blessed Scroll: Enchant Weapon: (R-grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(36164, 2)); // Giant's Scroll: Enchant Armor: (R-grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(33811, 1)); // Giant's Scroll: Enchant Weapon (R-grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27600, 2)); // Scroll of Blessing: Armor: (R95 grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27601, 2)); // Scroll of Blessing: Armor: (R99 grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(36160, 1)); // Scroll of Blessing: (R2-grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(36161, 1)); // Scroll of Blessing: (R95-grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(36162, 1)); // Scroll of Blessing: (R99-grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27597, 1)); // Scroll of Blessing: Weapon: (R95-grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27598, 1)); // Scroll of Blessing: Weapon: (R99-grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(17527, 2)); // Scroll: Enchant Armor: (R-grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(17526, 1)); // Scroll: Enchant Weapon: (R-grade)
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(35566, 1)); // Dark Amaranthine Enhancement Stone
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(35567, 1)); // Dark Eternal Enhancement Stone
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(6656, 1)); // Antharas' Earring
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(21712, 1)); // Blessed Zaken's Earring
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37511, 1)); // Enhanced Istina's Earring - Warrior
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37517, 1)); // Enhanced Istina's Earring - Wizard
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37512, 1)); // Enhanced Istina's Necklace - Warrior
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37518, 1)); // Enhanced Istina's Necklace - Wizard
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37510, 1)); // Enhanced Istina's Ring - Warrior
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37516, 1)); // Enhanced Istina's Ring - Wizard
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37508, 1)); // Enhanced Octavis' Earring - Warrior
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37514, 1)); // Enhanced Octavis' Earring - Wizard
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37509, 1)); // Enhanced Octavis' Necklace - Warrior
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37515, 1)); // Enhanced Octavis' Necklace - Wizard
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37507, 1)); // Enhanced Octavis' Ring - Warrior
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37513, 1)); // Enhanced Octavis' Ring - Wizard
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(6661, 1)); // Orfen's Earring
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(6660, 1)); // Queen Ant's Ring
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(6657, 1)); // Valakas' Necklace
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27462, 1)); // Angel Circlet Box
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27460, 1)); // Cat Ears Box
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27463, 1)); // Demon Circlet Box
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27466, 1)); // Eyepatch Box
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27467, 1)); // Party Hat Box
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27464, 1)); // Pirate's Eyepatch Box
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27458, 1)); // Rabbit Ears Box
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27459, 1)); // Raccoon Ears Box
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27468, 1)); // Refined Angel Ring Box
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27469, 1)); // Refined Devil Horn Box
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27461, 1)); // Romantic Chapeau Box
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(27465, 1)); // Outlaw's Eyepatch Box
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(36515, 1)); // Elcyum
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(39631, 3)); // Fortune Pocket - Stage 3
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(39633, 1)); // Fortune Pocket - Stage 5
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(19440, 15)); // Gem Stone - R grade
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(35563, 10)); // Giant's Energy
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(39738, 1)); // Rune Stone
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(39592, 1)); // Tempest Stone
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46150, 1)); // Superior Giant's Codex - Chapter 1
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46151, 1)); // Superior Giant's Codex - Mastery Chapter 1
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46478, 1)); // Leona's Soul Crystal - Stage 5
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46508, 1)); // Lionel's Soul Crystal - Stage 5
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46493, 1)); // Pantheon's Soul Crystal - Stage 5
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46449, 1)); // Kain's Soul Crystal - Stage 6
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46479, 1)); // Leona's Soul Crystal - Stage 6
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46509, 1)); // Lionel's Soul Crystal - Stage 6
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46464, 1)); // Mermoden's Soul Crystal - Stage 6
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46494, 1)); // Pantheon's Soul Crystal - Stage 6
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46553, 1)); // Mystic Soul Crystal
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37722, 1)); // Eva's Special Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37720, 1)); // Maphr's Special Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37719, 1)); // Pa'agrio's Special Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37721, 1)); // Sayha's Special Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(26444, 1)); // Shadow Buster Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(26438, 1)); // Shadow Cutter Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(26446, 1)); // Shadow Dualsword Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(26440, 1)); // Shadow Fighter Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46395, 10)); // Shadow Ingot
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(26445, 1)); // Shadow Retributer Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(26437, 1)); // Shadow Shaper Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(26443, 1)); // Shadow Shooter Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(26439, 1)); // Shadow Slasher Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(26441, 1)); // Shadow Stormer Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(26442, 1)); // Shadow Thrower Pack
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37715, 1)); // Talisman - Anakim
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37714, 1)); // Talisman - Lilith
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37717, 1)); // Talisman - Seven Signs
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(39637, 1)); // Venir's Talisman - Stage 4
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(39639, 1)); // Venir's Talisman - Stage 6
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(39641, 1)); // Venir's Talisman - Stage 8
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(39643, 1)); // Venir's Talisman - Stage 10
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(39647, 1)); // Venir's Talisman - Stage 14
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(39573, 1)); // Sealed Talisman - Insanity
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(35649, 1)); // Sealed Talisman - Longing
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(37716, 1)); // Seven Signs' Energy
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(34999, 1)); // Tauti's Axe
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(35001, 1)); // Tauti's Dual Axe
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(34998, 1)); // Tauti's One-handed Axe
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46063, 1)); // Kelbim Crossbow
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46061, 1)); // Kelbim Dual Dagger
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46062, 1)); // Kelbim's Bow
_luxuryFortuneReadingTicketRewards.add(new ItemHolder(46060, 1)); // Kelbim's Dagger
}
private static final List<ItemHolder> _rareLuxuryFortuneReadingTicketRewards = new ArrayList<>();
static
{
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(22426, 1)); // Ancient Scroll: Enchant Weapon - R grade
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(35566, 1)); // Dark Amaranthine Enhancement Stone
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(35567, 1)); // Dark Eternal Enhancement Stone
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27601, 2)); // Scroll of Blessing: Armor (R99-grade)
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(36160, 1)); // Scroll of Blessing: (R2-grade)
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(36161, 1)); // Scroll of Blessing: (R95-grade)
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(36162, 1)); // Scroll of Blessing: (R99-grade)
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27598, 1)); // Scroll of Blessing: Weapon (R99-grade)
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(6656, 1)); // Antharas' Earring
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(21712, 1)); // Blessed Zaken's Earring
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37511, 1)); // Enhanced Istina's Earring - Warrior
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37517, 1)); // Enhanced Istina's Earring - Wizard
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37512, 1)); // Enhanced Istina's Necklace - Warrior
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37518, 1)); // Enhanced Istina's Necklace - Wizard
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37510, 1)); // Enhanced Istina's Ring - Warrior
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37516, 1)); // Enhanced Istina's Ring - Wizard
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37508, 1)); // Enhanced Octavis' Earring - Warrior
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37514, 1)); // Enhanced Octavis' Earring - Wizard
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37509, 1)); // Enhanced Octavis' Necklace - Warrior
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37515, 1)); // Enhanced Octavis' Necklace - Wizard
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37507, 1)); // Enhanced Octavis' Ring - Warrior
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37513, 1)); // Enhanced Octavis' Ring - Wizard
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(6661, 1)); // Orfen's Earring
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(6660, 1)); // Queen Ant's Ring
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27462, 1)); // Angel Circlet Box
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27460, 1)); // Cat Ears Box
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27463, 1)); // Devil Circlet Box
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27464, 1)); // Eyepatch Box
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27465, 1)); // Outlaw's Eyepatch Box
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27467, 1)); // Party Hat Box
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27464, 1)); // Pirate's Eyepatch Box
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27458, 1)); // Rabbit Ears Box
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27459, 1)); // Raccoon Ears Box
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27468, 1)); // Refined Angel Ring Box
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27469, 1)); // Refined Devil Horn Box
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(27461, 1)); // Romantic Chapeau Box
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37722, 1)); // Eva's Special Pack
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37720, 1)); // Maphr's Special Pack
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37719, 1)); // Pa'agrio's Special Pack
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37721, 1)); // Sayha's Special Pack
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46449, 1)); // Kain's Soul Crystal - Stage 6
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46478, 1)); // Leona's Soul Crystal - Stage 5
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46479, 1)); // Leona's Soul Crystal - Stage 6
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46508, 1)); // Lionel's Soul Crystal - Stage 5
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46509, 1)); // Lionel's Soul Crystal - Stage 6
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46464, 1)); // Mermoden's Soul Crystal - Stage 6
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46493, 1)); // Pantheon's Soul Crystal - Stage 5
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46494, 1)); // Pantheon's Soul Crystal - Stage 6
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46553, 1)); // Mystic Soul Crystal
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46063, 1)); // Kelbim Crossbow
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46061, 1)); // Kelbim Dual Dagger
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46062, 1)); // Kelbim's Bow
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46060, 1)); // Kelbim's Dagger
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(34999, 1)); // Tauti's Axe
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(35001, 1)); // Tauti's Dual Axe
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(34998, 1)); // Tauti's One-handed Axe
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(6657, 1)); // Valakas' Necklace
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46395, 10)); // Shadow Ingot
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(46151, 1)); // Superior Giant's Codex - Mastery Chapter 1
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(39573, 1)); // Sealed Talisman - Insanity
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(35649, 1)); // Sealed Talisman - Longing
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37716, 1)); // Seven Signs' Energy
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37715, 1)); // Talisman - Anakim
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37714, 1)); // Talisman - Lilith
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(37717, 1)); // Talisman - Seven Signs
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(39641, 1)); // Venir's Talisman - Stage 8
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(39643, 1)); // Venir's Talisman - Stage 10
_rareLuxuryFortuneReadingTicketRewards.add(new ItemHolder(39647, 1)); // Venir's Talisman - Stage 14
}
public static ItemHolder getRandomNormal()
{
return _fortuneReadingTicketRewards.get(Rnd.get(_fortuneReadingTicketRewards.size()));
}
public static ItemHolder getRandomLuxury()
{
return _luxuryFortuneReadingTicketRewards.get(Rnd.get(_luxuryFortuneReadingTicketRewards.size()));
}
public static ItemHolder getRandomRare()
{
return _rareLuxuryFortuneReadingTicketRewards.get(Rnd.get(_rareLuxuryFortuneReadingTicketRewards.size()));
}
}