diff --git a/L2J_DataPack_BETA/dist/game/data/scripts.cfg b/L2J_DataPack_BETA/dist/game/data/scripts.cfg index ebfaa2dba9fabb5367f75b3221bcea39e1194b5a..f2871f9a697885eba76a54fd3c5a4ac59c9c2ffa 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts.cfg +++ b/L2J_DataPack_BETA/dist/game/data/scripts.cfg @@ -63,6 +63,7 @@ ai/individual/GeneralDilios.java ai/individual/Gordon.java ai/individual/HellboundCore.java ai/individual/Keltas.java +ai/individual/Lindvior.java ai/individual/NaiaLock.java ai/individual/Orfen.java ai/individual/OutpostCaptain.java diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Lindvior.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Lindvior.java new file mode 100644 index 0000000000000000000000000000000000000000..528d9a92f94ed43fda528f550dbd643d1a76fa54 --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Lindvior.java @@ -0,0 +1,144 @@ +/* + * 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 ai.individual; + +import java.util.Calendar; +import java.util.GregorianCalendar; + +import ai.npc.AbstractNpcAI; + +import com.l2jserver.gameserver.datatables.SpawnTable; +import com.l2jserver.gameserver.model.L2Spawn; +import com.l2jserver.gameserver.model.actor.L2Npc; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.network.NpcStringId; +import com.l2jserver.gameserver.network.clientpackets.Say2; + +/** + * Lindvior Scene AI. + * @author nonom + */ +public class Lindvior extends AbstractNpcAI +{ + private static final int LINDVIOR_CAMERA = 18669; + private static final int TOMARIS = 32552; + private static final int ARTIUS = 32559; + + private static int LINDVIOR_SCENE_ID = 1; + + private static final int RESET_HOUR = 18; + private static final int RESET_MIN = 58; + private static final int RESET_DAY_1 = Calendar.TUESDAY; + private static final int RESET_DAY_2 = Calendar.FRIDAY; + + private static boolean ALT_MODE = false; + private static int ALT_MODE_MIN = 60; // schedule delay in minutes if ALT_MODE enabled + + private L2Npc _lindviorCamera = null; + private L2Npc _tomaris = null; + private L2Npc _artius = null; + + private Lindvior(String name, String descr) + { + super(name, descr); + scheduleNextLindviorVisit(); + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + switch (event) + { + case "tomaris_shout1": + broadcastNpcSay(npc, Say2.NPC_SHOUT, NpcStringId.HUH_THE_SKY_LOOKS_FUNNY_WHATS_THAT); + break; + case "artius_shout": + broadcastNpcSay(npc, Say2.NPC_SHOUT, NpcStringId.A_POWERFUL_SUBORDINATE_IS_BEING_HELD_BY_THE_BARRIER_ORB_THIS_REACTION_MEANS); + break; + case "tomaris_shout2": + broadcastNpcSay(npc, Say2.NPC_SHOUT, NpcStringId.BE_CAREFUL_SOMETHINGS_COMING); + break; + case "lindvior_scene": + for (L2PcInstance pl : npc.getKnownList().getKnownPlayersInRadius(4000)) + { + if ((pl.getZ() >= 1100) && (pl.getZ() <= 3100)) + { + pl.showQuestMovie(LINDVIOR_SCENE_ID); + } + } + break; + case "start": + for (L2Spawn spawn : SpawnTable.getInstance().getSpawnTable()) + { + switch (spawn.getNpcid()) + { + case LINDVIOR_CAMERA: + _lindviorCamera = spawn.getLastSpawn(); + break; + case TOMARIS: + _tomaris = spawn.getLastSpawn(); + break; + case ARTIUS: + _artius = spawn.getLastSpawn(); + break; + } + } + startQuestTimer("tomaris_shout1", 1000, _tomaris, null); + startQuestTimer("artius_shout", 60000, _artius, null); + startQuestTimer("tomaris_shout2", 90000, _tomaris, null); + startQuestTimer("lindvior_scene", 120000, _lindviorCamera, null); + scheduleNextLindviorVisit(); + break; + } + return super.onAdvEvent(event, npc, player); + } + + public void scheduleNextLindviorVisit() + { + long delay = (ALT_MODE) ? ALT_MODE_MIN * 60000 : scheduleNextLindviorDate(); + startQuestTimer("start", delay, null, null); + } + + protected long scheduleNextLindviorDate() + { + GregorianCalendar date = new GregorianCalendar(); + date.set(Calendar.MINUTE, RESET_MIN); + date.set(Calendar.HOUR_OF_DAY, RESET_HOUR); + if (System.currentTimeMillis() >= date.getTimeInMillis()) + { + date.add(Calendar.DAY_OF_WEEK, 1); + } + + int dayOfWeek = date.get(Calendar.DAY_OF_WEEK); + if (dayOfWeek <= RESET_DAY_1) + { + date.add(Calendar.DAY_OF_WEEK, RESET_DAY_1 - dayOfWeek); + } + else if (dayOfWeek <= RESET_DAY_2) + { + date.add(Calendar.DAY_OF_WEEK, RESET_DAY_2 - dayOfWeek); + } + else + { + date.add(Calendar.DAY_OF_WEEK, 1 + RESET_DAY_1); + } + return date.getTimeInMillis() - System.currentTimeMillis(); + } + + public static void main(String[] args) + { + new Lindvior("Lindvior", "ai/individual"); + } +} \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/AbstractNpcAI.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/AbstractNpcAI.java index 416623874dd086a9c426515480c677d1f05751d2..e17dc2405ebe2ee1c10b8755b85bdce54b4e3046 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/AbstractNpcAI.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/AbstractNpcAI.java @@ -46,12 +46,6 @@ public abstract class AbstractNpcAI extends L2Script return npc.getNpcId() + ".html"; } - @Override - public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) - { - return null; - } - public AbstractNpcAI(String name, String descr) { super(-1, name, descr); diff --git a/L2J_DataPack_BETA/dist/sql/game/npc.sql b/L2J_DataPack_BETA/dist/sql/game/npc.sql index c34083d78da779cdb37a9bd3382d6ee4ac14ce7b..5cebf7cfb4ad2de7814eb874e151c3c33ce1a36f 100644 --- a/L2J_DataPack_BETA/dist/sql/game/npc.sql +++ b/L2J_DataPack_BETA/dist/sql/game/npc.sql @@ -2184,8 +2184,8 @@ INSERT INTO `npc` VALUES (18666, 18666, "Fortune Bug", 0, "", 0, "LineageMonster4.jackpot_bug", 16, 22.5, 75, "male", "L2Monster", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 45, 160, 0, 1), (18667, 18667, "Ward of Death", 0, "", 0, "LineageNpcEV.trap_immortality", 24, 48.5, 83, "female", "L2Monster", 40, 3835.590606, 1777.4, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 1099.42362, 353.86144, 750.76381, 258.94045, 253, 4, 333, 0, 0, 0, 1, 1, 0, 1), (18668, 18668, "Ward of Death", 0, "", 0, "LineageNpcEV.trap_immortality", 24, 48.5, 83, "female", "L2Monster", 40, 3835.590606, 1777.4, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 1099.42362, 353.86144, 750.76381, 258.94045, 253, 4, 333, 0, 0, 0, 1, 1, 0, 1), -(18669, 18669, "", 0, "", 0, "LineageNPC.clear_npc", 0.1, 0.1, 73, "male", "L2Monster", 40, 2586.66898, 1442.4, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 752.73928, 310.02959, 514.02335, 226.8662, 253, 4, 333, 0, 0, 0, 1, 1, 0, 1), -(18670, 18670, "", 0, "", 0, "LineageNPC.clear_npc", 0.1, 0.1, 73, "male", "L2Monster", 40, 2586.66898, 1442.4, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 752.73928, 310.02959, 514.02335, 226.8662, 253, 4, 333, 0, 0, 0, 1, 1, 0, 1), +(18669, 18669, "", 0, "", 0, "LineageNPC.clear_npc", 0.1, 0.1, 73, "male", "L2Npc", 40, 2586.66898, 1442.4, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 752.73928, 310.02959, 514.02335, 226.8662, 253, 4, 333, 0, 0, 0, 1, 1, 0, 1), +(18670, 18670, "", 0, "", 0, "LineageNPC.clear_npc", 0.1, 0.1, 73, "male", "L2Npc", 40, 2586.66898, 1442.4, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 752.73928, 310.02959, 514.02335, 226.8662, 253, 4, 333, 0, 0, 0, 1, 1, 0, 1), (18671, 18671, "Block", 0, "", 0, "LineageNPC2.block", 16, 17, 1, "female", "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, 50, 160, 0, 1), (18672, 18672, "Block", 0, "", 0, "LineageNPC2.block", 16, 17, 1, "female", "L2Block", 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, 50, 160, 0, 1), (18673, 18673, "Block", 0, "", 0, "LineageNPC2.block", 16, 17, 1, "female", "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, 50, 160, 0, 1), diff --git a/L2J_DataPack_BETA/dist/sql/game/spawnlist.sql b/L2J_DataPack_BETA/dist/sql/game/spawnlist.sql index 3d0532b82eb9696fcd78e9fd38e0a7cac5c7a7d8..d7f97e6623640f36c9801e5b3705ef28e3b5a08f 100644 --- a/L2J_DataPack_BETA/dist/sql/game/spawnlist.sql +++ b/L2J_DataPack_BETA/dist/sql/game/spawnlist.sql @@ -18,6 +18,8 @@ CREATE TABLE `spawnlist` ( INSERT INTO `spawnlist` VALUES -- [12_24] +-- Lindvior Camera +('unset', 1, 18669, -184991, 242893, 1554, 0, 0, 0, 60, 0, 0), -- Red Star Stone ("unset", 1, 18684, -246875, 219422, 5187, 0, 0, 0, 60, 0, 0), -- Red Star Stone @@ -19871,7 +19873,7 @@ INSERT INTO `spawnlist` VALUES -- Hedinger ("rune02_npc2116_01", 1, 32883, 45524, -48446, -792, 0, 0, 8191, 60, 0, 0), -- Massymore Dungeon Gatekeeper -("rune03_npc2016_18", 1, 35506, 11532, -49136, -1087, 0, 0, 0, 0, 0, 0), +("rune03_npc2016_18", 1, 35506, 11532, -49136, -1087, 0, 0, 0, 60, 0, 0), -- Manor Manager ("Rune - Manor Manager", 1, 35512, 38278, -48426, 896, 0, 0, 1353, 60, 0, 0), -- Ronald