Various quest NPE fixes.

This commit is contained in:
MobiusDev
2018-12-29 01:59:15 +00:00
parent 8742d6cc64
commit cc4296b8a1
43 changed files with 185 additions and 5 deletions

View File

@ -213,8 +213,12 @@ public class Q039_RedEyedInvaders extends Quest
if ((partyMember != null) && (npcId != ARANEID)) if ((partyMember != null) && (npcId != ARANEID))
{ {
final QuestState st = partyMember.getQuestState(qn); final QuestState st = partyMember.getQuestState(qn);
final int[] list = FIRST_DP.get(npcId); if (st == null)
{
return null;
}
final int[] list = FIRST_DP.get(npcId);
if (st.dropItems(list[0], 1, 100, 500000) && (st.getQuestItemsCount(list[1]) == 100)) if (st.dropItems(list[0], 1, 100, 500000) && (st.getQuestItemsCount(list[1]) == 100))
{ {
st.set("cond", "3"); st.set("cond", "3");

View File

@ -239,6 +239,10 @@ public class Q111_ElrokianHuntersProof extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
switch (npc.getNpcId()) switch (npc.getNpcId())
{ {

View File

@ -136,6 +136,10 @@ public class Q298_LizardmensConspiracy extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
switch (npc.getNpcId()) switch (npc.getNpcId())
{ {

View File

@ -208,6 +208,10 @@ public class Q299_GatherIngredientsForPie extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(HONEY_POUCH, 1, 100, (npc.getNpcId() == 20934) ? 571000 : 625000)) if (st.dropItems(HONEY_POUCH, 1, 100, (npc.getNpcId() == 20934) ? 571000 : 625000))
{ {

View File

@ -141,6 +141,10 @@ public class Q300_HuntingLetoLizardman extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(BRACELET, 1, 60, CHANCES.get(npc.getNpcId()))) if (st.dropItems(BRACELET, 1, 60, CHANCES.get(npc.getNpcId())))
{ {

View File

@ -204,6 +204,10 @@ public class Q355_FamilyHonor extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
final int[] chances = CHANCES.get(npc.getNpcId()); final int[] chances = CHANCES.get(npc.getNpcId());
final int random = Rnd.get(100); final int random = Rnd.get(100);

View File

@ -181,6 +181,10 @@ public class Q369_CollectorOfJewels extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
final int cond = st.getInt("cond"); final int cond = st.getInt("cond");
final int[] drop = DROPLIST.get(npc.getNpcId()); final int[] drop = DROPLIST.get(npc.getNpcId());

View File

@ -201,6 +201,10 @@ public class Q371_ShriekOfGhosts extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
final int[] chances = CHANCES.get(npc.getNpcId()); final int[] chances = CHANCES.get(npc.getNpcId());
final int random = Rnd.get(100); final int random = Rnd.get(100);

View File

@ -428,9 +428,12 @@ public class Q373_SupplierOfReagents extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
final int[] drop = DROPLIST.get(npc.getNpcId()); final int[] drop = DROPLIST.get(npc.getNpcId());
if (drop[2] == 0) if (drop[2] == 0)
{ {
st.dropItems(drop[0], 1, 0, drop[1]); st.dropItems(drop[0], 1, 0, drop[1]);

View File

@ -215,6 +215,10 @@ public class Q374_WhisperOfDreams_Part1 extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
st.dropItems((npc.getNpcId() == CAVE_BEAST) ? CAVE_BEAST_TOOTH : DEATH_WAVE_LIGHT, 1, 65, 500000); st.dropItems((npc.getNpcId() == CAVE_BEAST) ? CAVE_BEAST_TOOTH : DEATH_WAVE_LIGHT, 1, 65, 500000);

View File

@ -131,6 +131,10 @@ public class Q375_WhisperOfDreams_Part2 extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
switch (npc.getNpcId()) switch (npc.getNpcId())
{ {

View File

@ -201,6 +201,10 @@ public class Q376_ExplorationOfTheGiantsCave_Part1 extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
st.dropItems(PARCHMENT, 1, 0, 20000); st.dropItems(PARCHMENT, 1, 0, 20000);

View File

@ -414,6 +414,11 @@ public class Q426_QuestForFishingShot extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
int npcId = npc.getNpcId(); int npcId = npc.getNpcId();
int drop = 0; int drop = 0;
int chance = 0; int chance = 0;

View File

@ -123,6 +123,10 @@ public class Q431_WeddingMarch extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(SILVER_CRYSTAL, 1, 50, 500000)) if (st.dropItems(SILVER_CRYSTAL, 1, 50, 500000))
{ {

View File

@ -109,6 +109,10 @@ public class Q432_BirthdayPartySong extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(RED_CRYSTAL, 1, 50, 500000)) if (st.dropItems(RED_CRYSTAL, 1, 50, 500000))
{ {

View File

@ -158,6 +158,10 @@ public class Q601_WatchingEyes extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(PROOF_OF_AVENGER, 1, 100, 500000)) if (st.dropItems(PROOF_OF_AVENGER, 1, 100, 500000))
{ {

View File

@ -165,6 +165,10 @@ public class Q602_ShadowOfLight extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(EYE_OF_DARKNESS, 1, 100, (npc.getNpcId() == 21299) ? 450000 : 500000)) if (st.dropItems(EYE_OF_DARKNESS, 1, 100, (npc.getNpcId() == 21299) ? 450000 : 500000))
{ {

View File

@ -257,6 +257,10 @@ public class Q603_DaimonTheWhiteEyed_Part1 extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(EVIL_SPIRIT_BEADS, 1, 200, CHANCES.get(npc.getNpcId()))) if (st.dropItems(EVIL_SPIRIT_BEADS, 1, 200, CHANCES.get(npc.getNpcId())))
{ {

View File

@ -244,6 +244,11 @@ public class Q604_DaimonTheWhiteEyed_Part2 extends Quest
for (L2PcInstance partyMember : getPartyMembers(player, npc, "cond", "2")) for (L2PcInstance partyMember : getPartyMembers(player, npc, "cond", "2"))
{ {
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
continue;
}
st.set("cond", "3"); st.set("cond", "3");
st.playSound(QuestState.SOUND_MIDDLE); st.playSound(QuestState.SOUND_MIDDLE);
st.giveItems(ESSENCE_OF_DAIMON, 1); st.giveItems(ESSENCE_OF_DAIMON, 1);

View File

@ -123,6 +123,11 @@ public class Q607_ProveYourCourage extends Quest
if (partyMember.getAllianceWithVarkaKetra() >= 3) if (partyMember.getAllianceWithVarkaKetra() >= 3)
{ {
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
continue;
}
if (st.hasQuestItems(KETRA_ALLIANCE_3)) if (st.hasQuestItems(KETRA_ALLIANCE_3))
{ {
st.set("cond", "2"); st.set("cond", "2");

View File

@ -126,6 +126,11 @@ public class Q608_SlayTheEnemyCommander extends Quest
if (partyMember.getAllianceWithVarkaKetra() >= 4) if (partyMember.getAllianceWithVarkaKetra() >= 4)
{ {
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
continue;
}
if (st.hasQuestItems(KETRA_ALLIANCE_4)) if (st.hasQuestItems(KETRA_ALLIANCE_4))
{ {
st.set("cond", "2"); st.set("cond", "2");

View File

@ -224,6 +224,11 @@ public class Q610_MagicalPowerOfWater_Part2 extends Quest
for (L2PcInstance partyMember : getPartyMembers(player, npc, "cond", "2")) for (L2PcInstance partyMember : getPartyMembers(player, npc, "cond", "2"))
{ {
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
continue;
}
st.set("cond", "3"); st.set("cond", "3");
st.playSound(QuestState.SOUND_MIDDLE); st.playSound(QuestState.SOUND_MIDDLE);
st.giveItems(ICE_HEART_OF_ASHUTAR, 1); st.giveItems(ICE_HEART_OF_ASHUTAR, 1);

View File

@ -123,6 +123,11 @@ public class Q613_ProveYourCourage extends Quest
if (partyMember.getAllianceWithVarkaKetra() <= -3) if (partyMember.getAllianceWithVarkaKetra() <= -3)
{ {
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
continue;
}
if (st.hasQuestItems(VARKA_ALLIANCE_3)) if (st.hasQuestItems(VARKA_ALLIANCE_3))
{ {
st.set("cond", "2"); st.set("cond", "2");

View File

@ -126,6 +126,11 @@ public class Q614_SlayTheEnemyCommander extends Quest
if (partyMember.getAllianceWithVarkaKetra() <= -4) if (partyMember.getAllianceWithVarkaKetra() <= -4)
{ {
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
continue;
}
if (st.hasQuestItems(VARKA_ALLIANCE_4)) if (st.hasQuestItems(VARKA_ALLIANCE_4))
{ {
st.set("cond", "2"); st.set("cond", "2");

View File

@ -235,6 +235,11 @@ public class Q616_MagicalPowerOfFire_Part2 extends Quest
for (L2PcInstance partyMember : getPartyMembers(player, npc, "cond", "2")) for (L2PcInstance partyMember : getPartyMembers(player, npc, "cond", "2"))
{ {
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
continue;
}
st.set("cond", "3"); st.set("cond", "3");
st.playSound(QuestState.SOUND_MIDDLE); st.playSound(QuestState.SOUND_MIDDLE);
st.giveItems(FIRE_HEART_OF_NASTRON, 1); st.giveItems(FIRE_HEART_OF_NASTRON, 1);

View File

@ -148,6 +148,10 @@ public class Q618_IntoTheFlame extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(VACUALITE_ORE, 1, 50, 500000)) if (st.dropItems(VACUALITE_ORE, 1, 50, 500000))
{ {

View File

@ -156,6 +156,10 @@ public class Q619_RelicsOfTheOldEmpire extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
st.dropItemsAlways(RELICS, 1, 0); st.dropItemsAlways(RELICS, 1, 0);
st.dropItems(ENTRANCE, 1, 0, 50000); st.dropItems(ENTRANCE, 1, 0, 50000);

View File

@ -159,6 +159,10 @@ public class Q623_TheFinestFood extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
switch (npc.getNpcId()) switch (npc.getNpcId())
{ {

View File

@ -140,6 +140,10 @@ public class Q624_TheFinestIngredients_Part1 extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
switch (npc.getNpcId()) switch (npc.getNpcId())
{ {

View File

@ -236,6 +236,10 @@ public class Q625_TheFinestIngredients_Part2 extends Quest
for (L2PcInstance partyMember : getPartyMembers(player, npc, "cond", "2")) for (L2PcInstance partyMember : getPartyMembers(player, npc, "cond", "2"))
{ {
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
continue;
}
st.set("cond", "3"); st.set("cond", "3");
st.playSound(QuestState.SOUND_MIDDLE); st.playSound(QuestState.SOUND_MIDDLE);

View File

@ -174,6 +174,10 @@ public class Q628_HuntOfTheGoldenRamMercenaryForce extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
final int cond = st.getInt("cond"); final int cond = st.getInt("cond");
final int npcId = npc.getNpcId(); final int npcId = npc.getNpcId();

View File

@ -206,6 +206,10 @@ public class Q631_DeliciousTopChoiceMeat extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(TOP_QUALITY_MEAT, 1, 120, CHANCES.get(npc.getNpcId()))) if (st.dropItems(TOP_QUALITY_MEAT, 1, 120, CHANCES.get(npc.getNpcId())))
{ {

View File

@ -151,6 +151,10 @@ public class Q632_NecromancersRequest extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
for (int undead : UNDEADS) for (int undead : UNDEADS)
{ {

View File

@ -185,7 +185,11 @@ public class Q633_InTheForgottenVillage extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(RIB_BONE, 1, 200, MOBS.get(npcId))) if (st.dropItems(RIB_BONE, 1, 200, MOBS.get(npcId)))
{ {
st.set("cond", "2"); st.set("cond", "2");

View File

@ -137,8 +137,12 @@ public class Q637_ThroughTheGateOnceMore extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if ((st != null) && st.dropItems(NECROMANCER_HEART, 1, 10, 400000)) if (st.dropItems(NECROMANCER_HEART, 1, 10, 400000))
{ {
st.set("cond", "2"); st.set("cond", "2");
} }

View File

@ -134,6 +134,11 @@ public class Q641_AttackSailren extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(GAZKH_FRAGMENT, 1, 30, 50000)) if (st.dropItems(GAZKH_FRAGMENT, 1, 30, 50000))
{ {
st.set("cond", "2"); st.set("cond", "2");

View File

@ -147,6 +147,10 @@ public class Q644_GraveRobberAnnihilation extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(ORC_GRAVE_GOODS, 1, 120, 500000)) if (st.dropItems(ORC_GRAVE_GOODS, 1, 120, 500000))
{ {

View File

@ -145,6 +145,10 @@ public class Q645_GhostsOfBatur extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(CURSED_GRAVE_GOODS, 1, 180, 750000)) if (st.dropItems(CURSED_GRAVE_GOODS, 1, 180, 750000))
{ {

View File

@ -139,6 +139,10 @@ public class Q646_SignsOfRevolt extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(CURSED_DOLL, 1, 180, 750000)) if (st.dropItems(CURSED_DOLL, 1, 180, 750000))
{ {

View File

@ -117,6 +117,10 @@ public class Q647_InfluxOfMachines extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
if (st.dropItems(DESTROYED_GOLEM_SHARD, 1, 500, 300000)) if (st.dropItems(DESTROYED_GOLEM_SHARD, 1, 500, 300000))
{ {

View File

@ -253,6 +253,10 @@ public class Q660_AidingTheFloranVillage extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
switch (npc.getNpcId()) switch (npc.getNpcId())
{ {

View File

@ -132,6 +132,10 @@ public class Q688_DefeatTheElrokianRaiders extends Quest
} }
QuestState st = partyMember.getQuestState(qn); QuestState st = partyMember.getQuestState(qn);
if (st == null)
{
return null;
}
st.dropItems(DINOSAUR_FANG_NECKLACE, 1, 0, 500000); st.dropItems(DINOSAUR_FANG_NECKLACE, 1, 0, 500000);

View File

@ -1623,6 +1623,10 @@ public class Quest extends ManagedScript
// Return random candidate. // Return random candidate.
final List<L2PcInstance> members = getPartyMembers(player, npc, var, value); final List<L2PcInstance> members = getPartyMembers(player, npc, var, value);
if (members.isEmpty())
{
return player;
}
return members.get(Rnd.get(members.size())); return members.get(Rnd.get(members.size()));
} }
@ -1696,7 +1700,7 @@ public class Quest extends ManagedScript
} }
// if there was no match, return null... // if there was no match, return null...
if (candidates.size() == 0) if (candidates.isEmpty())
{ {
return null; return null;
} }