diff --git a/dist/game/data/scripts/quests/Q00234_FatesWhisper/Q00234_FatesWhisper.java b/dist/game/data/scripts/quests/Q00234_FatesWhisper/Q00234_FatesWhisper.java index 23f129c855fd0c12dc8cc5c4b505a56b9d5348b9..6b8b4b98be9b202efe95a1ae4e3f013a7be51fa7 100644 --- a/dist/game/data/scripts/quests/Q00234_FatesWhisper/Q00234_FatesWhisper.java +++ b/dist/game/data/scripts/quests/Q00234_FatesWhisper/Q00234_FatesWhisper.java @@ -18,9 +18,6 @@ */ package quests.Q00234_FatesWhisper; -import java.util.ArrayList; -import java.util.List; - import com.l2jserver.gameserver.enums.QuestSound; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; @@ -29,7 +26,6 @@ import com.l2jserver.gameserver.model.quest.QuestState; 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; /** * Fate's Whisper (234) @@ -231,11 +227,15 @@ public final class Q00234_FatesWhisper extends Quest { return "30833-01.html"; } - if (qs.isMemoState(8) && !qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && !qs.hasQuestItems(Q_BLOODY_FABRIC_Q0234, Q_WHITE_FABRIC_Q0234)) + + final long bloodyFabricCount = qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234); + final long whiteFabricCount = qs.getQuestItemsCount(Q_WHITE_FABRIC_Q0234); + final long whiteBloodyFabricCount = bloodyFabricCount + whiteFabricCount; + if (qs.isMemoState(8) && !qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && (whiteBloodyFabricCount <= 0)) { return "30833-03.html"; } - if (qs.isMemoState(8) && qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && !qs.hasQuestItems(Q_BLOODY_FABRIC_Q0234, Q_WHITE_FABRIC_Q0234)) + if (qs.isMemoState(8) && qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && (whiteBloodyFabricCount <= 0)) { qs.giveItems(Q_MAESTRO_REORINS_MOLD, 1); qs.takeItems(Q_RED_PIPETTE_KNIFE, 1); @@ -244,11 +244,11 @@ public final class Q00234_FatesWhisper extends Quest qs.showQuestionMark(234); return "30833-04.html"; } - if (qs.isMemoState(8) && !qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && (qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234) < 30) && ((qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234) + qs.getQuestItemsCount(Q_WHITE_FABRIC_Q0234)) >= 30)) + if (qs.isMemoState(8) && !qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && (bloodyFabricCount < 30) && (whiteBloodyFabricCount >= 30)) { return "30833-03c.html"; } - if (qs.isMemoState(8) && !qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && (qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234) >= 30) && ((qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234) + qs.getQuestItemsCount(Q_WHITE_FABRIC_Q0234)) >= 30)) + if (qs.isMemoState(8) && !qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && (bloodyFabricCount >= 30) && (whiteBloodyFabricCount >= 30)) { qs.giveItems(Q_MAESTRO_REORINS_MOLD, 1); qs.takeItems(Q_BLOODY_FABRIC_Q0234, -1); @@ -257,9 +257,9 @@ public final class Q00234_FatesWhisper extends Quest qs.showQuestionMark(234); return "30833-03d.html"; } - if (qs.isMemoState(8) && !qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && ((qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234) + qs.getQuestItemsCount(Q_WHITE_FABRIC_Q0234)) < 30) && ((qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234) + qs.getQuestItemsCount(Q_WHITE_FABRIC_Q0234)) > 0)) + if (qs.isMemoState(8) && !qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && (whiteBloodyFabricCount < 30) && (whiteBloodyFabricCount > 0)) { - qs.giveItems(Q_WHITE_FABRIC_Q0234, 30 - qs.getQuestItemsCount(Q_WHITE_FABRIC_Q0234)); + qs.giveItems(Q_WHITE_FABRIC_Q0234, 30 - whiteFabricCount); qs.takeItems(Q_BLOODY_FABRIC_Q0234, -1); return "30833-03e.html"; } @@ -453,7 +453,7 @@ public final class Q00234_FatesWhisper extends Quest qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET); return "31028-01.html"; } - if ((qs.getMemoState() != 2) || qs.hasQuestItems(Q_INFERNIUM_SCEPTER_1)) + if (!qs.isMemoState(2) || qs.hasQuestItems(Q_INFERNIUM_SCEPTER_1)) { return "31028-02.html"; } @@ -467,7 +467,7 @@ public final class Q00234_FatesWhisper extends Quest qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET); return "31029-01.html"; } - if ((qs.getMemoState() != 2) || qs.hasQuestItems(Q_INFERNIUM_SCEPTER_2)) + if (!qs.isMemoState(2) || qs.hasQuestItems(Q_INFERNIUM_SCEPTER_2)) { return "31029-02.html"; } @@ -481,7 +481,7 @@ public final class Q00234_FatesWhisper extends Quest qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET); return "31030-01.html"; } - if ((qs.getMemoState() != 2) || qs.hasQuestItems(Q_INFERNIUM_SCEPTER_3)) + if (!qs.isMemoState(2) || qs.hasQuestItems(Q_INFERNIUM_SCEPTER_3)) { return "31030-02.html"; } @@ -557,7 +557,7 @@ public final class Q00234_FatesWhisper extends Quest } case 3: { - if ((qs.getMemoState() == 4) && !qs.hasQuestItems(Q_INFERNIUM_VARNISH)) + if (qs.isMemoState(4) && !qs.hasQuestItems(Q_INFERNIUM_VARNISH)) { qs.giveItems(Q_INFERNIUM_VARNISH, 1); return "30182-04.html"; @@ -574,7 +574,7 @@ public final class Q00234_FatesWhisper extends Quest { if (qs.isMemoState(7)) { - return "30182-02.html"; + return "30183-02.html"; } break; } @@ -991,66 +991,65 @@ public final class Q00234_FatesWhisper extends Quest } } } - } return htmltext; } - private boolean calculateReward(QuestState qs, L2PcInstance player, int REWARD) + private boolean calculateReward(QuestState qs, L2PcInstance player, int reward) { switch (qs.getMemoState()) { case 11: - return getReward(qs, player, SWORD_OF_DAMASCUS, SWORD_OF_DAMASCUS_FOCUS, SWORD_OF_DAMASCUS_CRT_DAMAGE, SWORD_OF_DAMASCUS_HASTE, REWARD); + return getReward(qs, player, SWORD_OF_DAMASCUS, SWORD_OF_DAMASCUS_FOCUS, SWORD_OF_DAMASCUS_CRT_DAMAGE, SWORD_OF_DAMASCUS_HASTE, reward); case 12: - return getReward(qs, player, HAZARD_BOW, HAZARD_BOW_GUIDENCE, HAZARD_BOW_QUICKRECOVERY, HAZARD_BOW_CHEAPSHOT, REWARD); + return getReward(qs, player, HAZARD_BOW, HAZARD_BOW_GUIDENCE, HAZARD_BOW_QUICKRECOVERY, HAZARD_BOW_CHEAPSHOT, reward); case 13: - return getReward(qs, player, LANCIA, LANCIA_ANGER, LANCIA_CRT_STUN, LANCIA_LONGBLOW, REWARD); + return getReward(qs, player, LANCIA, LANCIA_ANGER, LANCIA_CRT_STUN, LANCIA_LONGBLOW, reward); case 14: - return getReward(qs, player, ART_OF_BATTLE_AXE, ART_OF_BATTLE_AXE_HEALTH, ART_OF_BATTLE_AXE_RSK_FOCUS, ART_OF_BATTLE_AXE_HASTE, REWARD); + return getReward(qs, player, ART_OF_BATTLE_AXE, ART_OF_BATTLE_AXE_HEALTH, ART_OF_BATTLE_AXE_RSK_FOCUS, ART_OF_BATTLE_AXE_HASTE, reward); case 15: - return getReward(qs, player, STAFF_OF_EVIL_SPRIT, STAFF_OF_EVIL_SPRIT_MAGICFOCUS, STAFF_OF_EVIL_SPRIT_MAGICBLESSTHEBODY, STAFF_OF_EVIL_SPRIT_MAGICPOISON, REWARD); + return getReward(qs, player, STAFF_OF_EVIL_SPRIT, STAFF_OF_EVIL_SPRIT_MAGICFOCUS, STAFF_OF_EVIL_SPRIT_MAGICBLESSTHEBODY, STAFF_OF_EVIL_SPRIT_MAGICPOISON, reward); case 16: - return getReward(qs, player, DEMONS_SWORD, DEMONS_SWORD_CRT_BLEED, DEMONS_SWORD_CRT_POISON, DEMONS_SWORD_MIGHTMOTAL, REWARD); + return getReward(qs, player, DEMONS_SWORD, DEMONS_SWORD_CRT_BLEED, DEMONS_SWORD_CRT_POISON, DEMONS_SWORD_MIGHTMOTAL, reward); case 17: - return getReward(qs, player, BELLION_CESTUS, BELLION_CESTUS_CRT_DRAIN, BELLION_CESTUS_CRT_POISON, BELLION_CESTUS_RSK_HASTE, REWARD); + return getReward(qs, player, BELLION_CESTUS, BELLION_CESTUS_CRT_DRAIN, BELLION_CESTUS_CRT_POISON, BELLION_CESTUS_RSK_HASTE, reward); case 18: - return getReward(qs, player, DEADMANS_GLORY, DEADMANS_GLORY_ANGER, DEADMANS_GLORY_HEALTH, DEADMANS_GLORY_HASTE, REWARD); + return getReward(qs, player, DEADMANS_GLORY, DEADMANS_GLORY_ANGER, DEADMANS_GLORY_HEALTH, DEADMANS_GLORY_HASTE, reward); case 19: - return getReward(qs, player, SAMURAI_LONGSWORD_SAMURAI_LONGSWORD, 0, 0, 0, REWARD); + return getReward(qs, player, SAMURAI_LONGSWORD_SAMURAI_LONGSWORD, 0, 0, 0, reward); case 41: - return getReward(qs, player, GUARDIANS_SWORD, GUARDIANS_SWORD_CRT_DRAIN, GUARDIANS_SWORD_HEALTH, GUARDIANS_SWORD_CRT_BLEED, REWARD); + return getReward(qs, player, GUARDIANS_SWORD, GUARDIANS_SWORD_CRT_DRAIN, GUARDIANS_SWORD_HEALTH, GUARDIANS_SWORD_CRT_BLEED, reward); case 42: - return getReward(qs, player, TEARS_OF_WIZARD, TEARS_OF_WIZARD_ACUMEN, TEARS_OF_WIZARD_MAGICPOWER, TEARS_OF_WIZARD_UPDOWN, REWARD); + return getReward(qs, player, TEARS_OF_WIZARD, TEARS_OF_WIZARD_ACUMEN, TEARS_OF_WIZARD_MAGICPOWER, TEARS_OF_WIZARD_UPDOWN, reward); case 43: - return getReward(qs, player, STAR_BUSTER, STAR_BUSTER_HEALTH, STAR_BUSTER_HASTE, STAR_BUSTER_RSK_FOCUS, REWARD); + return getReward(qs, player, STAR_BUSTER, STAR_BUSTER_HEALTH, STAR_BUSTER_HASTE, STAR_BUSTER_RSK_FOCUS, reward); case 44: - return getReward(qs, player, BONE_OF_KAIM_VANUL, BONE_OF_KAIM_VANUL_MANAUP, BONE_OF_KAIM_VANUL_MAGICSILENCE, BONE_OF_KAIM_VANUL_UPDOWN, REWARD); + return getReward(qs, player, BONE_OF_KAIM_VANUL, BONE_OF_KAIM_VANUL_MANAUP, BONE_OF_KAIM_VANUL_MAGICSILENCE, BONE_OF_KAIM_VANUL_UPDOWN, reward); } return false; } - private boolean getReward(QuestState qs, L2PcInstance player, int ITEM1, int ITEM2, int ITEM3, int ITEM4, int REWARD) + private boolean getReward(QuestState qs, L2PcInstance player, int item1, int item2, int item3, int item4, int reward) { - if (hasAtLeastOneQuestItem(player, ITEM1, ITEM2, ITEM3, ITEM4)) + if (hasAtLeastOneQuestItem(player, item1, item2, item3, item4)) { - qs.giveItems(REWARD, 1); + qs.giveItems(reward, 1); qs.giveItems(Q_STAR_OF_DESTINY, 1); - if (qs.hasQuestItems(ITEM1)) + if (qs.hasQuestItems(item1)) { - qs.takeItems(ITEM1, 1); + qs.takeItems(item1, 1); } - else if (qs.hasQuestItems(ITEM2)) + else if (qs.hasQuestItems(item2)) { - qs.takeItems(ITEM2, 1); + qs.takeItems(item2, 1); } - else if (qs.hasQuestItems(ITEM3)) + else if (qs.hasQuestItems(item3)) { - qs.takeItems(ITEM3, 1); + qs.takeItems(item3, 1); } - else if (qs.hasQuestItems(ITEM4)) + else if (qs.hasQuestItems(item4)) { - qs.takeItems(ITEM4, 1); + qs.takeItems(item4, 1); } qs.exitQuest(false, true); player.broadcastSocialAction(3); @@ -1085,7 +1084,8 @@ public final class Q00234_FatesWhisper extends Quest return super.onKill(npc, killer, isSummon); } } - final QuestState qs = getRandomPlayerFromParty(killer, npc, 8); + + final QuestState qs = getRandomPartyMemberState(killer, -1, 2, npc); if (qs != null) { switch (npc.getId()) @@ -1135,29 +1135,9 @@ public final class Q00234_FatesWhisper extends Quest return super.onAttack(npc, attacker, damage, isSummon); } - private QuestState getRandomPlayerFromParty(L2PcInstance player, L2Npc npc, int memoState) + @Override + public boolean checkPartyMember(QuestState qs, L2Npc npc) { - QuestState qs = getQuestState(player, false); - final List<QuestState> candidates = new ArrayList<>(); - - if ((qs != null) && qs.isStarted() && (qs.getMemoState() == memoState) && !qs.hasQuestItems(Q_WHITE_FABRIC_Q0234)) - { - candidates.add(qs); - candidates.add(qs); - } - - if (player.isInParty()) - { - player.getParty().getMembers().stream().forEach(pm -> - { - - QuestState qss = getQuestState(pm, false); - if ((qss != null) && qss.isStarted() && (qss.getMemoState() == memoState) && !qss.hasQuestItems(Q_WHITE_FABRIC_Q0234) && Util.checkIfInRange(1500, npc, pm, true)) - { - candidates.add(qss); - } - }); - } - return candidates.isEmpty() ? null : candidates.get(getRandom(candidates.size())); + return qs.hasQuestItems(Q_WHITE_FABRIC_Q0234) && qs.isMemoState(8); } }