From 08f1a5f82b5f9ad8d6a0bec854281a22bcfb39ce Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Mon, 21 Dec 2015 08:10:18 +0000 Subject: [PATCH] Daily mission improvements. Contributed by rocknowx. --- .../data/xml/impl/DailyMissionData.java | 36 +++++++++++-------- .../ExOneDayReceiveRewardList.java | 2 +- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/trunk/java/com/l2jserver/gameserver/data/xml/impl/DailyMissionData.java b/trunk/java/com/l2jserver/gameserver/data/xml/impl/DailyMissionData.java index ad85a1556f..e7ae024ee4 100644 --- a/trunk/java/com/l2jserver/gameserver/data/xml/impl/DailyMissionData.java +++ b/trunk/java/com/l2jserver/gameserver/data/xml/impl/DailyMissionData.java @@ -164,19 +164,19 @@ public class DailyMissionData implements IXmlReader /** * @param id int * @param player L2PcInstance - * @return boolean + * @return int */ - public boolean isRewardAvailable(int id, L2PcInstance player) + public int RewardStatus(int id, L2PcInstance player) { if (player.getLevel() < _dailyMissions.get(id - 1).getLevel()) { - return false; + return 2; // Not Available } if (player.getVariables().getString("DailyMission" + id, null) != null) { - return false; + return 3; // Complete } - return true; + return 1; // Available } /** @@ -187,21 +187,27 @@ public class DailyMissionData implements IXmlReader { for (DailyMissionHolder mission : _dailyMissions) { - if ((mission.getClientId() == rewardId1) && isRewardAvailable(mission.getId(), player)) + if ((mission.getClientId() == rewardId1) && (RewardStatus(mission.getId(), player) == 1)) { - for (int itemId : mission.getRewards().keySet()) + for (int classId : mission.getAvailableClasses()) { - player.addItem("DailyMission", itemId, mission.getRewards().get(itemId), player, true); - } - for (DailyMissionHolder m : _dailyMissions) - { - if (mission.getClientId() == m.getClientId()) + if (player.getClassId().getId() == classId) { - player.getVariables().set("DailyMission" + m.getId(), System.currentTimeMillis()); + for (int itemId : mission.getRewards().keySet()) + { + player.addItem("DailyMission", itemId, mission.getRewards().get(itemId), player, true); + } + for (DailyMissionHolder m : _dailyMissions) + { + if (mission.getClientId() == m.getClientId()) + { + player.getVariables().set("DailyMission" + m.getId(), System.currentTimeMillis()); + } + } + player.sendPacket(new ExOneDayReceiveRewardList(player)); + break; } } - player.sendPacket(new ExOneDayReceiveRewardList(player)); - break; } } } diff --git a/trunk/java/com/l2jserver/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java b/trunk/java/com/l2jserver/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java index 9b6bfad519..b11dea5c49 100644 --- a/trunk/java/com/l2jserver/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java +++ b/trunk/java/com/l2jserver/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java @@ -52,7 +52,7 @@ public class ExOneDayReceiveRewardList extends L2GameServerPacket for (DailyMissionHolder mission : _availableMissions) { writeH(mission.getClientId()); // Reward - writeC(DailyMissionData.getInstance().isRewardAvailable(mission.getId(), _activeChar) ? 1 : 2); // 1 Available, 2 Not Available + writeC(DailyMissionData.getInstance().RewardStatus(mission.getId(), _activeChar)); // 1 Available, 2 Not Available, 3 Complete writeC(0x00); // Requires multiple completion - YesOrNo writeD(0x00); // Current progress writeD(0x00); // Required total