Rename and clean up MapleQuestStatus

This commit is contained in:
P0nk
2021-09-09 21:23:06 +02:00
parent f4f5e12a50
commit 8af0999510
16 changed files with 122 additions and 119 deletions

View File

@@ -176,7 +176,7 @@ public class Character extends AbstractCharacterObject {
private List<Integer> lastmonthfameids; private List<Integer> lastmonthfameids;
private final List<WeakReference<MapleMap>> lastVisitedMaps = new LinkedList<>(); private final List<WeakReference<MapleMap>> lastVisitedMaps = new LinkedList<>();
private WeakReference<MapleMap> ownedMap = new WeakReference<>(null); private WeakReference<MapleMap> ownedMap = new WeakReference<>(null);
private final Map<Short, MapleQuestStatus> quests; private final Map<Short, QuestStatus> quests;
private final Set<MapleMonster> controlled = new LinkedHashSet<>(); private final Set<MapleMonster> controlled = new LinkedHashSet<>();
private final Map<Integer, String> entered = new LinkedHashMap<>(); private final Map<Integer, String> entered = new LinkedHashMap<>();
private final Set<MapleMapObject> visibleMapObjects = Collections.newSetFromMap(new ConcurrentHashMap<>()); private final Set<MapleMapObject> visibleMapObjects = Collections.newSetFromMap(new ConcurrentHashMap<>());
@@ -4622,16 +4622,16 @@ public class Character extends AbstractCharacterObject {
return client.getAbstractPlayerInteraction(); return client.getAbstractPlayerInteraction();
} }
private List<MapleQuestStatus> getQuests() { private List<QuestStatus> getQuests() {
synchronized (quests) { synchronized (quests) {
return new ArrayList<>(quests.values()); return new ArrayList<>(quests.values());
} }
} }
public final List<MapleQuestStatus> getCompletedQuests() { public final List<QuestStatus> getCompletedQuests() {
List<MapleQuestStatus> ret = new LinkedList<>(); List<QuestStatus> ret = new LinkedList<>();
for (MapleQuestStatus qs : getQuests()) { for (QuestStatus qs : getQuests()) {
if (qs.getStatus().equals(MapleQuestStatus.Status.COMPLETED)) { if (qs.getStatus().equals(QuestStatus.Status.COMPLETED)) {
ret.add(qs); ret.add(qs);
} }
} }
@@ -5676,7 +5676,7 @@ public class Character extends AbstractCharacterObject {
public final byte getQuestStatus(final int quest) { public final byte getQuestStatus(final int quest) {
synchronized (quests) { synchronized (quests) {
MapleQuestStatus mqs = quests.get((short) quest); QuestStatus mqs = quests.get((short) quest);
if (mqs != null) { if (mqs != null) {
return (byte) mqs.getStatus().getId(); return (byte) mqs.getStatus().getId();
} else { } else {
@@ -5685,16 +5685,16 @@ public class Character extends AbstractCharacterObject {
} }
} }
public MapleQuestStatus getQuest(final int quest) { public QuestStatus getQuest(final int quest) {
return getQuest(MapleQuest.getInstance(quest)); return getQuest(MapleQuest.getInstance(quest));
} }
public MapleQuestStatus getQuest(MapleQuest quest) { public QuestStatus getQuest(MapleQuest quest) {
synchronized (quests) { synchronized (quests) {
short questid = quest.getId(); short questid = quest.getId();
MapleQuestStatus qs = quests.get(questid); QuestStatus qs = quests.get(questid);
if (qs == null) { if (qs == null) {
qs = new MapleQuestStatus(quest, MapleQuestStatus.Status.NOT_STARTED); qs = new QuestStatus(quest, QuestStatus.Status.NOT_STARTED);
quests.put(questid, qs); quests.put(questid, qs);
} }
return qs; return qs;
@@ -5706,17 +5706,17 @@ public class Character extends AbstractCharacterObject {
public final void setQuestAdd(final MapleQuest quest, final byte status, final String customData) { public final void setQuestAdd(final MapleQuest quest, final byte status, final String customData) {
synchronized (quests) { synchronized (quests) {
if (!quests.containsKey(quest.getId())) { if (!quests.containsKey(quest.getId())) {
final MapleQuestStatus stat = new MapleQuestStatus(quest, MapleQuestStatus.Status.getById(status)); final QuestStatus stat = new QuestStatus(quest, QuestStatus.Status.getById(status));
stat.setCustomData(customData); stat.setCustomData(customData);
quests.put(quest.getId(), stat); quests.put(quest.getId(), stat);
} }
} }
} }
public final MapleQuestStatus getQuestNAdd(final MapleQuest quest) { public final QuestStatus getQuestNAdd(final MapleQuest quest) {
synchronized (quests) { synchronized (quests) {
if (!quests.containsKey(quest.getId())) { if (!quests.containsKey(quest.getId())) {
final MapleQuestStatus status = new MapleQuestStatus(quest, MapleQuestStatus.Status.NOT_STARTED); final QuestStatus status = new QuestStatus(quest, QuestStatus.Status.NOT_STARTED);
quests.put(quest.getId(), status); quests.put(quest.getId(), status);
return status; return status;
} }
@@ -5724,13 +5724,13 @@ public class Character extends AbstractCharacterObject {
} }
} }
public final MapleQuestStatus getQuestNoAdd(final MapleQuest quest) { public final QuestStatus getQuestNoAdd(final MapleQuest quest) {
synchronized (quests) { synchronized (quests) {
return quests.get(quest.getId()); return quests.get(quest.getId());
} }
} }
public final MapleQuestStatus getQuestRemove(final MapleQuest quest) { public final QuestStatus getQuestRemove(final MapleQuest quest) {
synchronized (quests) { synchronized (quests) {
return quests.remove(quest.getId()); return quests.remove(quest.getId());
} }
@@ -5838,10 +5838,10 @@ public class Character extends AbstractCharacterObject {
return slots; return slots;
} }
public final List<MapleQuestStatus> getStartedQuests() { public final List<QuestStatus> getStartedQuests() {
List<MapleQuestStatus> ret = new LinkedList<>(); List<QuestStatus> ret = new LinkedList<>();
for (MapleQuestStatus qs : getQuests()) { for (QuestStatus qs : getQuests()) {
if (qs.getStatus().equals(MapleQuestStatus.Status.STARTED)) { if (qs.getStatus().equals(QuestStatus.Status.STARTED)) {
ret.add(qs); ret.add(qs);
} }
} }
@@ -7233,7 +7233,7 @@ public class Character extends AbstractCharacterObject {
} }
if (channelserver) { if (channelserver) {
final Map<Integer, MapleQuestStatus> loadedQuestStatus = new LinkedHashMap<>(); final Map<Integer, QuestStatus> loadedQuestStatus = new LinkedHashMap<>();
// Quest status // Quest status
try (PreparedStatement ps = con.prepareStatement("SELECT * FROM queststatus WHERE characterid = ?")) { try (PreparedStatement ps = con.prepareStatement("SELECT * FROM queststatus WHERE characterid = ?")) {
@@ -7242,7 +7242,7 @@ public class Character extends AbstractCharacterObject {
try (ResultSet rs = ps.executeQuery()) { try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) { while (rs.next()) {
MapleQuest q = MapleQuest.getInstance(rs.getShort("quest")); MapleQuest q = MapleQuest.getInstance(rs.getShort("quest"));
MapleQuestStatus status = new MapleQuestStatus(q, MapleQuestStatus.Status.getById(rs.getInt("status"))); QuestStatus status = new QuestStatus(q, QuestStatus.Status.getById(rs.getInt("status")));
long cTime = rs.getLong("time"); long cTime = rs.getLong("time");
if (cTime > -1) { if (cTime > -1) {
status.setCompletionTime(cTime * 1000); status.setCompletionTime(cTime * 1000);
@@ -7267,7 +7267,7 @@ public class Character extends AbstractCharacterObject {
ps.setInt(1, charid); ps.setInt(1, charid);
try (ResultSet rsProgress = ps.executeQuery()) { try (ResultSet rsProgress = ps.executeQuery()) {
while (rsProgress.next()) { while (rsProgress.next()) {
MapleQuestStatus status = loadedQuestStatus.get(rsProgress.getInt("queststatusid")); QuestStatus status = loadedQuestStatus.get(rsProgress.getInt("queststatusid"));
if (status != null) { if (status != null) {
status.setProgress(rsProgress.getInt("progressid"), rsProgress.getString("progress")); status.setProgress(rsProgress.getInt("progressid"), rsProgress.getString("progress"));
} }
@@ -7280,7 +7280,7 @@ public class Character extends AbstractCharacterObject {
ps.setInt(1, charid); ps.setInt(1, charid);
try (ResultSet rsMedalMaps = ps.executeQuery()) { try (ResultSet rsMedalMaps = ps.executeQuery()) {
while (rsMedalMaps.next()) { while (rsMedalMaps.next()) {
MapleQuestStatus status = loadedQuestStatus.get(rsMedalMaps.getInt("queststatusid")); QuestStatus status = loadedQuestStatus.get(rsMedalMaps.getInt("queststatusid"));
if (status != null) { if (status != null) {
status.addMedalMap(rsMedalMaps.getInt("mapid")); status.addMedalMap(rsMedalMaps.getInt("mapid"));
} }
@@ -7453,7 +7453,7 @@ public class Character extends AbstractCharacterObject {
} }
public void reloadQuestExpirations() { public void reloadQuestExpirations() {
for (MapleQuestStatus mqs : getStartedQuests()) { for (QuestStatus mqs : getStartedQuests()) {
if (mqs.getExpirationTime() > 0) { if (mqs.getExpirationTime() > 0) {
questTimeLimit2(mqs.getQuest(), mqs.getExpirationTime()); questTimeLimit2(mqs.getQuest(), mqs.getExpirationTime());
} }
@@ -7521,9 +7521,9 @@ public class Character extends AbstractCharacterObject {
int lastQuestProcessed = 0; int lastQuestProcessed = 0;
try { try {
synchronized (quests) { synchronized (quests) {
for (MapleQuestStatus qs : getQuests()) { for (QuestStatus qs : getQuests()) {
lastQuestProcessed = qs.getQuest().getId(); lastQuestProcessed = qs.getQuest().getId();
if (qs.getStatus() == MapleQuestStatus.Status.COMPLETED || qs.getQuest().canComplete(this, null)) { if (qs.getStatus() == QuestStatus.Status.COMPLETED || qs.getQuest().canComplete(this, null)) {
continue; continue;
} }
@@ -8675,7 +8675,7 @@ public class Character extends AbstractCharacterObject {
PreparedStatement psMedal = con.prepareStatement("INSERT INTO medalmaps VALUES (DEFAULT, ?, ?, ?)")) { PreparedStatement psMedal = con.prepareStatement("INSERT INTO medalmaps VALUES (DEFAULT, ?, ?, ?)")) {
psStatus.setInt(1, id); psStatus.setInt(1, id);
for (MapleQuestStatus qs : getQuests()) { for (QuestStatus qs : getQuests()) {
psStatus.setInt(2, qs.getQuest().getId()); psStatus.setInt(2, qs.getQuest().getId());
psStatus.setInt(3, qs.getStatus().getId()); psStatus.setInt(3, qs.getStatus().getId());
psStatus.setInt(4, (int) (qs.getCompletionTime() / 1000)); psStatus.setInt(4, (int) (qs.getCompletionTime() / 1000));
@@ -9822,11 +9822,11 @@ public class Character extends AbstractCharacterObject {
public void setQuestProgress(int id, int infoNumber, String progress) { public void setQuestProgress(int id, int infoNumber, String progress) {
MapleQuest q = MapleQuest.getInstance(id); MapleQuest q = MapleQuest.getInstance(id);
MapleQuestStatus qs = getQuest(q); QuestStatus qs = getQuest(q);
if (qs.getInfoNumber() == infoNumber && infoNumber > 0) { if (qs.getInfoNumber() == infoNumber && infoNumber > 0) {
MapleQuest iq = MapleQuest.getInstance(infoNumber); MapleQuest iq = MapleQuest.getInstance(infoNumber);
MapleQuestStatus iqs = getQuest(iq); QuestStatus iqs = getQuest(iq);
iqs.setProgress(0, progress); iqs.setProgress(0, progress);
} else { } else {
qs.setProgress(infoNumber, progress); // quest progress is thoroughly a string match, infoNumber is actually another questid qs.setProgress(infoNumber, progress); // quest progress is thoroughly a string match, infoNumber is actually another questid
@@ -9865,7 +9865,7 @@ public class Character extends AbstractCharacterObject {
switch (questUpdate.getLeft()) { switch (questUpdate.getLeft()) {
case UPDATE: case UPDATE:
sendPacket(PacketCreator.updateQuest(chr, (MapleQuestStatus) objs[0], (Boolean) objs[1])); sendPacket(PacketCreator.updateQuest(chr, (QuestStatus) objs[0], (Boolean) objs[1]));
break; break;
case FORFEIT: case FORFEIT:
@@ -9877,7 +9877,7 @@ public class Character extends AbstractCharacterObject {
break; break;
case INFO: case INFO:
MapleQuestStatus qs = (MapleQuestStatus) objs[0]; QuestStatus qs = (QuestStatus) objs[0];
sendPacket(PacketCreator.updateQuestInfo(qs.getQuest().getId(), qs.getNpc())); sendPacket(PacketCreator.updateQuestInfo(qs.getQuest().getId(), qs.getNpc()));
break; break;
} }
@@ -9908,17 +9908,17 @@ public class Character extends AbstractCharacterObject {
} }
} }
public void updateQuestStatus(MapleQuestStatus qs) { public void updateQuestStatus(QuestStatus qs) {
synchronized (quests) { synchronized (quests) {
quests.put(qs.getQuestID(), qs); quests.put(qs.getQuestID(), qs);
} }
if (qs.getStatus().equals(MapleQuestStatus.Status.STARTED)) { if (qs.getStatus().equals(QuestStatus.Status.STARTED)) {
announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false); announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false);
if (qs.getInfoNumber() > 0) { if (qs.getInfoNumber() > 0) {
announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true); announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true);
} }
announceUpdateQuest(DelayedQuestUpdate.INFO, qs); announceUpdateQuest(DelayedQuestUpdate.INFO, qs);
} else if (qs.getStatus().equals(MapleQuestStatus.Status.COMPLETED)) { } else if (qs.getStatus().equals(QuestStatus.Status.COMPLETED)) {
MapleQuest mquest = qs.getQuest(); MapleQuest mquest = qs.getQuest();
short questid = mquest.getId(); short questid = mquest.getId();
if (!mquest.isSameDayRepeatable() && !MapleQuest.isExploitableQuest(questid)) { if (!mquest.isSameDayRepeatable() && !MapleQuest.isExploitableQuest(questid)) {
@@ -9928,7 +9928,7 @@ public class Character extends AbstractCharacterObject {
announceUpdateQuest(DelayedQuestUpdate.COMPLETE, questid, qs.getCompletionTime()); announceUpdateQuest(DelayedQuestUpdate.COMPLETE, questid, qs.getCompletionTime());
//announceUpdateQuest(DelayedQuestUpdate.INFO, qs); // happens after giving rewards, for non-next quests only //announceUpdateQuest(DelayedQuestUpdate.INFO, qs); // happens after giving rewards, for non-next quests only
} else if (qs.getStatus().equals(MapleQuestStatus.Status.NOT_STARTED)) { } else if (qs.getStatus().equals(QuestStatus.Status.NOT_STARTED)) {
announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false); announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false);
if (qs.getInfoNumber() > 0) { if (qs.getInfoNumber() > 0) {
announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true); announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true);

View File

@@ -27,10 +27,9 @@ import tools.StringUtil;
import java.util.*; import java.util.*;
/** /**
*
* @author Matze * @author Matze
*/ */
public class MapleQuestStatus { public class QuestStatus {
public enum Status { public enum Status {
UNDEFINED(-1), UNDEFINED(-1),
NOT_STARTED(0), NOT_STARTED(0),
@@ -38,7 +37,7 @@ public class MapleQuestStatus {
COMPLETED(2); COMPLETED(2);
final int status; final int status;
private Status(int id) { Status(int id) {
status = id; status = id;
} }
@@ -55,7 +54,8 @@ public class MapleQuestStatus {
return null; return null;
} }
} }
private short questID;
private final short questID;
private Status status; private Status status;
//private boolean updated; //maybe this can be of use for someone? //private boolean updated; //maybe this can be of use for someone?
private final Map<Integer, String> progress = new LinkedHashMap<>(); private final Map<Integer, String> progress = new LinkedHashMap<>();
@@ -65,17 +65,18 @@ public class MapleQuestStatus {
private int forfeited = 0, completed = 0; private int forfeited = 0, completed = 0;
private String customData; private String customData;
public MapleQuestStatus(MapleQuest quest, Status status) { public QuestStatus(MapleQuest quest, Status status) {
this.questID = quest.getId(); this.questID = quest.getId();
this.setStatus(status); this.setStatus(status);
this.completionTime = System.currentTimeMillis(); this.completionTime = System.currentTimeMillis();
this.expirationTime = 0; this.expirationTime = 0;
//this.updated = true; //this.updated = true;
if (status == Status.STARTED) if (status == Status.STARTED) {
registerMobs(); registerMobs();
} }
}
public MapleQuestStatus(MapleQuest quest, Status status, int npc) { public QuestStatus(MapleQuest quest, Status status, int npc) {
this.questID = quest.getId(); this.questID = quest.getId();
this.setStatus(status); this.setStatus(status);
this.setNpc(npc); this.setNpc(npc);
@@ -133,7 +134,9 @@ public class MapleQuestStatus {
} }
public boolean addMedalMap(int mapid) { public boolean addMedalMap(int mapid) {
if (medalProgress.contains(mapid)) return false; if (medalProgress.contains(mapid)) {
return false;
}
medalProgress.add(mapid); medalProgress.add(mapid);
//this.setUpdated(); //this.setUpdated();
return true; return true;
@@ -187,7 +190,7 @@ public class MapleQuestStatus {
} }
public void resetAllProgress() { public void resetAllProgress() {
for(Map.Entry<Integer, String> entry : progress.entrySet()) { for (Map.Entry<Integer, String> entry : progress.entrySet()) {
setProgress(entry.getKey(), "000"); setProgress(entry.getKey(), "000");
} }
} }

View File

@@ -2,7 +2,7 @@ package net.server.channel.handlers;
import client.Character; import client.Character;
import client.Client; import client.Client;
import client.MapleQuestStatus; import client.QuestStatus;
import client.inventory.Inventory; import client.inventory.Inventory;
import client.inventory.InventoryType; import client.inventory.InventoryType;
import client.inventory.manipulator.InventoryManipulator; import client.inventory.manipulator.InventoryManipulator;
@@ -41,7 +41,7 @@ public class RaiseIncExpHandler extends AbstractPacketHandler {
Character chr = c.getPlayer(); Character chr = c.getPlayer();
MapleQuest quest = MapleQuest.getInstanceFromInfoNumber(infoNumber); MapleQuest quest = MapleQuest.getInstanceFromInfoNumber(infoNumber);
if (!chr.getQuest(quest).getStatus().equals(MapleQuestStatus.Status.STARTED)) { if (!chr.getQuest(quest).getStatus().equals(QuestStatus.Status.STARTED)) {
c.sendPacket(PacketCreator.enableActions()); c.sendPacket(PacketCreator.enableActions());
return; return;
} }

View File

@@ -3,7 +3,7 @@ package net.server.channel.handlers;
import client.Character; import client.Character;
import client.Character.DelayedQuestUpdate; import client.Character.DelayedQuestUpdate;
import client.Client; import client.Client;
import client.MapleQuestStatus; import client.QuestStatus;
import net.AbstractPacketHandler; import net.AbstractPacketHandler;
import net.packet.InPacket; import net.packet.InPacket;
import scripting.quest.QuestScriptManager; import scripting.quest.QuestScriptManager;
@@ -23,14 +23,14 @@ public class RaiseUIStateHandler extends AbstractPacketHandler {
try { try {
Character chr = c.getPlayer(); Character chr = c.getPlayer();
MapleQuest quest = MapleQuest.getInstanceFromInfoNumber(infoNumber); MapleQuest quest = MapleQuest.getInstanceFromInfoNumber(infoNumber);
MapleQuestStatus mqs = chr.getQuest(quest); QuestStatus mqs = chr.getQuest(quest);
QuestScriptManager.getInstance().raiseOpen(c, (short) infoNumber, mqs.getNpc()); QuestScriptManager.getInstance().raiseOpen(c, (short) infoNumber, mqs.getNpc());
if (mqs.getStatus() == MapleQuestStatus.Status.NOT_STARTED) { if (mqs.getStatus() == QuestStatus.Status.NOT_STARTED) {
quest.forceStart(chr, 22000); quest.forceStart(chr, 22000);
c.getAbstractPlayerInteraction().setQuestProgress(quest.getId(), infoNumber, 0); c.getAbstractPlayerInteraction().setQuestProgress(quest.getId(), infoNumber, 0);
} else if (mqs.getStatus() == MapleQuestStatus.Status.STARTED) { } else if (mqs.getStatus() == QuestStatus.Status.STARTED) {
chr.announceUpdateQuest(DelayedQuestUpdate.UPDATE, mqs, mqs.getInfoNumber() > 0); chr.announceUpdateQuest(DelayedQuestUpdate.UPDATE, mqs, mqs.getInfoNumber() > 0);
} }
} finally { } finally {

View File

@@ -319,11 +319,11 @@ public class AbstractPlayerInteraction {
//---- \/ \/ \/ \/ \/ \/ \/ NOT TESTED \/ \/ \/ \/ \/ \/ \/ \/ \/ ---- //---- \/ \/ \/ \/ \/ \/ \/ NOT TESTED \/ \/ \/ \/ \/ \/ \/ \/ \/ ----
public final MapleQuestStatus getQuestRecord(final int id) { public final QuestStatus getQuestRecord(final int id) {
return c.getPlayer().getQuestNAdd(MapleQuest.getInstance(id)); return c.getPlayer().getQuestNAdd(MapleQuest.getInstance(id));
} }
public final MapleQuestStatus getQuestNoRecord(final int id) { public final QuestStatus getQuestNoRecord(final int id) {
return c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(id)); return c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(id));
} }
@@ -347,13 +347,13 @@ public class AbstractPlayerInteraction {
return c.getPlayer().getQuest(MapleQuest.getInstance(id)).getStatus().getId(); return c.getPlayer().getQuest(MapleQuest.getInstance(id)).getStatus().getId();
} }
private MapleQuestStatus.Status getQuestStat(int id) { private QuestStatus.Status getQuestStat(int id) {
return c.getPlayer().getQuest(MapleQuest.getInstance(id)).getStatus(); return c.getPlayer().getQuest(MapleQuest.getInstance(id)).getStatus();
} }
public boolean isQuestCompleted(int id) { public boolean isQuestCompleted(int id) {
try { try {
return getQuestStat(id) == MapleQuestStatus.Status.COMPLETED; return getQuestStat(id) == QuestStatus.Status.COMPLETED;
} catch (NullPointerException e) { } catch (NullPointerException e) {
e.printStackTrace(); e.printStackTrace();
return false; return false;
@@ -366,7 +366,7 @@ public class AbstractPlayerInteraction {
public boolean isQuestStarted(int id) { public boolean isQuestStarted(int id) {
try { try {
return getQuestStat(id) == MapleQuestStatus.Status.STARTED; return getQuestStat(id) == QuestStatus.Status.STARTED;
} catch (NullPointerException e) { } catch (NullPointerException e) {
e.printStackTrace(); e.printStackTrace();
return false; return false;
@@ -394,7 +394,7 @@ public class AbstractPlayerInteraction {
} }
public String getQuestProgress(int id, int infoNumber) { public String getQuestProgress(int id, int infoNumber) {
MapleQuestStatus qs = getPlayer().getQuest(MapleQuest.getInstance(id)); QuestStatus qs = getPlayer().getQuest(MapleQuest.getInstance(id));
if (qs.getInfoNumber() == infoNumber && infoNumber > 0) { if (qs.getInfoNumber() == infoNumber && infoNumber > 0) {
qs = getPlayer().getQuest(MapleQuest.getInstance(infoNumber)); qs = getPlayer().getQuest(MapleQuest.getInstance(infoNumber));
@@ -425,7 +425,7 @@ public class AbstractPlayerInteraction {
} }
public void resetAllQuestProgress(int id) { public void resetAllQuestProgress(int id) {
MapleQuestStatus qs = getPlayer().getQuest(MapleQuest.getInstance(id)); QuestStatus qs = getPlayer().getQuest(MapleQuest.getInstance(id));
if (qs != null) { if (qs != null) {
qs.resetAllProgress(); qs.resetAllProgress();
getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false); getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false);
@@ -433,7 +433,7 @@ public class AbstractPlayerInteraction {
} }
public void resetQuestProgress(int id, int infoNumber) { public void resetQuestProgress(int id, int infoNumber) {
MapleQuestStatus qs = getPlayer().getQuest(MapleQuest.getInstance(id)); QuestStatus qs = getPlayer().getQuest(MapleQuest.getInstance(id));
if (qs != null) { if (qs != null) {
qs.resetProgress(infoNumber); qs.resetProgress(infoNumber);
getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false); getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, false);

View File

@@ -23,7 +23,7 @@ package scripting.map;
import client.Character.DelayedQuestUpdate; import client.Character.DelayedQuestUpdate;
import client.Client; import client.Client;
import client.MapleQuestStatus; import client.QuestStatus;
import scripting.AbstractPlayerInteraction; import scripting.AbstractPlayerInteraction;
import server.quest.MapleQuest; import server.quest.MapleQuest;
import tools.PacketCreator; import tools.PacketCreator;
@@ -122,7 +122,7 @@ public class MapScriptMethods extends AbstractPlayerInteraction {
return; return;
} }
} }
MapleQuestStatus qs = getPlayer().getQuest(quest); QuestStatus qs = getPlayer().getQuest(quest);
if (!qs.addMedalMap(getPlayer().getMapId())) { if (!qs.addMedalMap(getPlayer().getMapId())) {
return; return;
} }
@@ -151,7 +151,7 @@ public class MapScriptMethods extends AbstractPlayerInteraction {
return; return;
} }
} }
MapleQuestStatus qs = getPlayer().getQuest(quest); QuestStatus qs = getPlayer().getQuest(quest);
if (!qs.addMedalMap(getPlayer().getMapId())) { if (!qs.addMedalMap(getPlayer().getMapId())) {
return; return;
} }

View File

@@ -22,7 +22,7 @@
package scripting.quest; package scripting.quest;
import client.Client; import client.Client;
import client.MapleQuestStatus; import client.QuestStatus;
import constants.game.GameConstants; import constants.game.GameConstants;
import scripting.AbstractScriptManager; import scripting.AbstractScriptManager;
import server.quest.MapleQuest; import server.quest.MapleQuest;
@@ -110,7 +110,7 @@ public class QuestScriptManager extends AbstractScriptManager {
public void end(Client c, short questid, int npc) { public void end(Client c, short questid, int npc) {
MapleQuest quest = MapleQuest.getInstance(questid); MapleQuest quest = MapleQuest.getInstance(questid);
if (!c.getPlayer().getQuest(quest).getStatus().equals(MapleQuestStatus.Status.STARTED) || !c.getPlayer().getMap().containsNPC(npc)) { if (!c.getPlayer().getQuest(quest).getStatus().equals(QuestStatus.Status.STARTED) || !c.getPlayer().getMap().containsNPC(npc)) {
dispose(c); dispose(c);
return; return;
} }

View File

@@ -1383,7 +1383,7 @@ public class MapleMap {
AutobanFactory.GENERAL.alert(chr, " for killing a " + monster.getName() + " which is over 30 levels higher."); AutobanFactory.GENERAL.alert(chr, " for killing a " + monster.getName() + " which is over 30 levels higher.");
} }
/*if (chr.getQuest(MapleQuest.getInstance(29400)).getStatus().equals(MapleQuestStatus.Status.STARTED)) { /*if (chr.getQuest(MapleQuest.getInstance(29400)).getStatus().equals(QuestStatus.Status.STARTED)) {
if (chr.getLevel() >= 120 && monster.getStats().getLevel() >= 120) { if (chr.getLevel() >= 120 && monster.getStats().getLevel() >= 120) {
//FIX MEDAL SHET //FIX MEDAL SHET
} else if (monster.getStats().getLevel() >= chr.getLevel()) { } else if (monster.getStats().getLevel() >= chr.getLevel()) {

View File

@@ -22,8 +22,8 @@
package server.quest; package server.quest;
import client.Character; import client.Character;
import client.MapleQuestStatus; import client.QuestStatus;
import client.MapleQuestStatus.Status; import client.QuestStatus.Status;
import config.YamlConfig; import config.YamlConfig;
import provider.MapleData; import provider.MapleData;
import provider.MapleDataProvider; import provider.MapleDataProvider;
@@ -203,12 +203,12 @@ public class MapleQuest {
} }
public boolean canStartQuestByStatus(Character chr) { public boolean canStartQuestByStatus(Character chr) {
MapleQuestStatus mqs = chr.getQuest(this); QuestStatus mqs = chr.getQuest(this);
return !(!mqs.getStatus().equals(Status.NOT_STARTED) && !(mqs.getStatus().equals(Status.COMPLETED) && repeatable)); return !(!mqs.getStatus().equals(Status.NOT_STARTED) && !(mqs.getStatus().equals(Status.COMPLETED) && repeatable));
} }
public boolean canQuestByInfoProgress(Character chr) { public boolean canQuestByInfoProgress(Character chr) {
MapleQuestStatus mqs = chr.getQuest(this); QuestStatus mqs = chr.getQuest(this);
List<String> ix = mqs.getInfoEx(); List<String> ix = mqs.getInfoEx();
if (!ix.isEmpty()) { if (!ix.isEmpty()) {
short questid = mqs.getQuestID(); short questid = mqs.getQuestID();
@@ -250,7 +250,7 @@ public class MapleQuest {
} }
public boolean canComplete(Character chr, Integer npcid) { public boolean canComplete(Character chr, Integer npcid) {
MapleQuestStatus mqs = chr.getQuest(this); QuestStatus mqs = chr.getQuest(this);
if (!mqs.getStatus().equals(Status.STARTED)) { if (!mqs.getStatus().equals(Status.STARTED)) {
return false; return false;
} }
@@ -306,7 +306,7 @@ public class MapleQuest {
} }
public void reset(Character chr) { public void reset(Character chr) {
MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.NOT_STARTED); QuestStatus newStatus = new QuestStatus(this, QuestStatus.Status.NOT_STARTED);
chr.updateQuestStatus(newStatus); chr.updateQuestStatus(newStatus);
} }
@@ -317,16 +317,16 @@ public class MapleQuest {
if (timeLimit > 0) { if (timeLimit > 0) {
chr.sendPacket(PacketCreator.removeQuestTimeLimit(id)); chr.sendPacket(PacketCreator.removeQuestTimeLimit(id));
} }
MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.NOT_STARTED); QuestStatus newStatus = new QuestStatus(this, QuestStatus.Status.NOT_STARTED);
newStatus.setForfeited(chr.getQuest(this).getForfeited() + 1); newStatus.setForfeited(chr.getQuest(this).getForfeited() + 1);
chr.updateQuestStatus(newStatus); chr.updateQuestStatus(newStatus);
return true; return true;
} }
public boolean forceStart(Character chr, int npc) { public boolean forceStart(Character chr, int npc) {
MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.STARTED, npc); QuestStatus newStatus = new QuestStatus(this, QuestStatus.Status.STARTED, npc);
MapleQuestStatus oldStatus = chr.getQuest(this.getId()); QuestStatus oldStatus = chr.getQuest(this.getId());
for (Entry<Integer, String> e : oldStatus.getProgress().entrySet()) { for (Entry<Integer, String> e : oldStatus.getProgress().entrySet()) {
newStatus.setProgress(e.getKey(), e.getValue()); newStatus.setProgress(e.getKey(), e.getValue());
} }
@@ -364,7 +364,7 @@ public class MapleQuest {
chr.sendPacket(PacketCreator.removeQuestTimeLimit(id)); chr.sendPacket(PacketCreator.removeQuestTimeLimit(id));
} }
MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.COMPLETED, npc); QuestStatus newStatus = new QuestStatus(this, QuestStatus.Status.COMPLETED, npc);
newStatus.setForfeited(chr.getQuest(this).getForfeited()); newStatus.setForfeited(chr.getQuest(this).getForfeited());
newStatus.setCompleted(chr.getQuest(this).getCompleted()); newStatus.setCompleted(chr.getQuest(this).getCompleted());
newStatus.setCompletionTime(System.currentTimeMillis()); newStatus.setCompletionTime(System.currentTimeMillis());
@@ -581,7 +581,7 @@ public class MapleQuest {
} }
public boolean restoreLostItem(Character chr, int itemid) { public boolean restoreLostItem(Character chr, int itemid) {
if (chr.getQuest(this).getStatus().equals(MapleQuestStatus.Status.STARTED)) { if (chr.getQuest(this).getStatus().equals(QuestStatus.Status.STARTED)) {
ItemAction itemAct = (ItemAction) startActs.get(MapleQuestActionType.ITEM); ItemAction itemAct = (ItemAction) startActs.get(MapleQuestActionType.ITEM);
if (itemAct != null) { if (itemAct != null) {
return itemAct.restoreLostItem(chr, itemid); return itemAct.restoreLostItem(chr, itemid);

View File

@@ -22,7 +22,7 @@
package server.quest.actions; package server.quest.actions;
import client.Character; import client.Character;
import client.MapleQuestStatus; import client.QuestStatus;
import provider.MapleData; import provider.MapleData;
import provider.MapleDataTool; import provider.MapleDataTool;
import server.quest.MapleQuest; import server.quest.MapleQuest;
@@ -49,7 +49,7 @@ public class NextQuestAction extends MapleQuestAction {
@Override @Override
public void run(Character chr, Integer extSelection) { public void run(Character chr, Integer extSelection) {
MapleQuestStatus status = chr.getQuest(MapleQuest.getInstance(questID)); QuestStatus status = chr.getQuest(MapleQuest.getInstance(questID));
chr.sendPacket(PacketCreator.updateQuestFinish((short) questID, status.getNpc(), (short) nextQuest)); chr.sendPacket(PacketCreator.updateQuestFinish((short) questID, status.getNpc(), (short) nextQuest));
} }
} }

View File

@@ -22,7 +22,7 @@
package server.quest.actions; package server.quest.actions;
import client.Character; import client.Character;
import client.MapleQuestStatus; import client.QuestStatus;
import constants.inventory.ItemConstants; import constants.inventory.ItemConstants;
import provider.MapleData; import provider.MapleData;
import provider.MapleDataTool; import provider.MapleDataTool;
@@ -50,8 +50,8 @@ public class PetSkillAction extends MapleQuestAction {
@Override @Override
public boolean check(Character chr, Integer extSelection) { public boolean check(Character chr, Integer extSelection) {
MapleQuestStatus status = chr.getQuest(MapleQuest.getInstance(questID)); QuestStatus status = chr.getQuest(MapleQuest.getInstance(questID));
if(!(status.getStatus() == MapleQuestStatus.Status.NOT_STARTED && status.getForfeited() > 0)) if(!(status.getStatus() == QuestStatus.Status.NOT_STARTED && status.getForfeited() > 0))
return false; return false;
return chr.getPet(0) != null; return chr.getPet(0) != null;

View File

@@ -22,7 +22,7 @@
package server.quest.actions; package server.quest.actions;
import client.Character; import client.Character;
import client.MapleQuestStatus; import client.QuestStatus;
import provider.MapleData; import provider.MapleData;
import provider.MapleDataTool; import provider.MapleDataTool;
import server.quest.MapleQuest; import server.quest.MapleQuest;
@@ -59,7 +59,7 @@ public class QuestAction extends MapleQuestAction {
public void run(Character chr, Integer extSelection) { public void run(Character chr, Integer extSelection) {
for(Integer questID : quests.keySet()) { for(Integer questID : quests.keySet()) {
int stat = quests.get(questID); int stat = quests.get(questID);
chr.updateQuestStatus(new MapleQuestStatus(MapleQuest.getInstance(questID), MapleQuestStatus.Status.getById(stat))); chr.updateQuestStatus(new QuestStatus(MapleQuest.getInstance(questID), QuestStatus.Status.getById(stat)));
} }
} }
} }

View File

@@ -22,7 +22,7 @@
package server.quest.requirements; package server.quest.requirements;
import client.Character; import client.Character;
import client.MapleQuestStatus; import client.QuestStatus;
import provider.MapleData; import provider.MapleData;
import provider.MapleDataTool; import provider.MapleDataTool;
import server.quest.MapleQuest; import server.quest.MapleQuest;
@@ -84,7 +84,7 @@ public class IntervalRequirement extends MapleQuestRequirement {
@Override @Override
public boolean check(Character chr, Integer npcid) { public boolean check(Character chr, Integer npcid) {
boolean check = !chr.getQuest(MapleQuest.getInstance(questID)).getStatus().equals(MapleQuestStatus.Status.COMPLETED); boolean check = !chr.getQuest(MapleQuest.getInstance(questID)).getStatus().equals(QuestStatus.Status.COMPLETED);
boolean check2 = chr.getQuest(MapleQuest.getInstance(questID)).getCompletionTime() <= System.currentTimeMillis() - interval; boolean check2 = chr.getQuest(MapleQuest.getInstance(questID)).getCompletionTime() <= System.currentTimeMillis() - interval;
if (check || check2) { if (check || check2) {

View File

@@ -22,7 +22,7 @@
package server.quest.requirements; package server.quest.requirements;
import client.Character; import client.Character;
import client.MapleQuestStatus; import client.QuestStatus;
import provider.MapleData; import provider.MapleData;
import provider.MapleDataTool; import provider.MapleDataTool;
import server.quest.MapleQuest; import server.quest.MapleQuest;
@@ -62,7 +62,7 @@ public class MobRequirement extends MapleQuestRequirement {
@Override @Override
public boolean check(Character chr, Integer npcid) { public boolean check(Character chr, Integer npcid) {
MapleQuestStatus status = chr.getQuest(MapleQuest.getInstance(questID)); QuestStatus status = chr.getQuest(MapleQuest.getInstance(questID));
for(Integer mobID : mobs.keySet()) { for(Integer mobID : mobs.keySet()) {
int countReq = mobs.get(mobID); int countReq = mobs.get(mobID);
int progress; int progress;

View File

@@ -19,7 +19,7 @@
package server.quest.requirements; package server.quest.requirements;
import client.Character; import client.Character;
import client.MapleQuestStatus; import client.QuestStatus;
import provider.MapleData; import provider.MapleData;
import provider.MapleDataTool; import provider.MapleDataTool;
import server.quest.MapleQuest; import server.quest.MapleQuest;
@@ -58,12 +58,12 @@ public class QuestRequirement extends MapleQuestRequirement {
public boolean check(Character chr, Integer npcid) { public boolean check(Character chr, Integer npcid) {
for(Integer questID : quests.keySet()) { for(Integer questID : quests.keySet()) {
int stateReq = quests.get(questID); int stateReq = quests.get(questID);
MapleQuestStatus qs = chr.getQuest(MapleQuest.getInstance(questID)); QuestStatus qs = chr.getQuest(MapleQuest.getInstance(questID));
if(qs == null && MapleQuestStatus.Status.getById(stateReq).equals(MapleQuestStatus.Status.NOT_STARTED)) if(qs == null && QuestStatus.Status.getById(stateReq).equals(QuestStatus.Status.NOT_STARTED))
continue; continue;
if(qs == null || !qs.getStatus().equals(MapleQuestStatus.Status.getById(stateReq))) { if(qs == null || !qs.getStatus().equals(QuestStatus.Status.getById(stateReq))) {
return false; return false;
} }

View File

@@ -310,29 +310,29 @@ public class PacketCreator {
} }
private static void addQuestInfo(OutPacket p, Character chr) { private static void addQuestInfo(OutPacket p, Character chr) {
List<MapleQuestStatus> started = chr.getStartedQuests(); List<QuestStatus> started = chr.getStartedQuests();
int startedSize = 0; int startedSize = 0;
for (MapleQuestStatus qs : started) { for (QuestStatus qs : started) {
if (qs.getInfoNumber() > 0) { if (qs.getInfoNumber() > 0) {
startedSize++; startedSize++;
} }
startedSize++; startedSize++;
} }
p.writeShort(startedSize); p.writeShort(startedSize);
for (MapleQuestStatus qs : started) { for (QuestStatus qs : started) {
p.writeShort(qs.getQuest().getId()); p.writeShort(qs.getQuest().getId());
p.writeString(qs.getProgressData()); p.writeString(qs.getProgressData());
short infoNumber = qs.getInfoNumber(); short infoNumber = qs.getInfoNumber();
if (infoNumber > 0) { if (infoNumber > 0) {
MapleQuestStatus iqs = chr.getQuest(infoNumber); QuestStatus iqs = chr.getQuest(infoNumber);
p.writeShort(infoNumber); p.writeShort(infoNumber);
p.writeString(iqs.getProgressData()); p.writeString(iqs.getProgressData());
} }
} }
List<MapleQuestStatus> completed = chr.getCompletedQuests(); List<QuestStatus> completed = chr.getCompletedQuests();
p.writeShort(completed.size()); p.writeShort(completed.size());
for (MapleQuestStatus qs : completed) { for (QuestStatus qs : completed) {
p.writeShort(qs.getQuest().getId()); p.writeShort(qs.getQuest().getId());
p.writeLong(getTime(qs.getCompletionTime())); p.writeLong(getTime(qs.getCompletionTime()));
} }
@@ -2738,8 +2738,8 @@ public class PacketCreator {
p.writeInt(0); p.writeInt(0);
} }
ArrayList<Short> medalQuests = new ArrayList<>(); ArrayList<Short> medalQuests = new ArrayList<>();
List<MapleQuestStatus> completed = chr.getCompletedQuests(); List<QuestStatus> completed = chr.getCompletedQuests();
for (MapleQuestStatus qs : completed) { for (QuestStatus qs : completed) {
if (qs.getQuest().getId() >= 29000) { // && q.getQuest().getId() <= 29923 if (qs.getQuest().getId() >= 29000) { // && q.getQuest().getId() <= 29923
medalQuests.add(qs.getQuest().getId()); medalQuests.add(qs.getQuest().getId());
} }
@@ -2878,11 +2878,11 @@ public class PacketCreator {
return p; return p;
} }
public static Packet updateQuest(Character chr, MapleQuestStatus qs, boolean infoUpdate) { public static Packet updateQuest(Character chr, QuestStatus qs, boolean infoUpdate) {
final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO); final OutPacket p = OutPacket.create(SendOpcode.SHOW_STATUS_INFO);
p.writeByte(1); p.writeByte(1);
if (infoUpdate) { if (infoUpdate) {
MapleQuestStatus iqs = chr.getQuest(qs.getInfoNumber()); QuestStatus iqs = chr.getQuest(qs.getInfoNumber());
p.writeShort(iqs.getQuestID()); p.writeShort(iqs.getQuestID());
p.writeByte(1); p.writeByte(1);
p.writeString(iqs.getProgressData()); p.writeString(iqs.getProgressData());