Skip to content
Snippets Groups Projects
Commit 98492b93 authored by Noe Caratini's avatar Noe Caratini
Browse files

refactor(quest): Changed quests to use new drop system

Q00106_ForgottenTruth
Q00169_OffspringOfNightmares
Q00412_PathOfTheDarkWizard
Q00419_GetAPet
parent 81269995
No related branches found
No related tags found
No related merge requests found
...@@ -20,9 +20,9 @@ package com.l2jserver.datapack.quests.Q00106_ForgottenTruth; ...@@ -20,9 +20,9 @@ package com.l2jserver.datapack.quests.Q00106_ForgottenTruth;
import com.l2jserver.datapack.quests.Q00281_HeadForTheHills.Q00281_HeadForTheHills; import com.l2jserver.datapack.quests.Q00281_HeadForTheHills.Q00281_HeadForTheHills;
import com.l2jserver.gameserver.enums.Race; import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.enums.audio.Sound;
import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.holders.QuestItemChanceHolder;
import com.l2jserver.gameserver.model.quest.Quest; import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState; import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.model.quest.State; import com.l2jserver.gameserver.model.quest.State;
...@@ -42,9 +42,9 @@ public final class Q00106_ForgottenTruth extends Quest { ...@@ -42,9 +42,9 @@ public final class Q00106_ForgottenTruth extends Quest {
// Items // Items
private static final int ONYX_TALISMAN1 = 984; private static final int ONYX_TALISMAN1 = 984;
private static final int ONYX_TALISMAN2 = 985; private static final int ONYX_TALISMAN2 = 985;
private static final int ANCIENT_SCROLL = 986;
private static final int ANCIENT_CLAY_TABLET = 987;
private static final int KARTAS_TRANSLATION = 988; private static final int KARTAS_TRANSLATION = 988;
private static final QuestItemChanceHolder ANCIENT_SCROLL = new QuestItemChanceHolder(986, 20.0, 1L);
private static final QuestItemChanceHolder ANCIENT_CLAY_TABLET = new QuestItemChanceHolder(987, 20.0, 1L);
// Misc // Misc
private static final int MIN_LVL = 10; private static final int MIN_LVL = 10;
...@@ -53,7 +53,7 @@ public final class Q00106_ForgottenTruth extends Quest { ...@@ -53,7 +53,7 @@ public final class Q00106_ForgottenTruth extends Quest {
addStartNpc(THIFIELL); addStartNpc(THIFIELL);
addTalkId(THIFIELL, KARTA); addTalkId(THIFIELL, KARTA);
addKillId(TUMRAN_ORC_BRIGAND); addKillId(TUMRAN_ORC_BRIGAND);
registerQuestItems(KARTAS_TRANSLATION, ONYX_TALISMAN1, ONYX_TALISMAN2, ANCIENT_SCROLL, ANCIENT_CLAY_TABLET); registerQuestItems(KARTAS_TRANSLATION, ONYX_TALISMAN1, ONYX_TALISMAN2, ANCIENT_SCROLL.getId(), ANCIENT_CLAY_TABLET.getId());
} }
@Override @Override
...@@ -84,13 +84,11 @@ public final class Q00106_ForgottenTruth extends Quest { ...@@ -84,13 +84,11 @@ public final class Q00106_ForgottenTruth extends Quest {
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) { public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) {
final QuestState st = getQuestState(killer, false); final QuestState st = getQuestState(killer, false);
if ((st != null) && st.isCond(2) && Util.checkIfInRange(1500, npc, killer, true)) { if ((st != null) && st.isCond(2) && Util.checkIfInRange(1500, npc, killer, true)) {
if ((getRandom(100) < 20) && st.hasQuestItems(ONYX_TALISMAN2)) { if (st.hasQuestItems(ONYX_TALISMAN2)) {
if (!st.hasQuestItems(ANCIENT_SCROLL)) { if (!hasQuestItems(st.getPlayer(), ANCIENT_SCROLL.getId())) {
st.giveItems(ANCIENT_SCROLL, 1); giveItemRandomly(st.getPlayer(), npc, ANCIENT_SCROLL, true);
st.playSound(Sound.ITEMSOUND_QUEST_MIDDLE); } else if (giveItemRandomly(st.getPlayer(), npc, ANCIENT_CLAY_TABLET, true)) {
} else if (!st.hasQuestItems(ANCIENT_CLAY_TABLET)) { st.setCond(3);
st.setCond(3, true);
st.giveItems(ANCIENT_CLAY_TABLET, 1);
} }
} }
} }
...@@ -151,9 +149,9 @@ public final class Q00106_ForgottenTruth extends Quest { ...@@ -151,9 +149,9 @@ public final class Q00106_ForgottenTruth extends Quest {
break; break;
} }
case 3: { case 3: {
if (st.hasQuestItems(ANCIENT_SCROLL, ANCIENT_CLAY_TABLET)) { if (st.hasQuestItems(ANCIENT_SCROLL.getId(), ANCIENT_CLAY_TABLET.getId())) {
st.setCond(4, true); st.setCond(4, true);
takeItems(talker, -1, ANCIENT_SCROLL, ANCIENT_CLAY_TABLET, ONYX_TALISMAN2); takeItems(talker, -1, ANCIENT_SCROLL.getId(), ANCIENT_CLAY_TABLET.getId(), ONYX_TALISMAN2);
st.giveItems(KARTAS_TRANSLATION, 1); st.giveItems(KARTAS_TRANSLATION, 1);
htmltext = "30133-03.html"; htmltext = "30133-03.html";
} }
...@@ -173,4 +171,4 @@ public final class Q00106_ForgottenTruth extends Quest { ...@@ -173,4 +171,4 @@ public final class Q00106_ForgottenTruth extends Quest {
} }
return htmltext; return htmltext;
} }
} }
\ No newline at end of file
...@@ -19,14 +19,16 @@ ...@@ -19,14 +19,16 @@
package com.l2jserver.datapack.quests.Q00169_OffspringOfNightmares; package com.l2jserver.datapack.quests.Q00169_OffspringOfNightmares;
import com.l2jserver.gameserver.enums.Race; import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.enums.audio.Sound;
import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.holders.QuestItemChanceHolder;
import com.l2jserver.gameserver.model.quest.Quest; import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState; import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.model.quest.State; import com.l2jserver.gameserver.model.quest.State;
import com.l2jserver.gameserver.network.NpcStringId; import com.l2jserver.gameserver.network.NpcStringId;
import static com.l2jserver.gameserver.model.quest.QuestDroplist.singleDropItem;
/** /**
* Offspring of Nightmares (169) * Offspring of Nightmares (169)
* @author xban1x * @author xban1x
...@@ -40,7 +42,7 @@ public class Q00169_OffspringOfNightmares extends Quest { ...@@ -40,7 +42,7 @@ public class Q00169_OffspringOfNightmares extends Quest {
// Items // Items
private static final int BONE_GAITERS = 31; private static final int BONE_GAITERS = 31;
private static final int CRACKED_SKULL = 1030; private static final int CRACKED_SKULL = 1030;
private static final int PERFECT_SKULL = 1031; private static final QuestItemChanceHolder PERFECT_SKULL = new QuestItemChanceHolder(1031, 20.0, 1L);
// Misc // Misc
private static final int MIN_LVL = 15; private static final int MIN_LVL = 15;
...@@ -49,7 +51,7 @@ public class Q00169_OffspringOfNightmares extends Quest { ...@@ -49,7 +51,7 @@ public class Q00169_OffspringOfNightmares extends Quest {
addStartNpc(VLASTY); addStartNpc(VLASTY);
addTalkId(VLASTY); addTalkId(VLASTY);
addKillId(LESSER_DARK_HORROR, DARK_HORROR); addKillId(LESSER_DARK_HORROR, DARK_HORROR);
registerQuestItems(CRACKED_SKULL, PERFECT_SKULL); registerQuestItems(CRACKED_SKULL, PERFECT_SKULL.getId());
} }
@Override @Override
...@@ -64,7 +66,7 @@ public class Q00169_OffspringOfNightmares extends Quest { ...@@ -64,7 +66,7 @@ public class Q00169_OffspringOfNightmares extends Quest {
break; break;
} }
case "30145-07.html": { case "30145-07.html": {
if (st.isCond(2) && st.hasQuestItems(PERFECT_SKULL)) { if (st.isCond(2) && st.hasQuestItems(PERFECT_SKULL.getId())) {
st.giveItems(BONE_GAITERS, 1); st.giveItems(BONE_GAITERS, 1);
st.addExpAndSp(17475, 818); st.addExpAndSp(17475, 818);
st.giveAdena(17030 + (10 * st.getQuestItemsCount(CRACKED_SKULL)), true); st.giveAdena(17030 + (10 * st.getQuestItemsCount(CRACKED_SKULL)), true);
...@@ -83,12 +85,10 @@ public class Q00169_OffspringOfNightmares extends Quest { ...@@ -83,12 +85,10 @@ public class Q00169_OffspringOfNightmares extends Quest {
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) { public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) {
final QuestState st = getQuestState(killer, false); final QuestState st = getQuestState(killer, false);
if ((st != null) && st.isStarted()) { if ((st != null) && st.isStarted()) {
if ((getRandom(10) > 7) && !st.hasQuestItems(PERFECT_SKULL)) { if (!hasQuestItems(st.getPlayer(), PERFECT_SKULL.getId()) && giveItemRandomly(st.getPlayer(), npc, PERFECT_SKULL, true)) {
st.giveItems(PERFECT_SKULL, 1); st.setCond(2);
st.setCond(2, true); } else {
} else if (getRandom(10) > 4) { giveItemRandomly(st.getPlayer(), npc, singleDropItem(CRACKED_SKULL, 50.0), 0, true);
st.giveItems(CRACKED_SKULL, 1);
st.playSound(Sound.ITEMSOUND_QUEST_ITEMGET);
} }
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
...@@ -104,11 +104,11 @@ public class Q00169_OffspringOfNightmares extends Quest { ...@@ -104,11 +104,11 @@ public class Q00169_OffspringOfNightmares extends Quest {
break; break;
} }
case State.STARTED: { case State.STARTED: {
if (st.hasQuestItems(CRACKED_SKULL) && !st.hasQuestItems(PERFECT_SKULL)) { if (st.hasQuestItems(CRACKED_SKULL) && !st.hasQuestItems(PERFECT_SKULL.getId())) {
htmltext = "30145-05.html"; htmltext = "30145-05.html";
} else if (st.isCond(2) && st.hasQuestItems(PERFECT_SKULL)) { } else if (st.isCond(2) && st.hasQuestItems(PERFECT_SKULL.getId())) {
htmltext = "30145-06.html"; htmltext = "30145-06.html";
} else if (!st.hasQuestItems(CRACKED_SKULL, PERFECT_SKULL)) { } else if (!st.hasQuestItems(CRACKED_SKULL, PERFECT_SKULL.getId())) {
htmltext = "30145-04.html"; htmltext = "30145-04.html";
} }
break; break;
...@@ -120,4 +120,4 @@ public class Q00169_OffspringOfNightmares extends Quest { ...@@ -120,4 +120,4 @@ public class Q00169_OffspringOfNightmares extends Quest {
} }
return htmltext; return htmltext;
} }
} }
\ No newline at end of file
...@@ -18,15 +18,18 @@ ...@@ -18,15 +18,18 @@
*/ */
package com.l2jserver.datapack.quests.Q00412_PathOfTheDarkWizard; package com.l2jserver.datapack.quests.Q00412_PathOfTheDarkWizard;
import com.l2jserver.gameserver.enums.audio.Sound;
import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.base.ClassId; import com.l2jserver.gameserver.model.base.ClassId;
import com.l2jserver.gameserver.model.holders.QuestItemChanceHolder;
import com.l2jserver.gameserver.model.quest.Quest; import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestDroplist;
import com.l2jserver.gameserver.model.quest.QuestState; import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.serverpackets.SocialAction; import com.l2jserver.gameserver.network.serverpackets.SocialAction;
import com.l2jserver.gameserver.util.Util; import com.l2jserver.gameserver.util.Util;
import java.util.Map;
/** /**
* Path Of The Dark Wizard (412) * Path Of The Dark Wizard (412)
* @author ivantotov * @author ivantotov
...@@ -37,25 +40,37 @@ public final class Q00412_PathOfTheDarkWizard extends Quest { ...@@ -37,25 +40,37 @@ public final class Q00412_PathOfTheDarkWizard extends Quest {
private static final int ANNIKA = 30418; private static final int ANNIKA = 30418;
private static final int ARKENIA = 30419; private static final int ARKENIA = 30419;
private static final int VARIKA = 30421; private static final int VARIKA = 30421;
// Monster
private static final int MARSH_ZOMBIE = 20015;
private static final int MISERY_SKELETON = 20022;
private static final int SKELETON_SCOUT = 20045;
private static final int SKELETON_HUNTER = 20517;
private static final int SKELETON_HUNTER_ARCHER = 20518;
// Items // Items
private static final int SEEDS_OF_ANGER = 1253; private static final int SEEDS_OF_ANGER = 1253;
private static final int SEEDS_OF_DESPAIR = 1254; private static final int SEEDS_OF_DESPAIR = 1254;
private static final int SEEDS_OF_HORROR = 1255; private static final int SEEDS_OF_HORROR = 1255;
private static final int SEEDS_OF_LUNACY = 1256; private static final int SEEDS_OF_LUNACY = 1256;
private static final int FAMILYS_REMAINS = 1257;
private static final int KNEE_BONE = 1259;
private static final int HEART_OF_LUNACY = 1260;
private static final int LUCKY_KEY = 1277; private static final int LUCKY_KEY = 1277;
private static final int CANDLE = 1278; private static final int CANDLE = 1278;
private static final int HUB_SCENT = 1279; private static final int HUB_SCENT = 1279;
private static final QuestItemChanceHolder FAMILYS_REMAINS = new QuestItemChanceHolder(1257, 50.0, 3L);
private static final QuestItemChanceHolder KNEE_BONE = new QuestItemChanceHolder(1259, 50.0, 2L);
private static final QuestItemChanceHolder HEART_OF_LUNACY = new QuestItemChanceHolder(1260, 50.0, 3L);
// Droplist
private static final QuestDroplist DROPLIST = QuestDroplist.builder()
.addSingleDrop(MARSH_ZOMBIE, FAMILYS_REMAINS)
.bulkAddSingleDrop(KNEE_BONE).withNpcs(MISERY_SKELETON, SKELETON_HUNTER, SKELETON_HUNTER_ARCHER).build()
.addSingleDrop(SKELETON_SCOUT, HEART_OF_LUNACY)
.build();
private static final Map<Integer, Integer> MOBS_REQUIRED_ITEM = Map.of(
MARSH_ZOMBIE, LUCKY_KEY,
MISERY_SKELETON, CANDLE,
SKELETON_HUNTER, CANDLE,
SKELETON_HUNTER_ARCHER, CANDLE,
SKELETON_SCOUT, HUB_SCENT);
// Reward // Reward
private static final int JEWEL_OF_DARKNESS = 1261; private static final int JEWEL_OF_DARKNESS = 1261;
// Monster
private static final int MARSH_ZOMBIE = 20015;
private static final int MISERY_SKELETON = 20022;
private static final int SKELETON_SCOUT = 20045;
private static final int SKELETON_HUNTER = 20517;
private static final int SKELETON_HUNTER_ARCHER = 20518;
// Misc // Misc
private static final int MIN_LEVEL = 18; private static final int MIN_LEVEL = 18;
...@@ -64,7 +79,7 @@ public final class Q00412_PathOfTheDarkWizard extends Quest { ...@@ -64,7 +79,7 @@ public final class Q00412_PathOfTheDarkWizard extends Quest {
addStartNpc(VARIKA); addStartNpc(VARIKA);
addTalkId(VARIKA, CHARKEREN, ANNIKA, ARKENIA); addTalkId(VARIKA, CHARKEREN, ANNIKA, ARKENIA);
addKillId(MARSH_ZOMBIE, MISERY_SKELETON, SKELETON_SCOUT, SKELETON_HUNTER, SKELETON_HUNTER_ARCHER); addKillId(MARSH_ZOMBIE, MISERY_SKELETON, SKELETON_SCOUT, SKELETON_HUNTER, SKELETON_HUNTER_ARCHER);
registerQuestItems(SEEDS_OF_ANGER, SEEDS_OF_DESPAIR, SEEDS_OF_HORROR, SEEDS_OF_LUNACY, FAMILYS_REMAINS, KNEE_BONE, HEART_OF_LUNACY, LUCKY_KEY, CANDLE, HUB_SCENT); registerQuestItems(SEEDS_OF_ANGER, SEEDS_OF_DESPAIR, SEEDS_OF_HORROR, SEEDS_OF_LUNACY, FAMILYS_REMAINS.getId(), KNEE_BONE.getId(), HEART_OF_LUNACY.getId(), LUCKY_KEY, CANDLE, HUB_SCENT);
} }
@Override @Override
...@@ -142,49 +157,9 @@ public final class Q00412_PathOfTheDarkWizard extends Quest { ...@@ -142,49 +157,9 @@ public final class Q00412_PathOfTheDarkWizard extends Quest {
@Override @Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) { public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) {
final QuestState qs = getQuestState(killer, false); final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isStarted() && Util.checkIfInRange(1500, npc, killer, true)) { if ((qs != null) && qs.isStarted() && Util.checkIfInRange(1500, npc, qs.getPlayer(), true)) {
switch (npc.getId()) { if (hasQuestItems(qs.getPlayer(), MOBS_REQUIRED_ITEM.get(npc.getId()))) {
case MARSH_ZOMBIE: { giveItemRandomly(qs.getPlayer(), npc, DROPLIST.get(npc), true);
if (hasQuestItems(killer, LUCKY_KEY) && (getQuestItemsCount(killer, FAMILYS_REMAINS) < 3)) {
if (getRandom(2) == 0) {
giveItems(killer, FAMILYS_REMAINS, 1);
if (getQuestItemsCount(killer, FAMILYS_REMAINS) == 3) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case MISERY_SKELETON:
case SKELETON_HUNTER:
case SKELETON_HUNTER_ARCHER: {
if (hasQuestItems(killer, CANDLE) && (getQuestItemsCount(killer, KNEE_BONE) < 2)) {
if (getRandom(2) == 0) {
giveItems(killer, KNEE_BONE, 1);
if (getQuestItemsCount(killer, KNEE_BONE) == 2) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case SKELETON_SCOUT: {
if (hasQuestItems(killer, HUB_SCENT) && (getQuestItemsCount(killer, HEART_OF_LUNACY) < 3)) {
if (getRandom(2) == 0) {
giveItems(killer, HEART_OF_LUNACY, 1);
if (getQuestItemsCount(killer, HEART_OF_LUNACY) == 3) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
} }
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
...@@ -221,7 +196,7 @@ public final class Q00412_PathOfTheDarkWizard extends Quest { ...@@ -221,7 +196,7 @@ public final class Q00412_PathOfTheDarkWizard extends Quest {
qs.saveGlobalQuestVar("1ClassQuestFinished", "1"); qs.saveGlobalQuestVar("1ClassQuestFinished", "1");
htmltext = "30421-13.html"; htmltext = "30421-13.html";
} else if (hasQuestItems(player, SEEDS_OF_DESPAIR)) { } else if (hasQuestItems(player, SEEDS_OF_DESPAIR)) {
if (!hasAtLeastOneQuestItem(player, FAMILYS_REMAINS, LUCKY_KEY, CANDLE, HUB_SCENT, KNEE_BONE, HEART_OF_LUNACY)) { if (!hasAtLeastOneQuestItem(player, FAMILYS_REMAINS.getId(), LUCKY_KEY, CANDLE, HUB_SCENT, KNEE_BONE.getId(), HEART_OF_LUNACY.getId())) {
htmltext = "30421-14.html"; htmltext = "30421-14.html";
} else if (!hasQuestItems(player, SEEDS_OF_ANGER)) { } else if (!hasQuestItems(player, SEEDS_OF_ANGER)) {
htmltext = "30421-08.html"; htmltext = "30421-08.html";
...@@ -235,13 +210,13 @@ public final class Q00412_PathOfTheDarkWizard extends Quest { ...@@ -235,13 +210,13 @@ public final class Q00412_PathOfTheDarkWizard extends Quest {
} }
case CHARKEREN: { case CHARKEREN: {
if (!hasQuestItems(player, SEEDS_OF_ANGER) && hasQuestItems(player, SEEDS_OF_DESPAIR)) { if (!hasQuestItems(player, SEEDS_OF_ANGER) && hasQuestItems(player, SEEDS_OF_DESPAIR)) {
if (!hasAtLeastOneQuestItem(player, FAMILYS_REMAINS, LUCKY_KEY)) { if (!hasAtLeastOneQuestItem(player, FAMILYS_REMAINS.getId(), LUCKY_KEY)) {
htmltext = "30415-01.html"; htmltext = "30415-01.html";
} else if (hasQuestItems(player, LUCKY_KEY) && (getQuestItemsCount(player, FAMILYS_REMAINS) < 3)) { } else if (hasQuestItems(player, LUCKY_KEY) && !hasItemsAtLimit(player, FAMILYS_REMAINS)) {
htmltext = "30415-04.html"; htmltext = "30415-04.html";
} else { } else {
giveItems(player, SEEDS_OF_ANGER, 1); giveItems(player, SEEDS_OF_ANGER, 1);
takeItems(player, FAMILYS_REMAINS, -1); takeItems(player, FAMILYS_REMAINS.getId(), -1);
takeItems(player, LUCKY_KEY, 1); takeItems(player, LUCKY_KEY, 1);
htmltext = "30415-05.html"; htmltext = "30415-05.html";
} }
...@@ -252,13 +227,13 @@ public final class Q00412_PathOfTheDarkWizard extends Quest { ...@@ -252,13 +227,13 @@ public final class Q00412_PathOfTheDarkWizard extends Quest {
} }
case ANNIKA: { case ANNIKA: {
if (!hasQuestItems(player, SEEDS_OF_HORROR) && hasQuestItems(player, SEEDS_OF_DESPAIR)) { if (!hasQuestItems(player, SEEDS_OF_HORROR) && hasQuestItems(player, SEEDS_OF_DESPAIR)) {
if (!hasAtLeastOneQuestItem(player, CANDLE, KNEE_BONE)) { if (!hasAtLeastOneQuestItem(player, CANDLE, KNEE_BONE.getId())) {
htmltext = "30418-01.html"; htmltext = "30418-01.html";
} else if (hasQuestItems(player, CANDLE) && (getQuestItemsCount(player, KNEE_BONE) < 2)) { } else if (hasQuestItems(player, CANDLE) && !hasItemsAtLimit(player, KNEE_BONE)) {
htmltext = "30418-03.html"; htmltext = "30418-03.html";
} else { } else {
giveItems(player, SEEDS_OF_HORROR, 1); giveItems(player, SEEDS_OF_HORROR, 1);
takeItems(player, KNEE_BONE, -1); takeItems(player, KNEE_BONE.getId(), -1);
takeItems(player, CANDLE, 1); takeItems(player, CANDLE, 1);
htmltext = "30418-04.html"; htmltext = "30418-04.html";
} }
...@@ -267,14 +242,14 @@ public final class Q00412_PathOfTheDarkWizard extends Quest { ...@@ -267,14 +242,14 @@ public final class Q00412_PathOfTheDarkWizard extends Quest {
} }
case ARKENIA: { case ARKENIA: {
if (!hasQuestItems(player, SEEDS_OF_LUNACY)) { if (!hasQuestItems(player, SEEDS_OF_LUNACY)) {
if (!hasAtLeastOneQuestItem(player, HUB_SCENT, HEART_OF_LUNACY)) { if (!hasAtLeastOneQuestItem(player, HUB_SCENT, HEART_OF_LUNACY.getId())) {
giveItems(player, HUB_SCENT, 1); giveItems(player, HUB_SCENT, 1);
htmltext = "30419-01.html"; htmltext = "30419-01.html";
} else if (hasQuestItems(player, HUB_SCENT) && (getQuestItemsCount(player, HEART_OF_LUNACY) < 3)) { } else if (hasQuestItems(player, HUB_SCENT) && !hasItemsAtLimit(player, HEART_OF_LUNACY)) {
htmltext = "30419-02.html"; htmltext = "30419-02.html";
} else { } else {
giveItems(player, SEEDS_OF_LUNACY, 1); giveItems(player, SEEDS_OF_LUNACY, 1);
takeItems(player, HEART_OF_LUNACY, -1); takeItems(player, HEART_OF_LUNACY.getId(), -1);
takeItems(player, HUB_SCENT, 1); takeItems(player, HUB_SCENT, 1);
htmltext = "30419-03.html"; htmltext = "30419-03.html";
} }
......
...@@ -25,7 +25,9 @@ import com.l2jserver.gameserver.enums.Race; ...@@ -25,7 +25,9 @@ import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.enums.audio.Sound; import com.l2jserver.gameserver.enums.audio.Sound;
import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.holders.QuestItemChanceHolder;
import com.l2jserver.gameserver.model.quest.Quest; import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestDroplist;
import com.l2jserver.gameserver.model.quest.QuestState; import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.util.Util; import com.l2jserver.gameserver.util.Util;
...@@ -39,22 +41,6 @@ public final class Q00419_GetAPet extends Quest { ...@@ -39,22 +41,6 @@ public final class Q00419_GetAPet extends Quest {
private static final int ACCESSORY_MERCHANT_ELICE = 30091; private static final int ACCESSORY_MERCHANT_ELICE = 30091;
private static final int GATEKEEPER_BELLA = 30256; private static final int GATEKEEPER_BELLA = 30256;
private static final int PET_MENAGER_MARTIN = 30731; private static final int PET_MENAGER_MARTIN = 30731;
// Items
private static final int ANIMAL_LOVERS_LIST = 3417;
private static final int ANIMAL_SLAYERS_1ST_LIST = 3418;
private static final int ANIMAL_SLAYERS_2ND_LIST = 3419;
private static final int ANIMAL_SLAYERS_3RD_LIST = 3420;
private static final int ANIMAL_SLAYERS_4TH_LIST = 3421;
private static final int ANIMAL_SLAYERS_5TH_LIST = 3422;
private static final int BLOODY_FANG = 3423;
private static final int BLOODY_CLAW = 3424;
private static final int BLOODY_NAIL = 3425;
private static final int BLOODY_KASHA_FANG = 3426;
private static final int BLOODY_TARANTULA_NAIL = 3427;
private static final int ANIMAL_SLAYERS_LIST = 10164;
private static final int BLOODY_RED_CLAW = 10165;
// Reward
private static final int WOLF_COLLAR = 2375;
// Monster // Monster
private static final int LESSER_DARK_HORROR = 20025; private static final int LESSER_DARK_HORROR = 20025;
private static final int PROWLER = 20034; private static final int PROWLER = 20034;
...@@ -71,11 +57,62 @@ public final class Q00419_GetAPet extends Quest { ...@@ -71,11 +57,62 @@ public final class Q00419_GetAPet extends Quest {
private static final int KASHA_BLADE_SPIDER = 20478; private static final int KASHA_BLADE_SPIDER = 20478;
private static final int PLUNDER_TARANTULA = 20508; private static final int PLUNDER_TARANTULA = 20508;
private static final int CRIMSON_SPIDER2 = 22244; private static final int CRIMSON_SPIDER2 = 22244;
// Items
private static final int ANIMAL_LOVERS_LIST = 3417;
private static final int ANIMAL_SLAYERS_1ST_LIST = 3418;
private static final int ANIMAL_SLAYERS_2ND_LIST = 3419;
private static final int ANIMAL_SLAYERS_3RD_LIST = 3420;
private static final int ANIMAL_SLAYERS_4TH_LIST = 3421;
private static final int ANIMAL_SLAYERS_5TH_LIST = 3422;
private static final int ANIMAL_SLAYERS_LIST = 10164;
private static final QuestItemChanceHolder BLOODY_FANG = new QuestItemChanceHolder(3423, 50L);
private static final QuestItemChanceHolder BLOODY_CLAW = new QuestItemChanceHolder(3424, 50L);
private static final QuestItemChanceHolder BLOODY_NAIL = new QuestItemChanceHolder(3425, 50L);
private static final QuestItemChanceHolder BLOODY_KASHA_FANG = new QuestItemChanceHolder(3426, 50L);
private static final QuestItemChanceHolder BLOODY_TARANTULA_NAIL = new QuestItemChanceHolder(3427, 50L);
private static final QuestItemChanceHolder BLOODY_RED_CLAW = new QuestItemChanceHolder(10165, 50L);
// Droplist
private static final QuestDroplist DROPLIST = QuestDroplist.builder()
.addSingleDrop(LESSER_DARK_HORROR, BLOODY_NAIL, 60.0)
.addSingleDrop(PROWLER, BLOODY_NAIL, 100.0)
.addSingleDrop(GIANT_SPIDER, BLOODY_FANG, 60.0)
.addSingleDrop(DARK_HORROR, BLOODY_NAIL, 75.0)
.addSingleDrop(TALON_SPIDER, BLOODY_FANG, 75.0)
.addSingleDrop(BLADE_SPIDER, BLOODY_FANG, 100.0)
.addSingleDrop(HOOK_SPIDER, BLOODY_CLAW, 75.0)
.addSingleDrop(HUNTER_TARANTULA, BLOODY_TARANTULA_NAIL, 75.0)
.addSingleDrop(CRIMSON_SPIDER, BLOODY_CLAW, 60.0)
.addSingleDrop(PINCER_SPIDER, BLOODY_CLAW, 100.0)
.addSingleDrop(KASHA_SPIDER, BLOODY_KASHA_FANG, 60.0)
.addSingleDrop(KASHA_FANG_SPIDER, BLOODY_KASHA_FANG, 75.0)
.addSingleDrop(KASHA_BLADE_SPIDER, BLOODY_KASHA_FANG, 100.0)
.addSingleDrop(PLUNDER_TARANTULA, BLOODY_TARANTULA_NAIL, 100.0)
.addSingleDrop(CRIMSON_SPIDER2, BLOODY_RED_CLAW, 75.0)
.build();
private static final Map<Integer, Integer> MOBS_REQUIRED_ITEM = new HashMap<>();
static {
MOBS_REQUIRED_ITEM.put(LESSER_DARK_HORROR, ANIMAL_SLAYERS_3RD_LIST);
MOBS_REQUIRED_ITEM.put(PROWLER, ANIMAL_SLAYERS_3RD_LIST);
MOBS_REQUIRED_ITEM.put(GIANT_SPIDER, ANIMAL_SLAYERS_1ST_LIST);
MOBS_REQUIRED_ITEM.put(DARK_HORROR, ANIMAL_SLAYERS_3RD_LIST);
MOBS_REQUIRED_ITEM.put(TALON_SPIDER, ANIMAL_SLAYERS_1ST_LIST);
MOBS_REQUIRED_ITEM.put(BLADE_SPIDER, ANIMAL_SLAYERS_1ST_LIST);
MOBS_REQUIRED_ITEM.put(HOOK_SPIDER, ANIMAL_SLAYERS_2ND_LIST);
MOBS_REQUIRED_ITEM.put(HUNTER_TARANTULA, ANIMAL_SLAYERS_5TH_LIST);
MOBS_REQUIRED_ITEM.put(CRIMSON_SPIDER, ANIMAL_SLAYERS_2ND_LIST);
MOBS_REQUIRED_ITEM.put(PINCER_SPIDER, ANIMAL_SLAYERS_2ND_LIST);
MOBS_REQUIRED_ITEM.put(KASHA_SPIDER, ANIMAL_SLAYERS_4TH_LIST);
MOBS_REQUIRED_ITEM.put(KASHA_FANG_SPIDER, ANIMAL_SLAYERS_4TH_LIST);
MOBS_REQUIRED_ITEM.put(KASHA_BLADE_SPIDER, ANIMAL_SLAYERS_4TH_LIST);
MOBS_REQUIRED_ITEM.put(PLUNDER_TARANTULA, ANIMAL_SLAYERS_5TH_LIST);
MOBS_REQUIRED_ITEM.put(CRIMSON_SPIDER2, ANIMAL_SLAYERS_LIST);
}
// Reward
private static final int WOLF_COLLAR = 2375;
// Misc // Misc
private static final int MIN_LEVEL = 15; private static final int MIN_LEVEL = 15;
// Links // Links
private static final Map<Integer, String> LINKS = new HashMap<>(); private static final Map<Integer, String> LINKS = new HashMap<>();
static { static {
LINKS.put(1110001, "<a action=\"bypass -h Quest Q00419_GetAPet 30731-14.html\">Can be used for item transportation.</a><br>"); LINKS.put(1110001, "<a action=\"bypass -h Quest Q00419_GetAPet 30731-14.html\">Can be used for item transportation.</a><br>");
LINKS.put(1110002, "<a action=\"bypass -h Quest Q00419_GetAPet 30731-14.html\">Can help during hunting by assisting in attacks.</a><br>"); LINKS.put(1110002, "<a action=\"bypass -h Quest Q00419_GetAPet 30731-14.html\">Can help during hunting by assisting in attacks.</a><br>");
...@@ -154,7 +191,7 @@ public final class Q00419_GetAPet extends Quest { ...@@ -154,7 +191,7 @@ public final class Q00419_GetAPet extends Quest {
addStartNpc(PET_MENAGER_MARTIN); addStartNpc(PET_MENAGER_MARTIN);
addTalkId(PET_MENAGER_MARTIN, GUARD_METTY, ACCESSORY_MERCHANT_ELICE, GATEKEEPER_BELLA); addTalkId(PET_MENAGER_MARTIN, GUARD_METTY, ACCESSORY_MERCHANT_ELICE, GATEKEEPER_BELLA);
addKillId(LESSER_DARK_HORROR, PROWLER, GIANT_SPIDER, DARK_HORROR, TALON_SPIDER, BLADE_SPIDER, HOOK_SPIDER, HUNTER_TARANTULA, CRIMSON_SPIDER, PINCER_SPIDER, KASHA_SPIDER, KASHA_FANG_SPIDER, KASHA_BLADE_SPIDER, PLUNDER_TARANTULA, CRIMSON_SPIDER2); addKillId(LESSER_DARK_HORROR, PROWLER, GIANT_SPIDER, DARK_HORROR, TALON_SPIDER, BLADE_SPIDER, HOOK_SPIDER, HUNTER_TARANTULA, CRIMSON_SPIDER, PINCER_SPIDER, KASHA_SPIDER, KASHA_FANG_SPIDER, KASHA_BLADE_SPIDER, PLUNDER_TARANTULA, CRIMSON_SPIDER2);
registerQuestItems(ANIMAL_LOVERS_LIST, ANIMAL_SLAYERS_1ST_LIST, ANIMAL_SLAYERS_2ND_LIST, ANIMAL_SLAYERS_3RD_LIST, ANIMAL_SLAYERS_4TH_LIST, ANIMAL_SLAYERS_5TH_LIST, BLOODY_FANG, BLOODY_CLAW, BLOODY_NAIL, BLOODY_KASHA_FANG, BLOODY_TARANTULA_NAIL, ANIMAL_SLAYERS_LIST, BLOODY_RED_CLAW); registerQuestItems(ANIMAL_LOVERS_LIST, ANIMAL_SLAYERS_1ST_LIST, ANIMAL_SLAYERS_2ND_LIST, ANIMAL_SLAYERS_3RD_LIST, ANIMAL_SLAYERS_4TH_LIST, ANIMAL_SLAYERS_5TH_LIST, BLOODY_FANG.getId(), BLOODY_CLAW.getId(), BLOODY_NAIL.getId(), BLOODY_KASHA_FANG.getId(), BLOODY_TARANTULA_NAIL.getId(), ANIMAL_SLAYERS_LIST, BLOODY_RED_CLAW.getId());
} }
@Override @Override
...@@ -201,39 +238,39 @@ public final class Q00419_GetAPet extends Quest { ...@@ -201,39 +238,39 @@ public final class Q00419_GetAPet extends Quest {
} }
case "30731-12.html": { case "30731-12.html": {
if (player.getRace() == Race.HUMAN) { if (player.getRace() == Race.HUMAN) {
if (hasQuestItems(player, ANIMAL_SLAYERS_1ST_LIST) && (getQuestItemsCount(player, BLOODY_FANG) >= 50)) { if (hasQuestItems(player, ANIMAL_SLAYERS_1ST_LIST) && hasItemsAtLimit(player, BLOODY_FANG)) {
takeItems(player, ANIMAL_SLAYERS_1ST_LIST, -1); takeItems(player, ANIMAL_SLAYERS_1ST_LIST, -1);
takeItems(player, BLOODY_FANG, -1); takeItems(player, BLOODY_FANG.getId(), -1);
giveItems(player, ANIMAL_LOVERS_LIST, 1); giveItems(player, ANIMAL_LOVERS_LIST, 1);
} }
} else if (player.getRace() == Race.ELF) { } else if (player.getRace() == Race.ELF) {
if (hasQuestItems(player, ANIMAL_SLAYERS_2ND_LIST) && (getQuestItemsCount(player, BLOODY_CLAW) >= 50)) { if (hasQuestItems(player, ANIMAL_SLAYERS_2ND_LIST) && hasItemsAtLimit(player, BLOODY_CLAW)) {
takeItems(player, ANIMAL_SLAYERS_2ND_LIST, -1); takeItems(player, ANIMAL_SLAYERS_2ND_LIST, -1);
takeItems(player, BLOODY_CLAW, -1); takeItems(player, BLOODY_CLAW.getId(), -1);
giveItems(player, ANIMAL_LOVERS_LIST, 1); giveItems(player, ANIMAL_LOVERS_LIST, 1);
} }
} else if (player.getRace() == Race.DARK_ELF) { } else if (player.getRace() == Race.DARK_ELF) {
if (hasQuestItems(player, ANIMAL_SLAYERS_3RD_LIST) && (getQuestItemsCount(player, BLOODY_NAIL) >= 50)) { if (hasQuestItems(player, ANIMAL_SLAYERS_3RD_LIST) && hasItemsAtLimit(player, BLOODY_NAIL)) {
takeItems(player, ANIMAL_SLAYERS_3RD_LIST, -1); takeItems(player, ANIMAL_SLAYERS_3RD_LIST, -1);
takeItems(player, BLOODY_NAIL, -1); takeItems(player, BLOODY_NAIL.getId(), -1);
giveItems(player, ANIMAL_LOVERS_LIST, 1); giveItems(player, ANIMAL_LOVERS_LIST, 1);
} }
} else if (player.getRace() == Race.ORC) { } else if (player.getRace() == Race.ORC) {
if (hasQuestItems(player, ANIMAL_SLAYERS_4TH_LIST) && (getQuestItemsCount(player, BLOODY_KASHA_FANG) >= 50)) { if (hasQuestItems(player, ANIMAL_SLAYERS_4TH_LIST) && hasItemsAtLimit(player, BLOODY_KASHA_FANG)) {
takeItems(player, ANIMAL_SLAYERS_4TH_LIST, -1); takeItems(player, ANIMAL_SLAYERS_4TH_LIST, -1);
takeItems(player, BLOODY_KASHA_FANG, -1); takeItems(player, BLOODY_KASHA_FANG.getId(), -1);
giveItems(player, ANIMAL_LOVERS_LIST, 1); giveItems(player, ANIMAL_LOVERS_LIST, 1);
} }
} else if (player.getRace() == Race.DWARF) { } else if (player.getRace() == Race.DWARF) {
if (hasQuestItems(player, ANIMAL_SLAYERS_5TH_LIST) && (getQuestItemsCount(player, BLOODY_TARANTULA_NAIL) >= 50)) { if (hasQuestItems(player, ANIMAL_SLAYERS_5TH_LIST) && hasItemsAtLimit(player, BLOODY_TARANTULA_NAIL)) {
takeItems(player, ANIMAL_SLAYERS_5TH_LIST, -1); takeItems(player, ANIMAL_SLAYERS_5TH_LIST, -1);
takeItems(player, BLOODY_TARANTULA_NAIL, -1); takeItems(player, BLOODY_TARANTULA_NAIL.getId(), -1);
giveItems(player, ANIMAL_LOVERS_LIST, 1); giveItems(player, ANIMAL_LOVERS_LIST, 1);
} }
} else if (player.getRace() == Race.KAMAEL) { } else if (player.getRace() == Race.KAMAEL) {
if (hasQuestItems(player, ANIMAL_SLAYERS_LIST) && (getQuestItemsCount(player, BLOODY_RED_CLAW) >= 50)) { if (hasQuestItems(player, ANIMAL_SLAYERS_LIST) && hasItemsAtLimit(player, BLOODY_RED_CLAW)) {
takeItems(player, ANIMAL_SLAYERS_LIST, -1); takeItems(player, ANIMAL_SLAYERS_LIST, -1);
takeItems(player, BLOODY_RED_CLAW, -1); takeItems(player, BLOODY_RED_CLAW.getId(), -1);
giveItems(player, ANIMAL_LOVERS_LIST, 1); giveItems(player, ANIMAL_LOVERS_LIST, 1);
} }
} }
...@@ -315,203 +352,9 @@ public final class Q00419_GetAPet extends Quest { ...@@ -315,203 +352,9 @@ public final class Q00419_GetAPet extends Quest {
@Override @Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) { public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) {
final QuestState qs = getQuestState(killer, false); final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isStarted() && Util.checkIfInRange(1500, npc, killer, true)) { if ((qs != null) && qs.isStarted() && Util.checkIfInRange(1500, npc, qs.getPlayer(), true)) {
switch (npc.getId()) { if (hasQuestItems(qs.getPlayer(), MOBS_REQUIRED_ITEM.get(npc.getId()))) {
case LESSER_DARK_HORROR: { giveItemRandomly(qs.getPlayer(), npc, DROPLIST.get(npc), true);
if (hasQuestItems(killer, ANIMAL_SLAYERS_3RD_LIST) && (getQuestItemsCount(killer, BLOODY_NAIL) < 50)) {
if (getRandom(100) < 60) {
giveItems(killer, BLOODY_NAIL, 1);
if (getQuestItemsCount(killer, BLOODY_NAIL) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case PROWLER: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_3RD_LIST) && (getQuestItemsCount(killer, BLOODY_NAIL) < 50)) {
if (getRandom(100) < 100) {
giveItems(killer, BLOODY_NAIL, 1);
if (getQuestItemsCount(killer, BLOODY_NAIL) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case GIANT_SPIDER: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_1ST_LIST)) {
if ((getQuestItemsCount(killer, BLOODY_FANG) < 50) && (getRandom(100) < 60)) {
giveItems(killer, BLOODY_FANG, 1);
if (getQuestItemsCount(killer, BLOODY_FANG) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case DARK_HORROR: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_3RD_LIST)) {
if ((getQuestItemsCount(killer, BLOODY_NAIL) < 50) && (getRandom(100) < 75)) {
giveItems(killer, BLOODY_NAIL, 1);
if (getQuestItemsCount(killer, BLOODY_NAIL) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case TALON_SPIDER: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_1ST_LIST)) {
if ((getQuestItemsCount(killer, BLOODY_FANG) < 50) && (getRandom(100) < 75)) {
giveItems(killer, BLOODY_FANG, 1);
if (getQuestItemsCount(killer, BLOODY_FANG) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case BLADE_SPIDER: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_1ST_LIST)) {
if ((getQuestItemsCount(killer, BLOODY_FANG) < 50) && (getRandom(100) < 100)) {
giveItems(killer, BLOODY_FANG, 1);
if (getQuestItemsCount(killer, BLOODY_FANG) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case HOOK_SPIDER: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_2ND_LIST)) {
if ((getQuestItemsCount(killer, BLOODY_CLAW) < 50) && (getRandom(100) < 75)) {
giveItems(killer, BLOODY_CLAW, 1);
if (getQuestItemsCount(killer, BLOODY_CLAW) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case HUNTER_TARANTULA: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_5TH_LIST)) {
if ((getQuestItemsCount(killer, BLOODY_TARANTULA_NAIL) < 50) && (getRandom(100) < 75)) {
giveItems(killer, BLOODY_TARANTULA_NAIL, 1);
if (getQuestItemsCount(killer, BLOODY_TARANTULA_NAIL) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case CRIMSON_SPIDER: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_2ND_LIST) && (getQuestItemsCount(killer, BLOODY_CLAW) < 50)) {
if (getRandom(100) < 60) {
giveItems(killer, BLOODY_CLAW, 1);
if (getQuestItemsCount(killer, BLOODY_CLAW) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case PINCER_SPIDER: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_2ND_LIST)) {
if ((getQuestItemsCount(killer, BLOODY_CLAW) < 50) && (getRandom(100) < 100)) {
giveItems(killer, BLOODY_CLAW, 1);
if (getQuestItemsCount(killer, BLOODY_CLAW) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case KASHA_SPIDER: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_4TH_LIST)) {
if ((getQuestItemsCount(killer, BLOODY_KASHA_FANG) < 50) && (getRandom(100) < 60)) {
giveItems(killer, BLOODY_KASHA_FANG, 1);
if (getQuestItemsCount(killer, BLOODY_KASHA_FANG) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case KASHA_FANG_SPIDER: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_4TH_LIST) && (getQuestItemsCount(killer, BLOODY_KASHA_FANG) < 50)) {
if (getRandom(100) < 75) {
giveItems(killer, BLOODY_KASHA_FANG, 1);
if (getQuestItemsCount(killer, BLOODY_KASHA_FANG) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case KASHA_BLADE_SPIDER: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_4TH_LIST)) {
if ((getQuestItemsCount(killer, BLOODY_KASHA_FANG) < 50) && (getRandom(100) < 100)) {
giveItems(killer, BLOODY_KASHA_FANG, 1);
if (getQuestItemsCount(killer, BLOODY_KASHA_FANG) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case PLUNDER_TARANTULA: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_5TH_LIST)) {
if ((getQuestItemsCount(killer, BLOODY_TARANTULA_NAIL) < 50) && (getRandom(100) < 100)) {
giveItems(killer, BLOODY_TARANTULA_NAIL, 1);
if (getQuestItemsCount(killer, BLOODY_TARANTULA_NAIL) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
case CRIMSON_SPIDER2: {
if (hasQuestItems(killer, ANIMAL_SLAYERS_LIST)) {
if ((getQuestItemsCount(killer, BLOODY_RED_CLAW) < 50) && (getRandom(100) < 75)) {
giveItems(killer, BLOODY_RED_CLAW, 1);
if (getQuestItemsCount(killer, BLOODY_RED_CLAW) >= 50) {
playSound(killer, Sound.ITEMSOUND_QUEST_MIDDLE);
} else {
playSound(killer, Sound.ITEMSOUND_QUEST_ITEMGET);
}
}
}
break;
}
} }
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
...@@ -533,8 +376,8 @@ public final class Q00419_GetAPet extends Quest { ...@@ -533,8 +376,8 @@ public final class Q00419_GetAPet extends Quest {
switch (npc.getId()) { switch (npc.getId()) {
case PET_MENAGER_MARTIN: { case PET_MENAGER_MARTIN: {
if (hasQuestItems(player, ANIMAL_SLAYERS_LIST)) { if (hasQuestItems(player, ANIMAL_SLAYERS_LIST)) {
if (getQuestItemsCount(player, BLOODY_RED_CLAW) < 50) { if (!hasItemsAtLimit(player, BLOODY_RED_CLAW)) {
if (!hasQuestItems(player, BLOODY_RED_CLAW)) { if (!hasQuestItems(player, BLOODY_RED_CLAW.getId())) {
htmltext = "30731-09.html"; htmltext = "30731-09.html";
} else { } else {
htmltext = "30731-10.html"; htmltext = "30731-10.html";
...@@ -543,8 +386,8 @@ public final class Q00419_GetAPet extends Quest { ...@@ -543,8 +386,8 @@ public final class Q00419_GetAPet extends Quest {
htmltext = "30731-11.html"; htmltext = "30731-11.html";
} }
} else if (hasQuestItems(player, ANIMAL_SLAYERS_1ST_LIST)) { } else if (hasQuestItems(player, ANIMAL_SLAYERS_1ST_LIST)) {
if (getQuestItemsCount(player, BLOODY_FANG) < 50) { if (!hasItemsAtLimit(player, BLOODY_FANG)) {
if (!hasQuestItems(player, BLOODY_FANG)) { if (!hasQuestItems(player, BLOODY_FANG.getId())) {
htmltext = "30731-09.html"; htmltext = "30731-09.html";
} else { } else {
htmltext = "30731-10.html"; htmltext = "30731-10.html";
...@@ -553,8 +396,8 @@ public final class Q00419_GetAPet extends Quest { ...@@ -553,8 +396,8 @@ public final class Q00419_GetAPet extends Quest {
htmltext = "30731-11.html"; htmltext = "30731-11.html";
} }
} else if (hasQuestItems(player, ANIMAL_SLAYERS_2ND_LIST)) { } else if (hasQuestItems(player, ANIMAL_SLAYERS_2ND_LIST)) {
if (getQuestItemsCount(player, BLOODY_CLAW) < 50) { if (!hasItemsAtLimit(player, BLOODY_CLAW)) {
if (!hasQuestItems(player, BLOODY_CLAW)) { if (!hasQuestItems(player, BLOODY_CLAW.getId())) {
htmltext = "30731-09.html"; htmltext = "30731-09.html";
} else { } else {
htmltext = "30731-10.html"; htmltext = "30731-10.html";
...@@ -563,8 +406,8 @@ public final class Q00419_GetAPet extends Quest { ...@@ -563,8 +406,8 @@ public final class Q00419_GetAPet extends Quest {
htmltext = "30731-11.html"; htmltext = "30731-11.html";
} }
} else if (hasQuestItems(player, ANIMAL_SLAYERS_3RD_LIST)) { } else if (hasQuestItems(player, ANIMAL_SLAYERS_3RD_LIST)) {
if (getQuestItemsCount(player, BLOODY_NAIL) < 50) { if (!hasItemsAtLimit(player, BLOODY_NAIL)) {
if (!hasQuestItems(player, BLOODY_NAIL)) { if (!hasQuestItems(player, BLOODY_NAIL.getId())) {
htmltext = "30731-09.html"; htmltext = "30731-09.html";
} else { } else {
htmltext = "30731-10.html"; htmltext = "30731-10.html";
...@@ -573,8 +416,8 @@ public final class Q00419_GetAPet extends Quest { ...@@ -573,8 +416,8 @@ public final class Q00419_GetAPet extends Quest {
htmltext = "30731-11.html"; htmltext = "30731-11.html";
} }
} else if (hasQuestItems(player, ANIMAL_SLAYERS_4TH_LIST)) { } else if (hasQuestItems(player, ANIMAL_SLAYERS_4TH_LIST)) {
if (getQuestItemsCount(player, BLOODY_KASHA_FANG) < 50) { if (!hasItemsAtLimit(player, BLOODY_KASHA_FANG)) {
if (!hasQuestItems(player, BLOODY_KASHA_FANG)) { if (!hasQuestItems(player, BLOODY_KASHA_FANG.getId())) {
htmltext = "30731-09.html"; htmltext = "30731-09.html";
} else { } else {
htmltext = "30731-10.html"; htmltext = "30731-10.html";
...@@ -583,8 +426,8 @@ public final class Q00419_GetAPet extends Quest { ...@@ -583,8 +426,8 @@ public final class Q00419_GetAPet extends Quest {
htmltext = "30731-11.html"; htmltext = "30731-11.html";
} }
} else if (hasQuestItems(player, ANIMAL_SLAYERS_5TH_LIST)) { } else if (hasQuestItems(player, ANIMAL_SLAYERS_5TH_LIST)) {
if (getQuestItemsCount(player, BLOODY_TARANTULA_NAIL) < 50) { if (!hasItemsAtLimit(player, BLOODY_TARANTULA_NAIL)) {
if (!hasQuestItems(player, BLOODY_TARANTULA_NAIL)) { if (!hasQuestItems(player, BLOODY_TARANTULA_NAIL.getId())) {
htmltext = "30731-09.html"; htmltext = "30731-09.html";
} else { } else {
htmltext = "30731-10.html"; htmltext = "30731-10.html";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment