Răsfoiți Sursa

Servitor AI for quest Test Of The Summoner (230)

Zoey76 10 ani în urmă
părinte
comite
1e69bffe7e

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

@@ -50,6 +50,7 @@ ai/npc/Rafforty/Rafforty.java
 ai/npc/Sirra/Sirra.java
 ai/npc/SubclassCertification/SubclassCertification.java
 ai/npc/Summons/MerchantGolem/GolemTrader.java
+ai/npc/Summons/Servitors/Servitors.java
 ai/npc/SupportUnitCaptain/SupportUnitCaptain.java
 ai/npc/SymbolMaker/SymbolMaker.java
 ai/npc/Teleports/CrumaTower/CrumaTower.java

+ 134 - 0
L2J_DataPack/dist/game/data/scripts/ai/npc/Summons/Servitors/Servitors.java

@@ -0,0 +1,134 @@
+/*
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package ai.npc.Summons.Servitors;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import quests.Q00230_TestOfTheSummoner.Q00230_TestOfTheSummoner;
+import ai.npc.AbstractNpcAI;
+
+import com.l2jserver.gameserver.enums.QuestSound;
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.actor.instance.L2ServitorInstance;
+import com.l2jserver.gameserver.model.events.EventType;
+import com.l2jserver.gameserver.model.events.ListenerRegisterType;
+import com.l2jserver.gameserver.model.events.annotations.Id;
+import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
+import com.l2jserver.gameserver.model.events.annotations.RegisterType;
+import com.l2jserver.gameserver.model.events.impl.character.OnCreatureKill;
+import com.l2jserver.gameserver.model.quest.QuestState;
+import com.l2jserver.gameserver.util.Util;
+
+/**
+ * Servitor AI for quest Test Of The Summoner (230).
+ * @author Zoey76
+ */
+public final class Servitors extends AbstractNpcAI
+{
+	// Quest Monster
+	private static final int PAKO_THE_CAT = 27102;
+	private static final int UNICORN_RACER = 27103;
+	private static final int SHADOW_TUREN = 27104;
+	private static final int MIMI_THE_CAT = 27105;
+	private static final int UNICORN_PHANTASM = 27106;
+	private static final int SILHOUETTE_TILFO = 27107;
+	// Items
+	private static final int CRYSTAL_OF_STARTING_1ST = 3360;
+	private static final int CRYSTAL_OF_INPROGRESS_1ST = 3361;
+	private static final int CRYSTAL_OF_DEFEAT_1ST = 3363;
+	private static final int CRYSTAL_OF_STARTING_2ND = 3365;
+	private static final int CRYSTAL_OF_INPROGRESS_2ND = 3366;
+	private static final int CRYSTAL_OF_DEFEAT_2ND = 3368;
+	private static final int CRYSTAL_OF_STARTING_3RD = 3370;
+	private static final int CRYSTAL_OF_INPROGRESS_3RD = 3371;
+	private static final int CRYSTAL_OF_DEFEAT_3RD = 3373;
+	private static final int CRYSTAL_OF_STARTING_4TH = 3375;
+	private static final int CRYSTAL_OF_INPROGRESS_4TH = 3376;
+	private static final int CRYSTAL_OF_DEFEAT_4TH = 3378;
+	private static final int CRYSTAL_OF_STARTING_5TH = 3380;
+	private static final int CRYSTAL_OF_INPROGRESS_5TH = 3381;
+	private static final int CRYSTAL_OF_DEFEAT_5TH = 3383;
+	private static final int CRYSTAL_OF_STARTING_6TH = 3385;
+	private static final int CRYSTAL_OF_INPROGRESS_6TH = 3386;
+	private static final int CRYSTAL_OF_DEFEAT_6TH = 3388;
+	
+	private static final Map<Integer, List<Integer>> MONSTERS = new HashMap<>();
+	static
+	{
+		MONSTERS.put(PAKO_THE_CAT, Arrays.asList(CRYSTAL_OF_STARTING_1ST, CRYSTAL_OF_INPROGRESS_1ST, CRYSTAL_OF_DEFEAT_1ST));
+		MONSTERS.put(UNICORN_RACER, Arrays.asList(CRYSTAL_OF_STARTING_3RD, CRYSTAL_OF_INPROGRESS_3RD, CRYSTAL_OF_DEFEAT_3RD));
+		MONSTERS.put(SHADOW_TUREN, Arrays.asList(CRYSTAL_OF_STARTING_5TH, CRYSTAL_OF_INPROGRESS_5TH, CRYSTAL_OF_DEFEAT_5TH));
+		MONSTERS.put(MIMI_THE_CAT, Arrays.asList(CRYSTAL_OF_STARTING_2ND, CRYSTAL_OF_INPROGRESS_2ND, CRYSTAL_OF_DEFEAT_2ND));
+		MONSTERS.put(UNICORN_PHANTASM, Arrays.asList(CRYSTAL_OF_STARTING_4TH, CRYSTAL_OF_INPROGRESS_4TH, CRYSTAL_OF_DEFEAT_4TH));
+		MONSTERS.put(SILHOUETTE_TILFO, Arrays.asList(CRYSTAL_OF_STARTING_6TH, CRYSTAL_OF_INPROGRESS_6TH, CRYSTAL_OF_DEFEAT_6TH));
+	}
+	
+	private Servitors()
+	{
+		super(Servitors.class.getSimpleName(), "ai/npc/Summons");
+	}
+	
+	@RegisterEvent(EventType.ON_CREATURE_KILL)
+	@RegisterType(ListenerRegisterType.NPC)
+	// @formatter:off
+	@Id({
+		// Kat the Cat
+		14111, 14112, 14113, 14114,
+		// Mew the Cat
+		14159, 14160, 14161, 14162,
+		// Boxer the Unicorn
+		14295, 14296, 14297, 14298,
+		// Mirage the Unicorn
+		14343, 14344, 14345, 14346,
+		// Shadow
+		14479, 14480, 14481, 14482,
+		// Silhouette
+		14527, 14528, 14529, 14530
+	})
+	// @formatter:on
+	public void onCreatureKill(OnCreatureKill event)
+	{
+		if (event.getAttacker().isNpc() && event.getTarget().isServitor() //
+			&& Util.checkIfInRange(1500, event.getAttacker(), event.getTarget(), true))
+		{
+			final L2ServitorInstance target = (L2ServitorInstance) event.getTarget();
+			final L2PcInstance master = target.getOwner();
+			final QuestState qs = master.getQuestState(Q00230_TestOfTheSummoner.class.getSimpleName());
+			
+			if ((qs != null) && hasQuestItems(master, CRYSTAL_OF_INPROGRESS_3RD))
+			{
+				final L2Npc killer = (L2Npc) event.getAttacker();
+				final List<Integer> items = MONSTERS.get(killer.getId());
+				giveItems(master, items.get(2), 1); // Crystal of Defeat
+				playSound(master, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+				takeItems(master, items.get(1), -1); // Crystal of Inprogress
+				takeItems(master, items.get(0), -1); // Crystal of Starting
+			}
+		}
+	}
+	
+	public static void main(String[] args)
+	{
+		new Servitors();
+	}
+}