/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
package custom.EchoCrystals;
import java.util.Map;
import javolution.util.FastMap;
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;
/**
* @authors DrLecter (python), Plim (java)
* @notes Formerly based on Elektra's script
*/
public class EchoCrystals extends Quest
{
private static final String qn = "EchoCrystals";
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 FastMap();
private class ScoreData
{
private int crystalId;
private String okMsg;
private String noAdenaMsg;
private 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;
}
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = "";
QuestState st = player.getQuestState(qn);
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 (!st.hasQuestItems(score))
{
htmltext = npc.getNpcId() + "-" + noscore + ".htm";
}
else if (st.getQuestItemsCount(ADENA) < COST)
{
htmltext = npc.getNpcId() + "-" + noadena + ".htm";
}
else
{
st.takeItems(ADENA, COST);
st.giveItems(crystal, 1);
htmltext = npc.getNpcId() + "-" + ok + ".htm";
}
}
}
else
return htmltext;
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
return "1.htm";
}
public EchoCrystals(int questId, String name, String descr)
{
super(questId, name, descr);
// 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);
}
}
public static void main(String[] args)
{
new EchoCrystals(-1, qn, "custom");
}
}