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