ZURSULUS L2

War with Varka Silenos

ID
606
Название
War with Varka Silenos
start_npcs_json
[31370]
npc_ids_json
[31370]
constants_json
{"KADUN":31370,"HORN":7186,"MANE":7233,"MIN_LEVEL":74,"MANE_COUNT":100}
Статус разбора
metadata_only; dynamic Java conditions/rewards retained in source; unresolved starts: []
Источник
game/data/scripts/quests/Q00606_BattleAgainstVarkaSilenos/Q00606_BattleAgainstVarkaSilenos.java

NPC квеста

IDНазваниеСтарт квестаУровень
31370Kadun Zu KetraДа70

Условия уровней: выражения из Java

private static final int MIN_LEVEL = 74;
htmltext = (player.getLevel() >= MIN_LEVEL) ? "31370-01.htm" : "31370-02.htm";

Выдача предметов, адены и опыта: выражения из Java

giveItems(player, HORN, 20);
giveItems(member, MANE, 1);

Квесты содержат динамические условия Java. Выражения выдачи включают промежуточные предметы, варианты и случайные награды; это не гарантированная награда. Константы приведены выше. Полные условия — в исходнике.

Тексты квеста

[31370-01.htm] Kadun Zu Ketra: We must destroy the Varka Silenos, our ancient rivals! Who will join our cause? "I'll fight the Varka Silenos." [31370-02.htm] Kadun Zu Ketra: Your courage is admirable, but your abilities are lacking! Come back when you've developed your skills a bit more. (This quest may only be undertaken by a character of level 74 or above.) [31370-03.htm] Kadun Zu Ketra: Attack the garrison of the Varka Silenos and kill as many of them as possible! Cut off their Shillien Manes and bring them back as proof of your valor! Bring back 100 of them and I'll give you a reward! Tejakar Ketra! [31370-04.html] Kadun Zu Ketra: My colleague, have you slaughtered our enemies, the warriors of Varka Silenos? Did you hear their pitiful cries of defeat? "I will come back after killing more enemies." "I brought 100 manes for a start." "I want to quit." [31370-05.html] Kadun Zu Ketra: Wipe out the enemy! Don't let any Varka Silenos survive! Kill them all! [31370-06.html] Kadun Zu Ketra: The fight must go on! Victory is ours! [31370-07.html] Kadun Zu Ketra: Excellent! Today's victory will always be remembered! Oh, brave warrior! You'll be well-rewarded for your valor! At one time, this Buffalo horn was only given to the bravest soldiers of our tribe. It's quite valuable! You could trade it for something you really need! "I want to go back to the battlefield." "I have more manes." "I want to quit." [31370-08.html] Kadun Zu Ketra: Didn't I ask for at least 100 Shillien Manes? Return to the battlefield now! [31370-09.html] Kadun Zu Ketra: Even the most invincible warrior should take a break once in a while! You've done well! Come back when you're rested!
Исходник условий и наград (Java)
/*
 * This file is part of the L2J Mobius project.
 * 
 * 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 <http://www.gnu.org/licenses/>.
 */
package quests.Q00606_BattleAgainstVarkaSilenos;

import java.util.HashMap;
import java.util.Map;

import org.l2jmobius.gameserver.entity.actor.Npc;
import org.l2jmobius.gameserver.entity.actor.Player;
import org.l2jmobius.gameserver.mechanics.script.Quest;
import org.l2jmobius.gameserver.mechanics.script.QuestSound;
import org.l2jmobius.gameserver.mechanics.script.QuestState;
import org.l2jmobius.gameserver.mechanics.script.State;

/**
 * Battle against Varka Silenos (606)
 * @author malyelfik
 */
public class Q00606_BattleAgainstVarkaSilenos extends Quest
{
	// NPC
	private static final int KADUN = 31370;
	
	// Monsters
	private static final Map<Integer, Integer> MOBS = new HashMap<>();
	static
	{
		MOBS.put(21350, 500); // Varka Silenos Recruit
		MOBS.put(21353, 510); // Varka Silenos Scout
		MOBS.put(21354, 522); // Varka Silenos Hunter
		MOBS.put(21355, 519); // Varka Silenos Shaman
		MOBS.put(21357, 529); // Varka Silenos Priest
		MOBS.put(21358, 529); // Varka Silenos Warrior
		MOBS.put(21360, 539); // Varka Silenos Medium
		MOBS.put(21362, 539); // Varka Silenos Officer
		MOBS.put(21364, 558); // Varka Silenos Seer
		MOBS.put(21365, 568); // Varka Silenos Great Magus
		MOBS.put(21366, 568); // Varka Silenos General
		MOBS.put(21368, 568); // Varka Silenos Great Seer
		MOBS.put(21369, 664); // Varka's Commander
		MOBS.put(21371, 713); // Varka's Head Magus
		MOBS.put(21373, 738); // Varka's Prophet
	}
	
	// Items
	private static final int HORN = 7186;
	private static final int MANE = 7233;
	
	// Misc
	private static final int MIN_LEVEL = 74;
	private static final int MANE_COUNT = 100;
	
	public Q00606_BattleAgainstVarkaSilenos()
	{
		super(606, "War with Varka Silenos");
		addStartNpc(KADUN);
		addTalkId(KADUN);
		addKillId(MOBS.keySet());
		registerQuestItems(MANE);
	}
	
	@Override
	public String onEvent(String event, Npc npc, Player player)
	{
		final QuestState qs = getQuestState(player, false);
		if (qs == null)
		{
			return null;
		}
		
		String htmltext = event;
		switch (event)
		{
			case "31370-03.htm":
			{
				qs.startQuest();
				break;
			}
			case "31370-06.html":
			{
				break;
			}
			case "31370-07.html":
			{
				if (getQuestItemsCount(player, MANE) < MANE_COUNT)
				{
					return "31370-08.html";
				}
				
				takeItems(player, MANE, MANE_COUNT);
				giveItems(player, HORN, 20);
				break;
			}
			case "31370-09.html":
			{
				qs.exitQuest(true, true);
				break;
			}
			default:
			{
				htmltext = null;
				break;
			}
		}
		
		return htmltext;
	}
	
	@Override
	public void onKill(Npc npc, Player killer, boolean isSummon)
	{
		final Player member = getRandomPartyMember(killer, 1);
		if ((member != null) && (getRandom(1000) < MOBS.get(npc.getId())))
		{
			giveItems(member, MANE, 1);
			playSound(member, QuestSound.ITEMSOUND_QUEST_ITEMGET);
		}
	}
	
	@Override
	public String onTalk(Npc npc, Player player)
	{
		final QuestState qs = getQuestState(player, true);
		String htmltext = getNoQuestMsg(player);
		switch (qs.getState())
		{
			case State.CREATED:
			{
				htmltext = (player.getLevel() >= MIN_LEVEL) ? "31370-01.htm" : "31370-02.htm";
				break;
			}
			case State.STARTED:
			{
				htmltext = (hasQuestItems(player, MANE)) ? "31370-04.html" : "31370-05.html";
				break;
			}
		}
		
		return htmltext;
	}
}