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