diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-04.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-04.html
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-04.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-04.html
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-06.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-06.html
similarity index 78%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-06.htm
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-06.html
index c68e685df86c30982361c48f73cd674e8873bfe7..1ecc69e7e985181a72a67d613b21b4a2b6164c8c 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-06.htm
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-06.html
@@ -1,4 +1,4 @@
 <html><body>Collector Gutenhagen:<br>
 You did it! I never doubted you. Yes, I prepared something for you. Here, this is a device unlike any other. Activating this device will give you a boost of energy and raise your intelligence. Sometimes it malfunctions... but, uhm... There won't be any problems, so trust me!<br>
-<a action="bypass -h Quest Q00463_IMustBeaGenius 32069-07.htm">Operate the device</a>
+<a action="bypass -h Quest Q00463_IMustBeaGenius reward">Operate the device</a>
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-06a.html b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-06a.html
new file mode 100644
index 0000000000000000000000000000000000000000..7a4caa514d5d5b15d03b205710fc1584a110f397
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-06a.html
@@ -0,0 +1,4 @@
+<html><body>Collector Gutenhagen:<br>
+Huh? You're smart but also full of doubt, aren't you? I can't believe that you have not operated my device yet. Don't you trust me?! Or do you doubt my device?! I will give you one more chance!<br>
+<a action="bypass -h Quest Q00463_IMustBeaGenius reward">Operate the device.</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-07.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-07.htm
index a2c175819c68a0b258de5ff5dc35589789b3769e..064ecaf33d7f9d49f1d427de86b3699ff5315bb5 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-07.htm
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-07.htm
@@ -1,6 +1,4 @@
 <html><body>Collector Gutenhagen:<br>
-......Hm, hmm!!!<br>
-Well, well, well. This is strange... I haven't seen this before, no effects... Did I give you the wrong thing?  It's not likely...<br>
-Would you collect the logs again tomorrow? I'm sure everything will be working fine tomorrow.<br>
-I think...
+Oh, there you are, ready for more? Well I'm still analyzing the data you've brought.<br>
+(This quest can be completed only once a day. This quest resets everyday at 6:30 am.)
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-08.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-08.htm
deleted file mode 100644
index 064ecaf33d7f9d49f1d427de86b3699ff5315bb5..0000000000000000000000000000000000000000
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-08.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Collector Gutenhagen:<br>
-Oh, there you are, ready for more? Well I'm still analyzing the data you've brought.<br>
-(This quest can be completed only once a day. This quest resets everyday at 6:30 am.)
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-08.html b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-08.html
new file mode 100644
index 0000000000000000000000000000000000000000..a2c175819c68a0b258de5ff5dc35589789b3769e
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-08.html
@@ -0,0 +1,6 @@
+<html><body>Collector Gutenhagen:<br>
+......Hm, hmm!!!<br>
+Well, well, well. This is strange... I haven't seen this before, no effects... Did I give you the wrong thing?  It's not likely...<br>
+Would you collect the logs again tomorrow? I'm sure everything will be working fine tomorrow.<br>
+I think...
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-09.html b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-09.html
new file mode 100644
index 0000000000000000000000000000000000000000..a80f10a4268683ae8fcf91813ea4356bd3ac47ae
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-09.html
@@ -0,0 +1,4 @@
+<html><body>Collector Gutenhagen:<br>
+Well, all's well that ends well! I'm surprised to see such a stable result. At this rate, I may be able to get a higher sale price.<br>
+Hmm, hmm. By the way - why not come back tomorrow? I always welcome fresh mea- uhm, adventurers like you.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-10.html b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-10.html
new file mode 100644
index 0000000000000000000000000000000000000000..739c33ed51f6627800e7ccf9b83895f85d09522f
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-10.html
@@ -0,0 +1,4 @@
+<html><body>Collector Gutenhagen:<br>
+Yee-HAW!! Success!!<br>
+All those times I took a hammer to this thing, and it finally works!! We must do it again someday!!
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-11.html b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-11.html
new file mode 100644
index 0000000000000000000000000000000000000000..54dc6cdc233296205bd6977fcb01289518826d94
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/32069-11.html
@@ -0,0 +1,4 @@
+<html><body>Collector Gutenhagen:<br>
+This is hard to believe!! You are the first to have this happen!! Don't you surge with wisdom? Aren't you teeming with uncontrollable energy?<br>
+The result is amazing... Come back any day, I'll be ready.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/Q00463_IMustBeaGenius.java b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/Q00463_IMustBeaGenius.java
index 1ea048d95b2ccc70cdf200cca8a7b6ae5e42fa3c..c057e644e8464bab3a5e749ce10da02d7abf46c8 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/Q00463_IMustBeaGenius.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00463_IMustBeaGenius/Q00463_IMustBeaGenius.java
@@ -14,6 +14,9 @@
  */
 package quests.Q00463_IMustBeaGenius;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.quest.Quest;
@@ -23,85 +26,96 @@ import com.l2jserver.gameserver.model.quest.State;
 import com.l2jserver.gameserver.network.NpcStringId;
 import com.l2jserver.gameserver.network.clientpackets.Say2;
 import com.l2jserver.gameserver.network.serverpackets.NpcSay;
-import com.l2jserver.gameserver.util.Util;
 
 /**
  * I Must Be a Genius (463)<br>
- * @author Gnacik
+ * @author Gnacik, malyelfik
  * @version 2010-08-19 Based on Freya PTS
  */
 public class Q00463_IMustBeaGenius extends Quest
 {
-	private static final int _gutenhagen = 32069;
-	private static final int _corpse_log = 15510;
-	private static final int _collection = 15511;
-	private static final int[] _mobs =
+	// NPC
+	private static final int GUTENHAGEN = 32069;
+	
+	// Items
+	private static final int CORPSE_LOG = 15510;
+	private static final int COLLECTION = 15511;
+	
+	// Mobs
+	private static final Map<Integer, DropInfo> MOBS = new HashMap<>();
+	
+	static
 	{
-		22801,
-		22802,
-		22804,
-		22805,
-		22807,
-		22808,
-		22809,
-		22810,
-		22811,
-		22812
+		MOBS.put(22801, new DropInfo(5, 0));
+		MOBS.put(22802, new DropInfo(5, 0));
+		MOBS.put(22803, new DropInfo(5, 0));
+		MOBS.put(22804, new DropInfo(-2, 1));
+		MOBS.put(22805, new DropInfo(-2, 1));
+		MOBS.put(22806, new DropInfo(-2, 1));
+		MOBS.put(22807, new DropInfo(-1, -1));
+		MOBS.put(22809, new DropInfo(2, 2));
+		MOBS.put(22810, new DropInfo(-3, 3));
+		MOBS.put(22811, new DropInfo(3, -1));
+		MOBS.put(22812, new DropInfo(1, -1));
+	}
+	
+	// Reward @formatter:off
+	private static final int[][] REWARD =
+	{
+		// exp, sp, html
+		{198725, 15892, 8},
+		{278216, 22249, 8},
+		{317961, 25427, 8},
+		{357706, 28606, 9},
+		{397451, 31784, 9},
+		{596176, 47677, 9},
+		{715411, 57212, 10},
+		{794901, 63569, 10},
+		{914137, 73104, 10},
+		{1192352, 95353, 11}
 	};
 	
+	// Misc @formatter:on
+	private static final int MIN_LEVEL = 70;
+	
 	@Override
 	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
 	{
-		String htmltext = event;
 		final QuestState st = player.getQuestState(getName());
 		if (st == null)
 		{
-			return htmltext;
+			return null;
 		}
 		
-		if (npc.getNpcId() == _gutenhagen)
+		String htmltext = event;
+		switch (event)
 		{
-			if (event.equalsIgnoreCase("32069-03.htm"))
-			{
-				st.playSound("ItemSound.quest_accept");
-				st.setState(State.STARTED);
-				st.set("cond", "1");
-				// Generate random daily number for player
-				int _number = getRandom(500, 600);
-				st.set("number", String.valueOf(_number));
-				// Set drop for mobs
-				for (int _mob : _mobs)
-				{
-					int _rand = getRandom(-2, 4);
-					if (_rand == 0)
-					{
-						_rand = 5;
-					}
-					st.set(String.valueOf(_mob), String.valueOf(_rand));
-				}
-				// One with higher chance
-				st.set(String.valueOf(_mobs[getRandom(_mobs.length)]), String.valueOf(getRandom(1, 100)));
-				htmltext = getHtm(st.getPlayer().getHtmlPrefix(), "32069-03.htm");
-				htmltext = htmltext.replace("%num%", String.valueOf(_number));
-			}
-			else if (event.equalsIgnoreCase("32069-05.htm"))
-			{
-				htmltext = getHtm(st.getPlayer().getHtmlPrefix(), "32069-05.htm");
-				htmltext = htmltext.replace("%num%", st.get("number"));
-			}
-			else if (event.equalsIgnoreCase("32069-07.htm"))
-			{
-				st.addExpAndSp(317961, 25427);
-				st.unset("cond");
-				st.unset("number");
-				for (int _mob : _mobs)
+			case "32069-03.htm":
+				st.startQuest();
+				int number = getRandom(51) + 550;
+				st.set("number", String.valueOf(number));
+				st.set("chance", String.valueOf(getRandom(4)));
+				htmltext = getHtm(player.getHtmlPrefix(), event).replace("%num%", String.valueOf(number));
+				break;
+			case "32069-05.htm":
+				htmltext = getHtm(player.getHtmlPrefix(), event).replace("%num%", st.get("number"));
+				break;
+			case "reward":
+				if (st.isCond(2))
 				{
-					st.unset(String.valueOf(_mob));
+					int rnd = getRandom(REWARD.length);
+					String str = (REWARD[rnd][2] < 10) ? "0" + REWARD[rnd][2] : String.valueOf(REWARD[rnd][2]);
+					
+					st.addExpAndSp(REWARD[rnd][0], REWARD[rnd][1]);
+					st.exitQuest(QuestType.DAILY, true);
+					htmltext = "32069-" + str + ".html";
 				}
-				st.takeItems(_collection, -1);
-				st.playSound("ItemSound.quest_finish");
-				st.exitQuest(QuestType.DAILY);
-			}
+				break;
+			case "32069-02.htm":
+				break;
+			default:
+				htmltext = null;
+				break;
 		}
 		return htmltext;
 	}
@@ -110,41 +124,43 @@ public class Q00463_IMustBeaGenius extends Quest
 	public String onTalk(L2Npc npc, L2PcInstance player)
 	{
 		String htmltext = getNoQuestMsg(player);
-		QuestState st = player.getQuestState(getName());
+		final QuestState st = player.getQuestState(getName());
 		if (st == null)
 		{
 			return htmltext;
 		}
 		
-		if (npc.getNpcId() == _gutenhagen)
+		switch (st.getState())
 		{
-			switch (st.getState())
-			{
-				case State.CREATED:
-					htmltext = (player.getLevel() >= 70) ? "32069-01.htm" : "32069-00.htm";
-					break;
-				case State.STARTED:
-					if (st.getInt("cond") == 1)
-					{
-						htmltext = "32069-04.htm";
-					}
-					else if (st.getInt("cond") == 2)
-					{
-						htmltext = "32069-06.htm";
-					}
+			case State.COMPLETED:
+				if (!st.isNowAvailable())
+				{
+					htmltext = "32069-07.htm";
 					break;
-				case State.COMPLETED:
-					if (st.isNowAvailable())
+				}
+				st.setState(State.CREATED);
+			case State.CREATED:
+				htmltext = (player.getLevel() >= MIN_LEVEL) ? "32069-01.htm" : "32069-00.htm";
+				break;
+			case State.STARTED:
+				if (st.isCond(1))
+				{
+					htmltext = "32069-04.html";
+				}
+				else
+				{
+					if (st.getInt("var") == 1)
 					{
-						st.setState(State.CREATED);
-						htmltext = (player.getLevel() >= 70) ? "32069-01.htm" : "32069-00.htm";
+						htmltext = "32069-06a.html";
 					}
 					else
 					{
-						htmltext = "32069-08.htm";
+						st.takeItems(COLLECTION, -1);
+						st.set("var", "1");
+						htmltext = "32069-06.html";
 					}
-					break;
-			}
+				}
+				break;
 		}
 		return htmltext;
 	}
@@ -155,59 +171,83 @@ public class Q00463_IMustBeaGenius extends Quest
 		final QuestState st = player.getQuestState(getName());
 		if (st == null)
 		{
-			return null;
+			return super.onKill(npc, player, isPet);
 		}
 		
-		if (st.isStarted() && (st.getInt("cond") == 1) && Util.contains(_mobs, npc.getNpcId()))
+		if (st.isCond(1))
 		{
-			int _day_number = st.getInt("number");
-			int _number = st.getInt(String.valueOf(npc.getNpcId()));
+			boolean msg = false;
+			int number = MOBS.get(npc.getNpcId()).getCount();
 			
-			if (_number > 0)
+			if (MOBS.get(npc.getNpcId()).getSpecialChance() == st.getInt("chance"))
 			{
-				st.giveItems(_corpse_log, _number);
-				st.playSound("ItemSound.quest_itemget");
-				NpcSay ns = new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getNpcId(), NpcStringId.ATT_ATTACK_S1_RO_ROGUE_S2);
-				ns.addStringParameter(player.getName());
-				ns.addStringParameter(String.valueOf(_number));
-				
-				npc.broadcastPacket(ns);
-				
+				number = getRandom(100) + 1;
 			}
-			else if ((_number < 0) && ((st.getQuestItemsCount(_corpse_log) + _number) > 0))
+			
+			if (number > 0)
 			{
-				st.takeItems(_corpse_log, Math.abs(_number));
-				st.playSound("ItemSound.quest_itemget");
-				NpcSay ns = new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getNpcId(), NpcStringId.ATT_ATTACK_S1_RO_ROGUE_S2);
-				ns.addStringParameter(player.getName());
-				ns.addStringParameter(String.valueOf(_number));
-				
-				npc.broadcastPacket(ns);
-				
+				st.giveItems(CORPSE_LOG, number);
+				msg = true;
 			}
-			
-			if (st.getQuestItemsCount(_corpse_log) == _day_number)
+			else if ((number < 0) && ((st.getQuestItemsCount(CORPSE_LOG) + number) > 0))
 			{
-				st.takeItems(_corpse_log, -1);
-				st.giveItems(_collection, 1);
-				st.set("cond", "2");
+				st.takeItems(CORPSE_LOG, Math.abs(number));
+				msg = true;
 			}
 			
+			if (msg)
+			{
+				final NpcSay ns = new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getNpcId(), NpcStringId.ATT_ATTACK_S1_RO_ROGUE_S2);
+				ns.addStringParameter(player.getName());
+				ns.addStringParameter(String.valueOf(number));
+				npc.broadcastPacket(ns);
+				
+				st.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+				if (st.getQuestItemsCount(CORPSE_LOG) == st.getInt("number"))
+				{
+					st.takeItems(CORPSE_LOG, -1);
+					st.giveItems(COLLECTION, 1);
+					st.setCond(2, true);
+				}
+			}
 		}
-		return null;
+		return super.onKill(npc, player, isPet);
 	}
 	
 	public Q00463_IMustBeaGenius(int questId, String name, String descr)
 	{
 		super(questId, name, descr);
+		addStartNpc(GUTENHAGEN);
+		addTalkId(GUTENHAGEN);
+		addKillId(MOBS.keySet());
 		
-		addStartNpc(_gutenhagen);
-		addTalkId(_gutenhagen);
-		addKillId(_mobs);
+		registerQuestItems(COLLECTION, CORPSE_LOG);
 	}
 	
 	public static void main(String[] args)
 	{
 		new Q00463_IMustBeaGenius(463, Q00463_IMustBeaGenius.class.getSimpleName(), "I Must Be a Genius");
 	}
-}
+	
+	private static class DropInfo
+	{
+		private final int _count;
+		private final int _chance;
+		
+		public DropInfo(int count, int chance)
+		{
+			_count = count;
+			_chance = chance;
+		}
+		
+		public int getSpecialChance()
+		{
+			return _chance;
+		}
+		
+		public int getCount()
+		{
+			return _count;
+		}
+	}
+}
\ No newline at end of file