From 6fe2a25cc834e528a0f8009670898fd74dc4684c Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Mon, 16 Oct 2017 00:40:22 +0000 Subject: [PATCH] ClassMaster optional reward fixes. --- .../ai/others/ClassMaster/ClassMaster.java | 75 +++++++++++++++++-- .../ai/others/ClassMaster/ClassMaster.java | 75 +++++++++++++++++-- .../ai/others/ClassMaster/ClassMaster.java | 75 +++++++++++++++++-- .../ai/others/ClassMaster/ClassMaster.java | 75 +++++++++++++++++-- 4 files changed, 272 insertions(+), 28 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java index 7a21218b34..1e5f37773b 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java @@ -376,19 +376,41 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader } final ClassChangeData data = getClassChangeData(classDataIndex); - if ((data != null) && (data.getItemsRequired().size() > 0)) + if (data != null) { - for (ItemHolder ri : data.getItemsRequired()) + // Required items. + if (data.getItemsRequired().size() > 0) { - if (player.getInventory().getInventoryItemCount(ri.getId(), -1) < ri.getCount()) + for (ItemHolder ri : data.getItemsRequired()) { - player.sendMessage("You do not have enough items."); - return null; // No class change if payment failed. + if (player.getInventory().getInventoryItemCount(ri.getId(), -1) < ri.getCount()) + { + player.sendMessage("You do not have enough items."); + return null; // No class change if payment failed. + } + } + for (ItemHolder ri : data.getItemsRequired()) + { + player.destroyItemByItemId(getClass().getSimpleName(), ri.getId(), ri.getCount(), npc, true); } } - for (ItemHolder ri : data.getItemsRequired()) + // Give possible rewards. + if (data.getItemsRewarded().size() > 0) { - player.destroyItemByItemId(getClass().getSimpleName(), ri.getId(), ri.getCount(), npc, true); + for (ItemHolder ri : data.getItemsRewarded()) + { + giveItems(player, ri); + } + } + // Give possible nobless status reward. + if (data.isRewardNoblesse()) + { + player.setNoble(true); + } + // Give possible hero status reward. + if (data.isRewardHero()) + { + player.setHero(true); } } @@ -782,6 +804,45 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader } else { + final ClassChangeData data = _classChangeData.stream().filter(ccd -> ccd.isInCategory(player)).findFirst().get(); + if (data != null) + { + // Required items. + if (data.getItemsRequired().size() > 0) + { + for (ItemHolder ri : data.getItemsRequired()) + { + if (player.getInventory().getInventoryItemCount(ri.getId(), -1) < ri.getCount()) + { + player.sendMessage("You do not have enough items."); + return false; // No class change if payment failed. + } + } + for (ItemHolder ri : data.getItemsRequired()) + { + player.destroyItemByItemId(getClass().getSimpleName(), ri.getId(), ri.getCount(), player, true); + } + } + // Give possible rewards. + if (data.getItemsRewarded().size() > 0) + { + for (ItemHolder ri : data.getItemsRewarded()) + { + giveItems(player, ri); + } + } + // Give possible nobless status reward. + if (data.isRewardNoblesse()) + { + player.setNoble(true); + } + // Give possible hero status reward. + if (data.isRewardHero()) + { + player.setHero(true); + } + } + player.setClassId(newClass.getId()); if (player.isSubClassActive()) { diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java index e3bb7824ff..b1c5f28c99 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java @@ -376,19 +376,41 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader } final ClassChangeData data = getClassChangeData(classDataIndex); - if ((data != null) && (data.getItemsRequired().size() > 0)) + if (data != null) { - for (ItemHolder ri : data.getItemsRequired()) + // Required items. + if (data.getItemsRequired().size() > 0) { - if (player.getInventory().getInventoryItemCount(ri.getId(), -1) < ri.getCount()) + for (ItemHolder ri : data.getItemsRequired()) { - player.sendMessage("You do not have enough items."); - return null; // No class change if payment failed. + if (player.getInventory().getInventoryItemCount(ri.getId(), -1) < ri.getCount()) + { + player.sendMessage("You do not have enough items."); + return null; // No class change if payment failed. + } + } + for (ItemHolder ri : data.getItemsRequired()) + { + player.destroyItemByItemId(getClass().getSimpleName(), ri.getId(), ri.getCount(), npc, true); } } - for (ItemHolder ri : data.getItemsRequired()) + // Give possible rewards. + if (data.getItemsRewarded().size() > 0) { - player.destroyItemByItemId(getClass().getSimpleName(), ri.getId(), ri.getCount(), npc, true); + for (ItemHolder ri : data.getItemsRewarded()) + { + giveItems(player, ri); + } + } + // Give possible nobless status reward. + if (data.isRewardNoblesse()) + { + player.setNobleLevel(1); + } + // Give possible hero status reward. + if (data.isRewardHero()) + { + player.setHero(true); } } @@ -782,6 +804,45 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader } else { + final ClassChangeData data = _classChangeData.stream().filter(ccd -> ccd.isInCategory(player)).findFirst().get(); + if (data != null) + { + // Required items. + if (data.getItemsRequired().size() > 0) + { + for (ItemHolder ri : data.getItemsRequired()) + { + if (player.getInventory().getInventoryItemCount(ri.getId(), -1) < ri.getCount()) + { + player.sendMessage("You do not have enough items."); + return false; // No class change if payment failed. + } + } + for (ItemHolder ri : data.getItemsRequired()) + { + player.destroyItemByItemId(getClass().getSimpleName(), ri.getId(), ri.getCount(), player, true); + } + } + // Give possible rewards. + if (data.getItemsRewarded().size() > 0) + { + for (ItemHolder ri : data.getItemsRewarded()) + { + giveItems(player, ri); + } + } + // Give possible nobless status reward. + if (data.isRewardNoblesse()) + { + player.setNobleLevel(1); + } + // Give possible hero status reward. + if (data.isRewardHero()) + { + player.setHero(true); + } + } + player.setClassId(newClass.getId()); if (player.isSubClassActive()) { diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java index 81f6a06ff5..3a94ac7bfb 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java @@ -376,19 +376,41 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader } final ClassChangeData data = getClassChangeData(classDataIndex); - if ((data != null) && (data.getItemsRequired().size() > 0)) + if (data != null) { - for (ItemHolder ri : data.getItemsRequired()) + // Required items. + if (data.getItemsRequired().size() > 0) { - if (player.getInventory().getInventoryItemCount(ri.getId(), -1) < ri.getCount()) + for (ItemHolder ri : data.getItemsRequired()) { - player.sendMessage("You do not have enough items."); - return null; // No class change if payment failed. + if (player.getInventory().getInventoryItemCount(ri.getId(), -1) < ri.getCount()) + { + player.sendMessage("You do not have enough items."); + return null; // No class change if payment failed. + } + } + for (ItemHolder ri : data.getItemsRequired()) + { + player.destroyItemByItemId(getClass().getSimpleName(), ri.getId(), ri.getCount(), npc, true); } } - for (ItemHolder ri : data.getItemsRequired()) + // Give possible rewards. + if (data.getItemsRewarded().size() > 0) { - player.destroyItemByItemId(getClass().getSimpleName(), ri.getId(), ri.getCount(), npc, true); + for (ItemHolder ri : data.getItemsRewarded()) + { + giveItems(player, ri); + } + } + // Give possible nobless status reward. + if (data.isRewardNoblesse()) + { + player.setNobleLevel(1); + } + // Give possible hero status reward. + if (data.isRewardHero()) + { + player.setHero(true); } } @@ -782,6 +804,45 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader } else { + final ClassChangeData data = _classChangeData.stream().filter(ccd -> ccd.isInCategory(player)).findFirst().get(); + if (data != null) + { + // Required items. + if (data.getItemsRequired().size() > 0) + { + for (ItemHolder ri : data.getItemsRequired()) + { + if (player.getInventory().getInventoryItemCount(ri.getId(), -1) < ri.getCount()) + { + player.sendMessage("You do not have enough items."); + return false; // No class change if payment failed. + } + } + for (ItemHolder ri : data.getItemsRequired()) + { + player.destroyItemByItemId(getClass().getSimpleName(), ri.getId(), ri.getCount(), player, true); + } + } + // Give possible rewards. + if (data.getItemsRewarded().size() > 0) + { + for (ItemHolder ri : data.getItemsRewarded()) + { + giveItems(player, ri); + } + } + // Give possible nobless status reward. + if (data.isRewardNoblesse()) + { + player.setNobleLevel(1); + } + // Give possible hero status reward. + if (data.isRewardHero()) + { + player.setHero(true); + } + } + player.setClassId(newClass.getId()); if (player.isSubClassActive()) { diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java index 2c7597a2b4..9aa6a9cc5e 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java @@ -344,19 +344,41 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader } final ClassChangeData data = getClassChangeData(classDataIndex); - if ((data != null) && (data.getItemsRequired().size() > 0)) + if (data != null) { - for (ItemHolder ri : data.getItemsRequired()) + // Required items. + if (data.getItemsRequired().size() > 0) { - if (player.getInventory().getInventoryItemCount(ri.getId(), -1) < ri.getCount()) + for (ItemHolder ri : data.getItemsRequired()) { - player.sendMessage("You do not have enough items."); - return null; // No class change if payment failed. + if (player.getInventory().getInventoryItemCount(ri.getId(), -1) < ri.getCount()) + { + player.sendMessage("You do not have enough items."); + return null; // No class change if payment failed. + } + } + for (ItemHolder ri : data.getItemsRequired()) + { + player.destroyItemByItemId(getClass().getSimpleName(), ri.getId(), ri.getCount(), npc, true); } } - for (ItemHolder ri : data.getItemsRequired()) + // Give possible rewards. + if (data.getItemsRewarded().size() > 0) { - player.destroyItemByItemId(getClass().getSimpleName(), ri.getId(), ri.getCount(), npc, true); + for (ItemHolder ri : data.getItemsRewarded()) + { + giveItems(player, ri); + } + } + // Give possible nobless status reward. + if (data.isRewardNoblesse()) + { + player.setNoble(true); + } + // Give possible hero status reward. + if (data.isRewardHero()) + { + player.setHero(true); } } @@ -750,6 +772,45 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader } else { + final ClassChangeData data = _classChangeData.stream().filter(ccd -> ccd.isInCategory(player)).findFirst().get(); + if (data != null) + { + // Required items. + if (data.getItemsRequired().size() > 0) + { + for (ItemHolder ri : data.getItemsRequired()) + { + if (player.getInventory().getInventoryItemCount(ri.getId(), -1) < ri.getCount()) + { + player.sendMessage("You do not have enough items."); + return false; // No class change if payment failed. + } + } + for (ItemHolder ri : data.getItemsRequired()) + { + player.destroyItemByItemId(getClass().getSimpleName(), ri.getId(), ri.getCount(), player, true); + } + } + // Give possible rewards. + if (data.getItemsRewarded().size() > 0) + { + for (ItemHolder ri : data.getItemsRewarded()) + { + giveItems(player, ri); + } + } + // Give possible nobless status reward. + if (data.isRewardNoblesse()) + { + player.setNoble(true); + } + // Give possible hero status reward. + if (data.isRewardHero()) + { + player.setHero(true); + } + } + player.setClassId(newClass.getId()); if (player.isSubClassActive()) {