Skip to content

Instantly share code, notes, and snippets.

@nonom
Last active June 28, 2017 23:37
Show Gist options
  • Save nonom/a089e1e461a0cf99990f to your computer and use it in GitHub Desktop.
Save nonom/a089e1e461a0cf99990f to your computer and use it in GitHub Desktop.
Index: dist/game/data/scripts.cfg
===================================================================
--- dist/game/data/scripts.cfg (revision 9911)
+++ dist/game/data/scripts.cfg (working copy)
@@ -33,6 +33,7 @@
ai/npc/Jinia/Jinia.java
ai/npc/KetraOrcSupport/KetraOrcSupport.java
ai/npc/MercenaryCaptain/MercenaryCaptain.java
+ai/npc/Minigame/Minigame.java
ai/npc/MonumentOfHeroes/MonumentOfHeroes.java
ai/npc/Nottingale/Nottingale.java
ai/npc/NpcBuffers/BirthdayCake.java
Index: dist/game/data/html/admin/teleports/WorldAreas/RuneTerritory.htm
===================================================================
--- dist/game/data/html/admin/teleports/WorldAreas/RuneTerritory.htm (revision 9911)
+++ dist/game/data/html/admin/teleports/WorldAreas/RuneTerritory.htm (working copy)
@@ -15,6 +15,9 @@
<button action="bypass -h admin_move_to 106414 -87799 -2949" value="Monastery of Silence" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
<button action="bypass -h admin_move_to 35630 -49748 -760" value="The Pagan Temple" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
<button action="bypass -h admin_move_to 88969 -45307 -2112" value="Stakato Nest" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br>
+<font color="LEVEL">Monastery of Silence</font><br1>
+<button action="bypass -h admin_move_to 110685 -82031 -1584" value="Minigame Lower Room" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
+<button action="bypass -h admin_move_to 114763 -71073 -549" value="Minigame Upper Room" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br>
<font color="LEVEL">Town</font><br1>
<button action="bypass -h admin_move_to 43835 -47749 -792" value="Rune Township" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br>
<font color="LEVEL">Castle</font><br1>
Index: dist/game/data/scripts/ai/npc/Minigame/32758-02.html
===================================================================
--- dist/game/data/scripts/ai/npc/Minigame/32758-02.html (revision 0)
+++ dist/game/data/scripts/ai/npc/Minigame/32758-02.html (working copy)
@@ -0,0 +1,4 @@
+<html><body>Treasure seeker Sumiel:<br>
+Is it hard? Yeah, true. Looking at the torch, we can do it about two more times. You using the lighting skill on the lighted torch?<br>
+<a action="bypass -h Quest Minigame restart">Restart Mini Game</a>
+</body></html>
Index: dist/game/data/scripts/ai/npc/Minigame/32758-03.html
===================================================================
--- dist/game/data/scripts/ai/npc/Minigame/32758-03.html (revision 0)
+++ dist/game/data/scripts/ai/npc/Minigame/32758-03.html (working copy)
@@ -0,0 +1,4 @@
+<html><body>Treasure seeker Sumiel:<br>
+Last time. Concentrate on the treasure to appear. We can't try if the torch is all burnt.<br>
+<a action="bypass -h Quest Minigame restart">Restart Mini Game</a>
+</body></html>
Index: dist/game/data/scripts/ai/npc/Minigame/32758-04.html
===================================================================
--- dist/game/data/scripts/ai/npc/Minigame/32758-04.html (revision 0)
+++ dist/game/data/scripts/ai/npc/Minigame/32758-04.html (working copy)
@@ -0,0 +1,3 @@
+<html><body>Treasure Seeker Sumiel:<br>
+Now's not the time. There's another adventurer trying. Wait your turn! Haha!
+</body></html>
Index: dist/game/data/scripts/ai/npc/Minigame/32758-05.html
===================================================================
--- dist/game/data/scripts/ai/npc/Minigame/32758-05.html (revision 0)
+++ dist/game/data/scripts/ai/npc/Minigame/32758-05.html (working copy)
@@ -0,0 +1,3 @@
+<html><body>Treasure Seeker Sumiel:<br>
+No, there's none. You have to light it the moment the furnace is turned on.
+</body></html>
Index: dist/game/data/scripts/ai/npc/Minigame/32758-06.html
===================================================================
--- dist/game/data/scripts/ai/npc/Minigame/32758-06.html (revision 0)
+++ dist/game/data/scripts/ai/npc/Minigame/32758-06.html (working copy)
@@ -0,0 +1,5 @@
+<html><body>Treasure seeker Sumiel:<br>
+Is that so? If you say so... so what else can I do for you?<br>
+<a action="bypass -h Quest Minigame teleport1">Teleport outside the door.</a><br>
+<a action="bypass -h Quest Minigame teleport2">Teleport to Greymore</a>
+</body></html>
Index: dist/game/data/scripts/ai/npc/Minigame/32758-07.html
===================================================================
--- dist/game/data/scripts/ai/npc/Minigame/32758-07.html (revision 0)
+++ dist/game/data/scripts/ai/npc/Minigame/32758-07.html (working copy)
@@ -0,0 +1,3 @@
+<html><body>Treasure seeker Sumiel:<br>
+Ha, ha, you're funny. Since you started already, light up the rest.
+</body></html>
Index: dist/game/data/scripts/ai/npc/Minigame/32758-08.html
===================================================================
--- dist/game/data/scripts/ai/npc/Minigame/32758-08.html (revision 0)
+++ dist/game/data/scripts/ai/npc/Minigame/32758-08.html (working copy)
@@ -0,0 +1,3 @@
+<html><body>Treasure seeker Sumiel:<br>
+Ekoo... wait. I'm not ready yet. I need to clean up, this equipment has fingerprints all over it! Give me <font color="LEVEL">3 minutes</font>, I'll be ready then.<br>
+</body></html>
Index: dist/game/data/scripts/ai/npc/Minigame/32758.html
===================================================================
--- dist/game/data/scripts/ai/npc/Minigame/32758.html (revision 0)
+++ dist/game/data/scripts/ai/npc/Minigame/32758.html (working copy)
@@ -0,0 +1,5 @@
+<html><body>Treasure seeker Sumiel:<br>
+Success! You've found this room, wandered around this Monastery of Silence for a long time, got lost, got hungry, found your way here now, haven't you? Trust me when I say I don't know where the treasure is. I'd be long gone if I did. But I've had time to look, and I think there is a connection in the turning order of this furnace... I think we can solve the puzzle if we have an item to light. Do you want to give it a try? Tricky part is this, we have to light it within a certain time...<br>
+<a action="bypass -h Quest Minigame restart">Say you will try.</a><br>
+<a action="bypass -h Quest Minigame 32758-06.html">Say you don't have time for this jibber jabber, so you want to get out.</a><br>
+<a action="bypass -h npc_%objectId%_Quest">Quest</a></body></html>
Index: dist/game/data/scripts/ai/npc/Minigame/Minigame.java
===================================================================
--- dist/game/data/scripts/ai/npc/Minigame/Minigame.java (revision 0)
+++ dist/game/data/scripts/ai/npc/Minigame/Minigame.java (working copy)
@@ -0,0 +1,515 @@
+/*
+ * Copyright (C) 2004-2013 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.Minigame;
+
+import ai.npc.AbstractNpcAI;
+
+import com.l2jserver.gameserver.datatables.SpawnTable;
+import com.l2jserver.gameserver.model.L2Object;
+import com.l2jserver.gameserver.model.L2Spawn;
+import com.l2jserver.gameserver.model.Location;
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.holders.SkillHolder;
+import com.l2jserver.gameserver.network.NpcStringId;
+import com.l2jserver.gameserver.network.clientpackets.Say2;
+import com.l2jserver.gameserver.scripting.scriptengine.events.SkillUseEvent;
+import com.l2jserver.gameserver.util.Util;
+
+/**
+ * Monastery Minigame AI.
+ * @author nonom
+ */
+public class Minigame extends AbstractNpcAI
+{
+ private static final int SUMIEL = 32758;
+ private static final int BURNER = 18913;
+ private static final int TREASURE_BOX = 18911;
+
+ private static final int UNLIT_TORCHLIGHT = 15540;
+ private static final int TORCHLIGHT = 15485;
+
+ private static final int SKILL_TORCH_LIGHT = 9059;
+ private static final SkillHolder TRIGGER_MIRAGE = new SkillHolder(5144, 1);
+
+ private static final Location TELEPORT1 = new Location(113187, -85388, -3424, 0);
+ private static final Location TELEPORT2 = new Location(118833, -80589, -2688, 0);
+
+ private static final int TIMER_INTERVAL = 3;
+ private static final int MAX_ATTEMPTS = 3;
+
+ private final MinigameRoom _rooms[] = new MinigameRoom[2];
+
+ public Minigame(String name, String descr)
+ {
+ super(name, descr);
+ addStartNpc(SUMIEL);
+ addFirstTalkId(SUMIEL);
+ addTalkId(SUMIEL);
+ addSpawnId(TREASURE_BOX);
+
+ int i = 0;
+ for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(SUMIEL))
+ {
+ _rooms[i++] = initRoom(spawn.getLastSpawn());
+ }
+ }
+
+ @Override
+ public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+ {
+ final MinigameRoom room = getRoomByManager(npc);
+ switch (event)
+ {
+ case "restart":
+ {
+ final boolean miniGameStarted = room.getStarted();
+ if (!miniGameStarted && !hasQuestItems(player, UNLIT_TORCHLIGHT))
+ {
+ return "32758-05.html";
+ }
+ else if ((npc.getTarget() != null) && (npc.getTarget() != player))
+ {
+ return "32758-04.html";
+ }
+
+ takeItems(player, UNLIT_TORCHLIGHT, 1);
+ giveItems(player, TORCHLIGHT, 1);
+ broadcastNpcSay(npc, Say2.NPC_ALL, NpcStringId.THE_FURNACE_WILL_GO_OUT_WATCH_AND_SEE);
+
+ room.getManager().setTarget(player);
+ room.setParticipant(player);
+ room.setStarted(true);
+ for (int i = 0; i < 9; i++)
+ {
+ room.getOrder()[i] = getRandom(8);
+ }
+ cancelQuestTimer("hurry_up", npc, null);
+ cancelQuestTimer("hurry_up2", npc, null);
+ cancelQuestTimer("expire", npc, null);
+
+ startQuestTimer("hurry_up", 120000, npc, null);
+ startQuestTimer("expire", 190000, npc, null);
+ startQuestTimer("start", 1000, npc, null);
+ return null;
+ }
+ case "off":
+ {
+ if (npc.getId() == BURNER)
+ {
+ npc.setDisplayEffect(2);
+ npc.setIsRunning(false);
+ }
+ else
+ {
+ for (L2Npc burner : room.getBurners())
+ {
+ burner.setDisplayEffect(2);
+ burner.setIsRunning(false);
+ }
+ }
+ break;
+ }
+ case "teleport1":
+ {
+ player.teleToLocation(TELEPORT1, 0);
+ break;
+ }
+ case "teleport2":
+ {
+ player.teleToLocation(TELEPORT2, 0);
+ break;
+ }
+ case "start":
+ {
+ room.burnThemAll();
+ startQuestTimer("off", 2000, npc, null); // It should be null to stop burnthemAll 2s after
+ startQuestTimer("timer", 4000, npc, null);
+ break;
+ }
+ case "timer":
+ {
+ if (room.getCurrentPot() < 9)
+ {
+ L2Npc b = room.getBurners()[room.getOrder()[room.getCurrentPot()]];
+ b.setDisplayEffect(1);
+ b.setIsRunning(false);
+ startQuestTimer("off", 2000, b, null); // Stopping burning each pot 2s after
+ startQuestTimer("timer", TIMER_INTERVAL * 1000, npc, null);
+ room.setCurrentPot(room.getCurrentPot() + 1);
+ }
+ else
+ {
+ broadcastNpcSay(room.getManager(), Say2.NPC_ALL, NpcStringId.NOW_LIGHT_THE_FURNACES_FIRE);
+ room.burnThemAll();
+ startQuestTimer("off", 2000, npc, null);
+ addSkillUseNotify(room.getParticipant());
+ room.setCurrentPot(0);
+ }
+ break;
+ }
+ case "hurry_up":
+ {
+ broadcastNpcSay(npc, Say2.NPC_ALL, NpcStringId.THERES_ABOUT_1_MINUTE_LEFT);
+ startQuestTimer("hurry_up2", 60000, npc, null);
+ break;
+ }
+ case "hurry_up2":
+ {
+ broadcastNpcSay(npc, Say2.NPC_ALL, NpcStringId.THERES_JUST_10_SECONDS_LEFT);
+ startQuestTimer("expire", 10000, npc, null);
+ break;
+ }
+ case "expire":
+ {
+ broadcastNpcSay(npc, Say2.NPC_ALL, NpcStringId.TIME_IS_UP_AND_YOU_HAVE_FAILED_ANY_MORE_WILL_BE_DIFFICULT);
+ }
+ case "end":
+ {
+ cancelQuestTimer("expire", npc, null);
+ cancelQuestTimer("hurry_up", npc, null);
+ cancelQuestTimer("hurry_up2", npc, null);
+ room.getManager().setTarget(null);
+ room.setParticipant(null);
+ room.setStarted(false);
+ room.setAttemptNumber(1);
+ room.setCurrentPot(0);
+ break;
+ }
+ case "afterthat":
+ {
+ npc.deleteMe();
+ break;
+ }
+ }
+ return event;
+ }
+
+ @Override
+ public String onFirstTalk(L2Npc npc, L2PcInstance talker)
+ {
+ String htmltext = null;
+ final MinigameRoom room = getRoomByManager(npc);
+ final boolean miniGameStarted = room.getStarted();
+
+ if (npc.getTarget() == null)
+ {
+ htmltext = (miniGameStarted ? "32758-08.html" : "32758.html");
+ }
+ else if (npc.getTarget() == talker)
+ {
+ if (miniGameStarted)
+ {
+ htmltext = "32758-07.html";
+ }
+ else
+ {
+ int attemptNumber = room.getAttemptNumber();
+
+ if (attemptNumber == 2)
+ {
+ htmltext = "32758-02.html";
+ }
+ else if (attemptNumber == 3)
+ {
+ htmltext = "32758-03.html";
+ }
+ }
+ }
+ else
+ {
+ htmltext = "32758-04.html";
+ }
+
+ return htmltext;
+ }
+
+ @Override
+ public String onSpawn(L2Npc npc)
+ {
+ npc.disableCoreAI(true);
+ startQuestTimer("afterthat", 180000, npc, null);
+ return super.onSpawn(npc);
+ }
+
+ @Override
+ public boolean onSkillUse(SkillUseEvent event)
+ {
+ final MinigameRoom room = getRoomByParticipant((L2PcInstance) event.getCaster());
+ final boolean miniGameStarted = room.getStarted();
+ if (miniGameStarted && (event.getSkill().getId() == SKILL_TORCH_LIGHT))
+ {
+ for (L2Object obj : event.getTargets())
+ {
+ if ((obj != null) && obj.isNpc())
+ {
+ L2Npc npc = (L2Npc) obj;
+ if (npc.getId() == BURNER)
+ {
+ npc.doCast(TRIGGER_MIRAGE.getSkill());
+ final int pos = room.getBurnerPos(npc);
+ if (pos == room.getOrder()[room.getCurrentPot()])
+ {
+ if (room.getCurrentPot() < 8)
+ {
+ npc.setDisplayEffect(1);
+ npc.setIsRunning(false);
+ startQuestTimer("off", 2000, npc, null);
+ room.setCurrentPot(room.getCurrentPot() + 1);
+ }
+ else
+ {
+ addSpawn(TREASURE_BOX, room.getParticipant().getLocation(), true, 0);
+ broadcastNpcSay(room.getManager(), Say2.NPC_ALL, NpcStringId.OH_YOUVE_SUCCEEDED);
+ room.setCurrentPot(0);
+ room.burnThemAll();
+ startQuestTimer("off", 2000, room.getManager(), null);
+ startQuestTimer("end", 4000, room.getManager(), null);
+ }
+ }
+ else
+ {
+ if (room.getAttemptNumber() == MAX_ATTEMPTS)
+ {
+ broadcastNpcSay(room.getManager(), Say2.NPC_ALL, NpcStringId.AH_IVE_FAILED_GOING_FURTHER_WILL_BE_DIFFICULT);
+ room.burnThemAll();
+ startQuestTimer("off", 2000, room.getManager(), null);
+ removeSkillUseNotify(room.getParticipant());
+ startQuestTimer("end", 4000, room.getManager(), null);
+ }
+ else if (room.getAttemptNumber() < MAX_ATTEMPTS)
+ {
+ broadcastNpcSay(room.getManager(), Say2.NPC_ALL, NpcStringId.AH_IS_THIS_FAILURE_BUT_IT_LOOKS_LIKE_I_CAN_KEEP_GOING);
+ room.burnThemAll();
+ startQuestTimer("off", 2000, room.getManager(), null);
+ room.setAttemptNumber(room.getAttemptNumber() + 1);
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Create and initialize a MinigameRoom<br>
+ * It's loading the nearby pots around the game instructor NPC.<br>
+ * TODO: Load the pot_number value from npc ai_params.
+ * @param manager the NPC instructor
+ * @return MinigameRoom
+ */
+ private MinigameRoom initRoom(L2Npc manager)
+ {
+ final L2Npc[] burners = new L2Npc[9];
+ L2Npc lastSpawn;
+ int potNumber = 0;
+
+ for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(BURNER))
+ {
+ lastSpawn = spawn.getLastSpawn();
+ if ((potNumber <= 8) && Util.checkIfInRange(1000, manager, lastSpawn, false))
+ {
+ lastSpawn.setAutoAttackable(true);
+ burners[potNumber++] = lastSpawn;
+ }
+ }
+ return new MinigameRoom(burners, manager);
+ }
+
+ /**
+ * Retrieve a MinigameRoom by game instructor
+ * @param manager the NPC instructor
+ * @return MinigameRoom
+ */
+ private MinigameRoom getRoomByManager(L2Npc manager)
+ {
+ return (_rooms[0].getManager() == manager) ? _rooms[0] : _rooms[1];
+ }
+
+ /**
+ * Retrieve a MinigameRoom by participant
+ * @param participant the L2PcInstance participating
+ * @return MinigameRoom
+ */
+ private MinigameRoom getRoomByParticipant(L2PcInstance participant)
+ {
+ return (_rooms[0].getParticipant() == participant) ? _rooms[0] : _rooms[1];
+ }
+
+ /**
+ * An object that holds the participant, manager, burning order<br>
+ * and game status for each secret room into Monastery of Silence.
+ */
+ private class MinigameRoom
+ {
+ private final L2Npc[] _burners;
+ private final L2Npc _manager;
+ private L2PcInstance _participant;
+ private boolean _started;
+ private int _attemptNumber;
+ private int _currentPot;
+ private final int _order[];
+
+ public MinigameRoom(L2Npc[] burners, L2Npc manager)
+ {
+ _burners = burners;
+ _manager = manager;
+ _participant = null;
+ _started = false;
+ _attemptNumber = 1;
+ _currentPot = 0;
+ _order = new int[9];
+ }
+
+ /**
+ * Retrieve the burner position into the array
+ * @param npc the L2Npc burner
+ * @return the array index
+ */
+ public int getBurnerPos(L2Npc npc)
+ {
+ for (int i = 0; i < 9; i++)
+ {
+ if (npc.equals(_burners[i]))
+ {
+ return i;
+ }
+ }
+ return 0;
+ }
+
+ /**
+ * Burn all the pots into the room
+ */
+ public void burnThemAll()
+ {
+ for (L2Npc burner : _burners)
+ {
+ burner.setDisplayEffect(1);
+ burner.setIsRunning(false);
+ }
+ }
+
+ /**
+ * Retrieve a list of burners
+ * @return An array of L2Npcs
+ */
+ public L2Npc[] getBurners()
+ {
+ return _burners;
+ }
+
+ /**
+ * Retrieve the current game manager
+ * @return The L2Npc game instructor
+ */
+ public L2Npc getManager()
+ {
+ return _manager;
+ }
+
+ /**
+ * Retrieve the current game participant
+ * @return The L2PcInstance who is participating
+ */
+ public L2PcInstance getParticipant()
+ {
+ return _participant;
+ }
+
+ /**
+ * Set the current participant
+ * @param participant The L2PcInstance participating
+ */
+ public void setParticipant(L2PcInstance participant)
+ {
+ _participant = participant;
+ }
+
+ /**
+ * Retrieves the MinigameRoom status
+ * @return {@code true} if the game is started, {@code false} otherwise
+ */
+ public boolean getStarted()
+ {
+ return _started;
+ }
+
+ /**
+ * Set the MinigameRoom status
+ * @param started The game status {@code true} if the game is started, {@code false} otherwise
+ */
+ public void setStarted(boolean started)
+ {
+ _started = started;
+ }
+
+ /**
+ * Retrieve the current burner position
+ * @return The array index
+ */
+ public int getCurrentPot()
+ {
+ return _currentPot;
+ }
+
+ /**
+ * Set the current burner position
+ * @param pot The position
+ */
+ public void setCurrentPot(int pot)
+ {
+ _currentPot = pot;
+ }
+
+ /**
+ * Retrieve the current attempt Number
+ * @return The attempt number
+ */
+ public int getAttemptNumber()
+ {
+ return _attemptNumber;
+ }
+
+ /**
+ * Set the attempt number
+ * @param attempt attempt number
+ */
+ public void setAttemptNumber(int attempt)
+ {
+ _attemptNumber = attempt;
+ }
+
+ /**
+ * Retrieve the burning order
+ * @return an array of Ids
+ */
+ public int[] getOrder()
+ {
+ return _order;
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ new Minigame(Minigame.class.getSimpleName(), "ai/npc");
+ }
+}
Index: dist/sql/game/npc.sql
===================================================================
--- dist/sql/game/npc.sql (revision 9911)
+++ dist/sql/game/npc.sql (working copy)
@@ -2426,7 +2426,7 @@
(18908, 18908, "Sel Mahum Chef", 0, "", 0, "LineageMonster5.ol_mahum_cooker", 35, 32.5, 83, "male", "L2Monster", 40, 3835.590606, 1777.4, 8.5, 3, 40, 43, 30, 21, 20, 20, 17548, 1759, 1099.42362, 353.86144, 750.76381, 258.94045, 253, 4, 333, 0, 0, 0, 40, 120, 0, 1),
(18909, 18909, "Solina Knights", 0, "", 0, "LineageMonster3.monk_warrior", 12, 28.4, 83, "male", "L2Monster", 40, 3835.590606, 1777.4, 8.5, 3, 40, 43, 30, 21, 20, 20, 29810, 3060, 1099.42362, 353.86144, 750.76381, 258.94045, 253, 4, 333, 8211, 8210, 0, 53, 150, 0, 1),
(18910, 18910, "Solina Knight Captain", 0, "", 0, "LineageMonster5.solina_knight", 14, 31.5, 83, "male", "L2Monster", 40, 3835.590606, 1777.4, 8.5, 3, 40, 43, 30, 21, 20, 20, 44216, 4545, 1099.42362, 353.86144, 750.76381, 258.94045, 253, 4, 333, 0, 0, 0, 30, 66, 0, 1),
-(18911, 18911, "Abbey Treasure Chest", 0, "", 0, "LineageNpcEV.monastery_treasurebox", 17, 13, 84, "male", "L2Npc", 40, 39.74519, 40, 2, 0.9, 40, 43, 30, 21, 20, 20, 0, 0, 8.47458, 44.44444, 5.78704, 32.52252, 253, 4, 333, 0, 0, 0, 1, 1, 0, 1),
+(18911, 18911, "Abbey Treasure Chest", 0, "", 0, "LineageNpcEV.monastery_treasurebox", 17, 13, 84, "male", "L2Monster", 40, 39.74519, 40, 2, 0.9, 40, 43, 30, 21, 20, 20, 0, 0, 8.47458, 44.44444, 5.78704, 32.52252, 253, 4, 333, 0, 0, 0, 1, 1, 0, 1),
(18912, 18912, "Scarecrow", 0, "", 0, "LineageNpcEV.puppet", 27, 37.5, 1, "male", "L2Monster", 40, 39.74519, 40, 2, 0.9, 40, 43, 30, 21, 20, 20, 0, 0, 8.47458, 44.44444, 5.78704, 32.52252, 253, 4, 333, 0, 0, 0, 1, 1, 0, 1),
(18913, 18913, "Furnace", 0, "", 0, "LineageNpcEV.secret_pot_b", 18, 30, 1, "male", "L2Npc", 40, 39.74519, 40, 2, 0.9, 40, 43, 30, 21, 20, 20, 0, 0, 8.47458, 44.44444, 5.78704, 32.52252, 253, 4, 333, 0, 0, 0, 1, 1, 0, 1),
(18914, 18914, "Furnace", 0, "", 0, "LineageNpcEV.secret_pot_a", 18, 30, 1, "male", "L2Npc", 40, 39.74519, 40, 2, 0.9, 40, 43, 30, 21, 20, 20, 0, 0, 8.47458, 44.44444, 5.78704, 32.52252, 253, 4, 333, 0, 0, 0, 1, 1, 0, 1),
Index: dist/sql/game/spawnlist.sql
===================================================================
--- dist/sql/game/spawnlist.sql (revision 9854)
+++ dist/sql/game/spawnlist.sql (working copy)
@@ -32964,6 +32964,9 @@
("monastery_of_silence", 1, 22800, 113753, -72107, -592, 0, 0, 0, 60, 0, 0, 0),
("monastery_of_silence", 1, 22800, 113997, -73252, -592, 0, 0, 59645, 60, 0, 0, 0),
("monastery_of_silence", 1, 22800, 114578, -73396, -592, 0, 0, 0, 60, 0, 0, 0),
+-- Monastery Minigame instructors
+("monastery_of_silence", 1, 32758, 110805, -81851, -1588, 0, 0, 0, 0, 0, 0, 0),
+("monastery_of_silence", 1, 32758, 114956, -71152, -548, 0, 0, 0, 0, 0, 0, 0),
-- Mennon
("godard01_npc2315_01", 1, 31369, 123712, -72224, -3008, 0, 0, 16000, 60, 0, 0, 0),
-- Tablet of Vision
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment