/*
 * Copyright (C) 2005-2008 L2J_JP / 2008-2013 L2J-SFJP
 * 
 * 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 custom.DimensionalMerchants;

import com.l2jserver.gameserver.instancemanager.QuestManager;
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;

/**
 * ハントサポート交換券 境界の商人
 * @author JOJO@L2J-SFJP
 *
 * 関連ファイル:
../../../../../datapack_development/data/summon_items.csv
 */

public class DimensionalMerchants extends Quest
{
	private static final String qn = "DimensionalMerchants";
	private static final int DIMENSIONAL_MERCHANT = 32478;	//境界の商人

	private DimensionalMerchants()
	{
		super(-1, qn, "custom");
		addStartNpc(DIMENSIONAL_MERCHANT);
		addTalkId(DIMENSIONAL_MERCHANT);
		addFirstTalkId(DIMENSIONAL_MERCHANT);
	}

	@Override
	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
	{
		String htmltext = event;
		QuestState st = player.getQuestState(qn);

		if (event.matches("\\d+"))
		{
			int amuletId = Integer.parseInt(event);
			switch (amuletId)
			{
			case 13017: //ハント サポート アミュレット：ホワイト フェレット		→ 16045 ホワイト フェレット
			case 13018: //ハント サポート アミュレット：フェアリー プリンセス	→ 16046 フェアリー プリンセス
			case 13019: //ハント サポート アミュレット：ビースト ファイター		→ 16044 ビースト ファイター
			case 13020: //ハント サポート アミュレット：フォックス ウィザード	→ 16043 フォックス ウィザード
			case 13548: //トイナイト ハント サポート アミュレット				→ 16052 トイ ナイト
			case 13549: //スピリット マジシャン ハント サポート アミュレット	→ 16051 スピリット ウィザード
			case 13550: //アウル ウィザード ハント サポート アミュレット		→ 16050 アウル ウィザード
			case 13551: //タートル マスター ハント サポート アミュレット		→ 16053 タートル マスター
				//13385 ハント サポート交換券 1枚パック：イベント
				if (tryTakeItems(player, 13385, 1))
				{
					giveItems(player, amuletId, 1);
					htmltext = "32478-ok.htm";
				}
				//13384 ハント サポート交換券 3枚パック：イベント
				else if (tryTakeItems(player, 13384, 1))
				{
					giveItems(player, amuletId, 1);
					giveItems(player, 13385, 2);	//おつり
					htmltext = "32478-ok.htm";
				}
				//13274 ハント サポート交換券：7日
				//13276 ハント サポート交換券：1枚パック
				//13273 ハント サポート交換券：5時間
				else if ( tryTakeItems(player, 13274, 1)
				       || tryTakeItems(player, 13276, 1)
				       || tryTakeItems(player, 13273, 1) )
				{
					giveItems(player, amuletId, 1);
					htmltext = "32478-ok.htm";
				}
				//13275 ハント サポート交換券：3枚パック
				else if (tryTakeItems(player, 13275, 1))
				{
					giveItems(player, amuletId, 1);
					giveItems(player, 13276, 2);	//おつり
					htmltext = "32478-ok.htm";
				}
				else
					htmltext = "32478-11.htm";
				break;


			case 14061: //上級ハント サポート アミュレット：トイ ナイト				→ 16052 トイ ナイト
			case 14062: //上級ハント サポート アミュレット：スピリット マジシャン	→ 16051 スピリット ウィザード
			case 14063: //上級ハント サポート アミュレット：アウル ウィザード		→ 16050 アウル ウィザード
			case 14064: //上級ハント サポート アミュレット：タートル マスター		→ 16053 タートル マスター
				//14291 上級ハント サポート交換券 1枚パック：イベント
				//14074 上級ハント サポート交換券：イベント
				if ( tryTakeItems(player, 14291, 1)
				  || tryTakeItems(player, 14074, 1) )
				{
					giveItems(player, amuletId, 1);
					htmltext = "32478-ok.htm";
				}
				//14290 上級ハント サポート交換券 2枚パック：イベント
				else if (tryTakeItems(player, 14290, 1))
				{
					giveItems(player, amuletId, 1);
					giveItems(player, 14291, 1);	//おつり
					htmltext = "32478-ok.htm";
				}
				//14248 上級ハント サポート交換券 1枚パック
				//14065 上級ハント サポート交換券
				else if ( tryTakeItems(player, 14248, 1)
				       || tryTakeItems(player, 14065, 1) )
				{
					giveItems(player, amuletId, 1);
					htmltext = "32478-ok.htm";
				}
				//14239 上級ハント サポート交換券 2枚パック
				else if (tryTakeItems(player, 14239, 1))
				{
					giveItems(player, amuletId, 1);
					giveItems(player, 14248, 1);	//おつり
					htmltext = "32478-ok.htm";
				}
				else
					htmltext = "32478-12.htm";
				break;

			default:
				throw new RuntimeException("onAdvEvent("+event+","+npc.getName()+", "+player.getName()+")");
			}
			st.exitQuest(true);
		}
		return htmltext;
	}

	@Override
	public String onFirstTalk(L2Npc npc, L2PcInstance player)
	{
		QuestState st = player.getQuestState(qn);
		if (st == null)
		{
			Quest q = QuestManager.getInstance().getQuest(qn);
			st = q.newQuestState(player);
		}
		return "32478.htm";
	}

	private boolean tryTakeItems(L2PcInstance player, int itemId, long count)
	{
		if (getQuestItemsCount(player, itemId) >= count) {
			takeItems(player, itemId, count);
			return true;
		}
		return false;
	}

	public static void main(String[] args)
	{
		new DimensionalMerchants();
	}
}