Преглед на файлове

BETA: Quest 453 Not Strong Enough Alone by malyelfik

Rumen Nikiforov преди 13 години
родител
ревизия
eddb9476fd
променени са 16 файла, в които са добавени 351 реда и са изтрити 0 реда
  1. 1 0
      L2J_DataPack_BETA/dist/game/data/scripts.cfg
  2. 5 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-01.htm
  3. 5 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-02.htm
  4. 4 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-03.html
  5. 5 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-04.html
  6. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-05.htm
  7. 7 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-06.htm
  8. 5 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-07.html
  9. 6 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-08.html
  10. 5 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-09.html
  11. 7 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-10.html
  12. 4 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-11.html
  13. 4 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-12.html
  14. 4 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-13.html
  15. 3 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-14.html
  16. 280 0
      L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/Q453_NotStrongEnoughAlone.java

+ 1 - 0
L2J_DataPack_BETA/dist/game/data/scripts.cfg

@@ -579,6 +579,7 @@ quests/432_BirthdayPartySong/__init__.py
 quests/450_GraveRobberMemberRescue/__init__.py
 quests/451_LuciensAltar/__init__.py
 quests/Q452_FindingtheLostSoldiers/Q452_FindingtheLostSoldiers.java
+quests/Q453_NotStrongEnoughAlone/Q453_NotStrongEnoughAlone.java
 quests/Q461_RumbleInTheBase/Q461_RumbleInTheBase.java
 quests/Q463_IMustBeaGenius/Q463_IMustBeaGenius.java
 quests/501_ProofOfClanAlliance/__init__.py

+ 5 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-01.htm

@@ -0,0 +1,5 @@
+<html><body>Officer Klemis:<br>
+...Hmm... This is a problem...<br>
+According to our scouts, there has been a surge in violent behavior amongst the beast clans of the Seed. While we're here trying to save our men, we can't ignore this and wait for it go get worse.<br>
+<a action="bypass -h Quest 453_NotStrongEnoughAlone 32734-04.html">&quot;Anyway I can help?&quot;</a>
+</body></html>

+ 5 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-02.htm

@@ -0,0 +1,5 @@
+<html><body>Officer Klemis:<br>
+You've earned your rest today, soldier!<br>
+The monsters won't be coming back after the lashing you gave them. I hope you come back at some point, our work here isn't done yet.<br>
+(This quest can be completed once a day and resets at 6:30 am.)
+</body></html>

+ 4 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-03.html

@@ -0,0 +1,4 @@
+<html><body>Officer Klemis:<br>
+Hmm... you look a little soft to be here. I wouldn't send someone into the Seed if I knew for sure I'd have to bury them later.<br>
+(Only characters level 84 and above who have completed To The Seed of Annihilation can take this quest.)
+</body></html>

+ 5 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-04.html

@@ -0,0 +1,5 @@
+<html><body>Officer Klemis:<br>
+Ah, are you serious?! Well thank the gods, I could make use of a seasoned veteran like you.<br>
+The mission is quite simple: Kill the monsters that inhabit the <font color="LEVEL">Seed of Annihilation</font>. But be warned, while the terms of the mission are simple, actually completing it will not be.<br>
+<a action="bypass -h Quest 453_NotStrongEnoughAlone 32734-05.htm">&quot;Like I said, I want to help.&quot;</a>
+</body></html>

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-05.htm

@@ -0,0 +1,6 @@
+<html><body>Officer Klemis:<br>
+Alright. The Seed of Annihilation is comprised of three regions, each region with its own environment and set of properties. The monsters in each of these regions have evolved to fit those surroundings, so we've given each clan a name to distinguish them - the <font color="LEVEL">Bistakon, Reptilikon, and Cokrakon</font>.<br>
+The mission is to wipe them out one region at a time.<br>
+So, you scared, or you ready to make terrifying beasts bleed?<br>
+<a action="bypass -h Quest 453_NotStrongEnoughAlone 32734-06.htm">&quot;Kill 'em all and let the gods sort 'em out, that's what I say.&quot;</a>
+</body></html>

+ 7 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-06.htm

@@ -0,0 +1,7 @@
+<html><body>Officer Klemis:<br>
+Alright, soldier! That's what I wanted to hear.<br>
+So, which region will you cleanse first?<br>
+<a action="bypass -h Quest 453_NotStrongEnoughAlone 32734-07.html">Bistakon Region</a><br>
+<a action="bypass -h Quest 453_NotStrongEnoughAlone 32734-08.html">Reptilikon Region</a><br>
+<a action="bypass -h Quest 453_NotStrongEnoughAlone 32734-09.html">Cokrakon Region</a>
+</body></html>

+ 5 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-07.html

@@ -0,0 +1,5 @@
+<html><body>Officer Klemis:<br>
+Ah, the Bistakons... well, I know a little something about them. Here's a short brief.<br>
+The monsters of the Bistakon clans look like mammals, but don't be fooled. Their claws and teeth are unnaturally sharp and strong, and they aren't shy about using them. Also, they travel in packs, so unless you like being outnumbered, you should recruit a few friends to help.<br>
+If you can kill <font color="LEVEL">15</font> each of the <font color="LEVEL">Bgurent, Brakian, Groikan, and Treykan</font> variants, that should be enough to clear the region for a while. And with that, good luck.
+</body></html>

+ 6 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-08.html

@@ -0,0 +1,6 @@
+<html><body>Officer Klemis:<br>
+Ah, the Reptilikons. I'll brief you on them.<br>
+The monsters of the Reptilikon region are basically enormous reptilian beasts. They are just as vicious as the other beast clans, and tend to be poisonous to boot. Trust me on this - don't go alone. That said I hope it goes well.<br>
+If you can kill <font color="LEVEL">20</font> each of the <font color="LEVEL">Turtlelian, Krajian, and Tardyon</font> variants, we can declare that region safe a while.<br>
+Good hunting!
+</body></html>

+ 5 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-09.html

@@ -0,0 +1,5 @@
+<html><body>Officer Klemis:<br>
+Ah, the Cokrakon region. Alright, I'll give you a short brief of what we know about it.<br>
+The Cokrakon clans resemble birds, but believe me, they aren't hunting worms. These monsters can emit sound shockwaves that can shatter your bones, paralyze all your nerves and muscle tissue, and leave you basically unable to move quickly. If Kookaburras give you nightmares, these things will leave you unable to ever sleep again. Do yourself a favor, when you go on the hunt, bring others with you.<br>
+If you can kill <font color="LEVEL">20</font> each of the <font color="LEVEL">Kanibi, Kiriona, and Kaiona</font> variants, the region will be clear. You should get started, I wish you well.
+</body></html>

+ 7 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-10.html

@@ -0,0 +1,7 @@
+<html><body>Officer Klemis:<br>
+Tired of lazy afternoons, long naps, and good meals, eh? Haha, well thanks for volunteering.<br>
+I'll let you decide what region of the Seed you want to cleanse. There are three to choose from:<br>
+<a action="bypass -h Quest 453_NotStrongEnoughAlone 32734-07.html">Bistakon Region</a><br>
+<a action="bypass -h Quest 453_NotStrongEnoughAlone 32734-08.html">Reptilikon Region</a><br>
+<a action="bypass -h Quest 453_NotStrongEnoughAlone 32734-09.html">Cokrakon Region</a>
+</body></html>

+ 4 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-11.html

@@ -0,0 +1,4 @@
+<html><body>Officer Klemis:<br>
+The monsters of the Bistakon clans look like mammals, but don't be fooled. Their claws and teeth are unnaturally sharp and strong, and they aren't shy about using them. Also, they travel in packs, so unless you like being outnumbered, you should recruit a few friends to help.<br>
+If you can kill <font color="LEVEL">15</font> each of the <font color="LEVEL">Bgurent, Brakian, Groikan, and Treykan</font> variants, that should be enough to clear the region for a while. And with that, good luck.
+</body></html>

+ 4 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-12.html

@@ -0,0 +1,4 @@
+<html><body>Officer Klemis:<br>
+The monsters of the Reptilikon region are basically enormous reptilian beasts. They are just as vicious as the other beast clans, and tend to be poisonous to boot. Trust me on this - don't go alone. That said I hope it goes well.<br>
+If you can kill <font color="LEVEL">20</font> each of the <font color="LEVEL">Turtlelian, Krajian, and Tardyon</font> variants, we can declare that region safe a while.
+</body></html>

+ 4 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-13.html

@@ -0,0 +1,4 @@
+<html><body>Officer Klemis:<br>
+The Cokrakon clans resemble birds, but believe me, they aren't hunting worms. These monsters can emit sound shockwaves that can shatter your bones, paralyze all your nerves and muscle tissue, and leave you basically unable to move quickly. If Kookaburras give you nightmares, these things will leave you unable to ever sleep again. Do yourself a favor, when you go on the hunt, bring others with you.<br>
+If you can kill <font color="LEVEL">20</font> each of the <font color="LEVEL">Kanibi, Kiriona, and Kaiona</font> variants, the region will be clear. You should get started. I wish you well.
+</body></html>

+ 3 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/32734-14.html

@@ -0,0 +1,3 @@
+<html><body>Officer Klemis:<br>
+Good job soldier! Another day earning that pay. Thanks for your help, couldn't have done it without you. Here take this. Take it, you've earned it. And if you're ever here again, I could always use your help.
+</body></html>

+ 280 - 0
L2J_DataPack_BETA/dist/game/data/scripts/quests/Q453_NotStrongEnoughAlone/Q453_NotStrongEnoughAlone.java

@@ -0,0 +1,280 @@
+/*
+ * 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.Q453_NotStrongEnoughAlone;
+
+import java.util.Calendar;
+
+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.model.quest.State;
+import com.l2jserver.gameserver.util.Util;
+import com.l2jserver.util.Rnd;
+
+/**
+ * Not Strong Enough Alone (453)
+ * @author malyelfik
+ */
+public class Q453_NotStrongEnoughAlone extends Quest
+{
+	private static final String qn = "453_NotStrongEnoughAlone";
+	// NPC
+	private static final int Klemis = 32734;
+	private static final int[] Monsters1 =
+	{
+		22746, 22747, 22748, 22749, 22750, 22751, 22752, 22753
+	};
+	private static final int[] Monsters2 =
+	{
+		22754, 22755, 22756, 22757, 22758, 22759
+	};
+	private static final int[] Monsters3 =
+	{
+		22760, 22761, 22762, 22763, 22764, 22765
+	};
+	
+	// Reward
+	private static final int[][] Reward =
+	{
+		{
+			15815, 15816, 15817, 15818, 15819, 15820, 15821, 15822, 15823, 15824, 15825
+		},
+		{
+			15634, 15635, 15636, 15637, 15638, 15639, 15640, 15641, 15642, 15643, 15644
+		}
+	};
+	
+	// Restart Time
+	private static final int ResetHour = 6;
+	private static final int ResetMin = 30;
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		String htmltext = event;
+		QuestState st = player.getQuestState(qn);
+		
+		if (st == null)
+			return htmltext;
+		
+		if (event.equalsIgnoreCase("32734-06.htm"))
+		{
+			st.set("cond", "1");
+			st.setState(State.STARTED);
+			st.playSound("ItemSound.quest_accept");
+		}
+		else if (event.equalsIgnoreCase("32734-07.html"))
+		{
+			st.set("cond", "2");
+			st.playSound("ItemSound.quest_middle");
+		}
+		else if (event.equalsIgnoreCase("32734-08.html"))
+		{
+			st.set("cond", "3");
+			st.playSound("ItemSound.quest_middle");
+		}
+		else if (event.equalsIgnoreCase("32734-09.html"))
+		{
+			st.set("cond", "4");
+			st.playSound("ItemSound.quest_middle");
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onTalk(L2Npc npc, L2PcInstance player)
+	{
+		String htmltext = getNoQuestMsg(player);
+		QuestState st = player.getQuestState(qn);
+		QuestState prev = player.getQuestState("10282_ToTheSeedOfAnnihilation");
+		if (st == null)
+			return htmltext;
+		
+		switch (st.getState())
+		{
+			case State.CREATED:
+				if (player.getLevel() >= 84 && prev != null && prev.getState() == State.COMPLETED)
+					htmltext = "32734-01.htm";
+				else
+					htmltext = "32734-03.html";
+				break;
+			case State.STARTED:
+				if (st.getInt("cond") == 1)
+					htmltext = "32734-10.html";
+				else if (st.getInt("cond") == 2)
+					htmltext = "32734-11.html";
+				else if (st.getInt("cond") == 3)
+					htmltext = "32734-12.html";
+				else if (st.getInt("cond") == 4)
+					htmltext = "32734-13.html";
+				else if (st.getInt("cond") == 5)
+				{
+					if (Rnd.nextBoolean())
+						st.giveItems(Reward[0][Rnd.get(Reward[0].length)], 1);
+					else
+						st.giveItems(Reward[1][Rnd.get(Reward[1].length)], 1);
+					st.exitQuest(false);
+					st.playSound("ItemSound.quest_finish");
+					htmltext = "32734-14.html";
+					
+					Calendar reset = Calendar.getInstance();
+					reset.set(Calendar.MINUTE, ResetMin);
+					if (reset.get(Calendar.HOUR_OF_DAY) >= ResetHour)
+						reset.add(Calendar.DATE, 1);
+					reset.set(Calendar.HOUR_OF_DAY, ResetHour);
+					st.set("reset", String.valueOf(reset.getTimeInMillis()));
+				}
+				break;
+			case State.COMPLETED:
+				if (Long.parseLong(st.get("reset")) > System.currentTimeMillis())
+					htmltext = "32734-02.htm";
+				else
+				{
+					st.setState(State.CREATED);
+					if (player.getLevel() >= 84 && prev != null && prev.getState() == State.COMPLETED)
+						htmltext = "32734-01.htm";
+					else
+						htmltext = "32734-03.html";
+				}
+				break;
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
+	{
+		if (player.getParty() != null)
+		{
+			for (L2PcInstance member : player.getParty().getPartyMembers())
+			{
+				increaseKill(member, npc);
+			}
+		}
+		else
+		{
+			increaseKill(player, npc);
+		}
+		return null;
+	}
+	
+	private static void increaseKill(L2PcInstance player, L2Npc npc)
+	{
+		QuestState st = player.getQuestState(qn);
+		
+		if (st == null)
+			return;
+		
+		int npcId = npc.getNpcId();
+		
+		if (Util.checkIfInRange(1500, npc, player, false))
+		{
+			if (Util.contains(Monsters1, npcId) && st.getInt("cond") == 2)
+			{
+				if (npcId == Monsters1[4])
+					npcId = Monsters1[0];
+				else if (npcId == Monsters1[5])
+					npcId = Monsters1[1];
+				else if (npcId == Monsters1[6])
+					npcId = Monsters1[2];
+				else if (npcId == Monsters1[7])
+					npcId = Monsters1[3];
+				
+				int i = st.getInt(String.valueOf(npcId));
+				if (i < 15)
+				{
+					st.set(String.valueOf(npcId), String.valueOf(i + 1));
+					st.playSound("ItemSound.quest_itemget");
+				}
+				
+				checkProgress(st, 15, Monsters1[0], Monsters1[1], Monsters1[2], Monsters1[3]);
+			}
+			else if (Util.contains(Monsters2, npcId) && st.getInt("cond") == 3)
+			{
+				if (npcId == Monsters2[3])
+					npcId = Monsters2[0];
+				else if (npcId == Monsters2[4])
+					npcId = Monsters2[1];
+				else if (npcId == Monsters2[5])
+					npcId = Monsters2[2];
+				
+				int i = st.getInt(String.valueOf(npcId));
+				if (i < 20)
+				{
+					st.set(String.valueOf(npcId), String.valueOf(i + 1));
+					st.playSound("ItemSound.quest_itemget");
+				}
+				
+				checkProgress(st, 20, Monsters2[0], Monsters2[1], Monsters2[2]);
+			}
+			else if (Util.contains(Monsters3, npcId) && st.getInt("cond") == 4)
+			{
+				if (npcId == Monsters3[3])
+					npcId = Monsters3[0];
+				else if (npcId == Monsters3[4])
+					npcId = Monsters3[1];
+				else if (npcId == Monsters3[5])
+					npcId = Monsters3[2];
+				
+				int i = st.getInt(String.valueOf(npcId));
+				if (i < 20)
+				{
+					st.set(String.valueOf(npcId), String.valueOf(i + 1));
+					st.playSound("ItemSound.quest_itemget");
+				}
+				
+				checkProgress(st, 20, Monsters3[0], Monsters3[1], Monsters3[2]);
+			}
+		}
+	}
+	
+	private static void checkProgress(QuestState st, int count, int... mobs)
+	{
+		for (int mob : mobs)
+		{
+			if (st.getInt(String.valueOf(mob)) < count)
+				return;
+		}
+		
+		st.set("cond", "5");
+		st.playSound("ItemSound.quest_middle");
+	}
+	
+	public Q453_NotStrongEnoughAlone(int questId, String name, String descr)
+	{
+		super(questId, name, descr);
+		addStartNpc(Klemis);
+		addTalkId(Klemis);
+		
+		for (int i : Monsters1)
+		{
+			addKillId(i);
+		}
+		for (int i : Monsters2)
+		{
+			addKillId(i);
+		}
+		for (int i : Monsters3)
+		{
+			addKillId(i);
+		}
+	}
+	
+	public static void main(String[] args)
+	{
+		new Q453_NotStrongEnoughAlone(453, qn, "Not Strong Enought Alone");
+	}
+}