/*
* 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 .
*/
package quests.Q00383_TreasureHunt;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
/**
* Treasure Hunt (383)
* @author Adry_85
*/
public final class Q00383_TreasureHunt extends Quest
{
// NPCs
private static final int ESPEN = 30890;
private static final int PIRATES_CHEST = 31148;
// Items
private static final int THIEF_KEY = 1661;
private static final int PIRATES_TREASURE_MAP = 5915;
// Misc
private static final int MIN_LEVEL = 42;
// Rewards
private static final ItemHolder SCROLL_ENCHANT_ARMOR_C = new ItemHolder(952, 1);
private static final ItemHolder SCROLL_ENCHANT_ARMOR_D = new ItemHolder(956, 1);
private static final ItemHolder EMERALD = new ItemHolder(1337, 1);
private static final ItemHolder BLUE_ONYX = new ItemHolder(1338, 2);
private static final ItemHolder ONYX = new ItemHolder(1339, 2);
private static final ItemHolder MITHRIL_GLOVES = new ItemHolder(2450, 1);
private static final ItemHolder SAGES_WORN_GLOVES = new ItemHolder(2451, 1);
private static final ItemHolder MOONSTONE = new ItemHolder(3447, 2);
private static final ItemHolder ALEXANDRITE = new ItemHolder(3450, 1);
private static final ItemHolder FIRE_EMERALD = new ItemHolder(3453, 1);
private static final ItemHolder IMPERIAL_DIAMOND = new ItemHolder(3456, 1);
private static final ItemHolder MUSICAL_SCORE_THEME_OF_LOVE = new ItemHolder(4408, 1);
private static final ItemHolder MUSICAL_SCORE_THEME_OF_BATTLE = new ItemHolder(4409, 1);
private static final ItemHolder MUSICAL_SCORE_THEME_OF_CELEBRATION = new ItemHolder(4418, 1);
private static final ItemHolder MUSICAL_SCORE_THEME_OF_COMEDY = new ItemHolder(4419, 1);
private static final ItemHolder DYE_S1C3_C = new ItemHolder(4481, 1); // Greater Dye of STR
private static final ItemHolder DYE_S1D3_C = new ItemHolder(4482, 1); // Greater Dye of STR
private static final ItemHolder DYE_C1S3_C = new ItemHolder(4483, 1); // Greater Dye of CON
private static final ItemHolder DYE_C1C3_C = new ItemHolder(4484, 1); // Greater Dye of CON
private static final ItemHolder DYE_D1S3_C = new ItemHolder(4485, 1); // Greater Dye of DEX
private static final ItemHolder DYE_D1C3_C = new ItemHolder(4486, 1); // Greater Dye of DEX
private static final ItemHolder DYE_I1M3_C = new ItemHolder(4487, 1); // Greater Dye of INT
private static final ItemHolder DYE_I1W3_C = new ItemHolder(4488, 1); // Greater Dye of INT
private static final ItemHolder DYE_M1I3_C = new ItemHolder(4489, 1); // Greater Dye of MEN
private static final ItemHolder DYE_M1W3_C = new ItemHolder(4490, 1); // Greater Dye of MEN
private static final ItemHolder DYE_W1I3_C = new ItemHolder(4491, 1); // Greater Dye of WIT
private static final ItemHolder DYE_W1M3_C = new ItemHolder(4492, 1); // Greater Dye of WIT
public Q00383_TreasureHunt()
{
super(383, Q00383_TreasureHunt.class.getSimpleName(), "Treasure Hunt");
addStartNpc(ESPEN);
addTalkId(ESPEN, PIRATES_CHEST);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30890-04.htm":
{
htmltext = event;
break;
}
case "30890-05.htm":
{
if (hasQuestItems(player, PIRATES_TREASURE_MAP))
{
giveAdena(player, 1000, false);
takeItems(player, PIRATES_TREASURE_MAP, -1);
htmltext = event;
}
break;
}
case "30890-06.htm":
{
htmltext = (hasQuestItems(player, PIRATES_TREASURE_MAP)) ? event : "30890-12.html";
break;
}
case "30890-07.htm":
{
if (hasQuestItems(player, PIRATES_TREASURE_MAP))
{
qs.startQuest();
takeItems(player, PIRATES_TREASURE_MAP, -1);
htmltext = event;
}
break;
}
case "30890-08.html":
case "30890-09.html":
case "30890-10.html":
{
if (qs.isCond(1))
{
htmltext = event;
}
break;
}
case "30890-11.html":
{
if (qs.isCond(1))
{
qs.setCond(2, true);
htmltext = event;
}
break;
}
case "31148-02.html":
{
if (qs.isCond(2))
{
if (hasQuestItems(player, THIEF_KEY))
{
takeItems(player, THIEF_KEY, -1);
qs.exitQuest(true, true);
htmltext = event;
int bonus = 0;
int random = getRandom(100);
if (random < 5)
{
rewardItems(player, MITHRIL_GLOVES);
}
else if (random < 6)
{
rewardItems(player, SAGES_WORN_GLOVES);
}
else if (random < 18)
{
rewardItems(player, SCROLL_ENCHANT_ARMOR_D);
}
else if (random < 28)
{
rewardItems(player, SCROLL_ENCHANT_ARMOR_C);
}
else
{
bonus += 500;
}
random = getRandom(1000);
if (random < 25)
{
rewardItems(player, DYE_S1C3_C);
}
else if (random < 50)
{
rewardItems(player, DYE_S1D3_C);
}
else if (random < 75)
{
rewardItems(player, DYE_C1S3_C);
}
else if (random < 100)
{
rewardItems(player, DYE_C1C3_C);
}
else if (random < 125)
{
rewardItems(player, DYE_D1S3_C);
}
else if (random < 150)
{
rewardItems(player, DYE_D1C3_C);
}
else if (random < 175)
{
rewardItems(player, DYE_I1M3_C);
}
else if (random < 200)
{
rewardItems(player, DYE_I1W3_C);
}
else if (random < 225)
{
rewardItems(player, DYE_M1I3_C);
}
else if (random < 250)
{
rewardItems(player, DYE_M1W3_C);
}
else if (random < 275)
{
rewardItems(player, DYE_W1I3_C);
}
else if (random < 300)
{
rewardItems(player, DYE_W1M3_C);
}
else
{
bonus += 300;
}
random = getRandom(100);
if (random < 4)
{
rewardItems(player, EMERALD);
}
else if (random < 8)
{
rewardItems(player, BLUE_ONYX);
}
else if (random < 12)
{
rewardItems(player, ONYX);
}
else if (random < 16)
{
rewardItems(player, MOONSTONE);
}
else if (random < 20)
{
rewardItems(player, ALEXANDRITE);
}
else if (random < 25)
{
rewardItems(player, FIRE_EMERALD);
}
else if (random < 27)
{
rewardItems(player, IMPERIAL_DIAMOND);
}
else
{
bonus += 500;
}
random = getRandom(100);
if (random < 20)
{
rewardItems(player, MUSICAL_SCORE_THEME_OF_LOVE);
}
else if (random < 40)
{
rewardItems(player, MUSICAL_SCORE_THEME_OF_BATTLE);
}
else if (random < 60)
{
rewardItems(player, MUSICAL_SCORE_THEME_OF_CELEBRATION);
}
else if (random < 80)
{
rewardItems(player, MUSICAL_SCORE_THEME_OF_COMEDY);
}
else
{
bonus += 500;
}
giveAdena(player, bonus, true);
}
else
{
htmltext = "31148-03.html";
}
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "30890-01.html";
}
else if (!hasQuestItems(player, PIRATES_TREASURE_MAP))
{
htmltext = "30890-02.html";
}
else
{
htmltext = "30890-03.htm";
}
}
else if (qs.isStarted())
{
if (npc.getId() == ESPEN)
{
if (qs.isCond(1))
{
htmltext = "30890-13.html";
}
else if (qs.isCond(2))
{
htmltext = "30890-14.html";
}
}
else
{
if (qs.isCond(2))
{
htmltext = "31148-01.html";
}
}
}
return htmltext;
}
}