/*
* 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 custom.EchoCrystals;
import java.util.HashMap;
import java.util.Map;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.util.Util;
/**
* Echo Crystals AI.
* @author Plim
*/
public final class EchoCrystals extends Quest
{
private final static int[] NPCs =
{
31042,
31043
};
private static final int ADENA = 57;
private static final int COST = 200;
private static final Map SCORES = new HashMap<>();
private class ScoreData
{
private final int crystalId;
private final String okMsg;
private final String noAdenaMsg;
private final String noScoreMsg;
public ScoreData(int crystalId, String okMsg, String noAdenaMsg, String noScoreMsg)
{
super();
this.crystalId = crystalId;
this.okMsg = okMsg;
this.noAdenaMsg = noAdenaMsg;
this.noScoreMsg = noScoreMsg;
}
public int getCrystalId()
{
return crystalId;
}
public String getOkMsg()
{
return okMsg;
}
public String getNoAdenaMsg()
{
return noAdenaMsg;
}
public String getNoScoreMsg()
{
return noScoreMsg;
}
}
private EchoCrystals()
{
super(-1, EchoCrystals.class.getSimpleName(), "custom");
// Initialize Map
SCORES.put(4410, new ScoreData(4411, "01", "02", "03"));
SCORES.put(4409, new ScoreData(4412, "04", "05", "06"));
SCORES.put(4408, new ScoreData(4413, "07", "08", "09"));
SCORES.put(4420, new ScoreData(4414, "10", "11", "12"));
SCORES.put(4421, new ScoreData(4415, "13", "14", "15"));
SCORES.put(4419, new ScoreData(4417, "16", "05", "06"));
SCORES.put(4418, new ScoreData(4416, "17", "05", "06"));
for (int npc : NPCs)
{
addStartNpc(npc);
addTalkId(npc);
}
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = "";
QuestState st = player.getQuestState(EchoCrystals.class.getSimpleName());
if ((st != null) && Util.isDigit(event))
{
int score = Integer.parseInt(event);
if (SCORES.containsKey(score))
{
int crystal = SCORES.get(score).getCrystalId();
String ok = SCORES.get(score).getOkMsg();
String noadena = SCORES.get(score).getNoAdenaMsg();
String noscore = SCORES.get(score).getNoScoreMsg();
if (!hasQuestItems(player, score))
{
htmltext = npc.getId() + "-" + noscore + ".htm";
}
else if (getQuestItemsCount(player, ADENA) < COST)
{
htmltext = npc.getId() + "-" + noadena + ".htm";
}
else
{
takeItems(player, ADENA, COST);
giveItems(player, crystal, 1);
htmltext = npc.getId() + "-" + ok + ".htm";
}
}
}
else
{
return htmltext;
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
return "1.htm";
}
public static void main(String[] args)
{
new EchoCrystals();
}
}