Rename and clean up MapleQuest

This commit is contained in:
P0nk
2021-09-09 22:42:02 +02:00
parent 75d631bebb
commit fef273ecc9
55 changed files with 436 additions and 436 deletions

View File

@@ -39,24 +39,23 @@ import java.util.*;
import java.util.Map.Entry;
/**
*
* @author Matze
* @author Ronan - support for medal quests
*/
public class MapleQuest {
private static volatile Map<Integer, MapleQuest> quests = new HashMap<>();
public class Quest {
private static volatile Map<Integer, Quest> quests = new HashMap<>();
private static volatile Map<Integer, Integer> infoNumberQuests = new HashMap<>();
private static Map<Short, Integer> medals = new HashMap<>();
private static final Map<Short, Integer> medals = new HashMap<>();
private static final Set<Short> exploitableQuests = new HashSet<>();
static {
exploitableQuests.add((short) 2338); // there are a lot more exploitable quests, they need to be nit-picked
exploitableQuests.add((short) 3637);
exploitableQuests.add((short) 3714);
exploitableQuests.add((short) 21752);
}
protected short id;
protected int timeLimit, timeLimit2;
protected Map<MapleQuestRequirementType, MapleQuestRequirement> startReqs = new EnumMap<>(MapleQuestRequirementType.class);
@@ -72,34 +71,36 @@ public class MapleQuest {
private final static Data questInfo = questData.getData("QuestInfo.img");
private final static Data questAct = questData.getData("Act.img");
private final static Data questReq = questData.getData("Check.img");
private MapleQuest(int id) {
private Quest(int id) {
this.id = (short) id;
Data reqData = questReq.getChildByPath(String.valueOf(id));
if (reqData == null) {//most likely infoEx
return;
}
if(questInfo != null) {
if (questInfo != null) {
Data reqInfo = questInfo.getChildByPath(String.valueOf(id));
if(reqInfo != null) {
if (reqInfo != null) {
name = DataTool.getString("name", reqInfo, "");
parent = DataTool.getString("parent", reqInfo, "");
timeLimit = DataTool.getInt("timeLimit", reqInfo, 0);
timeLimit2 = DataTool.getInt("timeLimit2", reqInfo, 0);
autoStart = DataTool.getInt("autoStart", reqInfo, 0) == 1;
autoPreComplete = DataTool.getInt("autoPreComplete", reqInfo, 0) == 1;
autoComplete = DataTool.getInt("autoComplete", reqInfo, 0) == 1;
int medalid = DataTool.getInt("viewMedalItem", reqInfo, 0);
if(medalid != 0) medals.put(this.id, medalid);
if (medalid != 0) {
medals.put(this.id, medalid);
}
} else {
System.out.println("no data " + id);
}
}
Data startReqData = reqData.getChildByPath("0");
if (startReqData != null) {
for (Data startReq : startReqData.getChildren()) {
@@ -111,26 +112,26 @@ public class MapleQuest {
relevantMobs.add(DataTool.getInt(mob.getChildByPath("id")));
}
}
MapleQuestRequirement req = this.getRequirement(type, startReq);
if (req == null) {
continue;
}
startReqs.put(type, req);
}
}
Data completeReqData = reqData.getChildByPath("1");
if (completeReqData != null) {
for (Data completeReq : completeReqData.getChildren()) {
MapleQuestRequirementType type = MapleQuestRequirementType.getByWZName(completeReq.getName());
MapleQuestRequirementType type = MapleQuestRequirementType.getByWZName(completeReq.getName());
MapleQuestRequirement req = this.getRequirement(type, completeReq);
if (req == null) {
continue;
}
if (type.equals(MapleQuestRequirementType.MOB)) {
for (Data mob : completeReq.getChildren()) {
relevantMobs.add(DataTool.getInt(mob.getChildByPath("id")));
@@ -148,10 +149,11 @@ public class MapleQuest {
for (Data startAct : startActData.getChildren()) {
MapleQuestActionType questActionType = MapleQuestActionType.getByWZName(startAct.getName());
MapleQuestAction act = this.getAction(questActionType, startAct);
if(act == null)
if (act == null) {
continue;
}
startActs.put(questActionType, act);
}
}
@@ -161,14 +163,15 @@ public class MapleQuest {
MapleQuestActionType questActionType = MapleQuestActionType.getByWZName(completeAct.getName());
MapleQuestAction act = this.getAction(questActionType, completeAct);
if(act == null)
if (act == null) {
continue;
}
completeActs.put(questActionType, act);
}
}
}
public boolean isAutoComplete() {
return autoPreComplete || autoComplete;
}
@@ -177,36 +180,38 @@ public class MapleQuest {
return autoStart;
}
public static MapleQuest getInstance(int id) {
MapleQuest ret = quests.get(id);
public static Quest getInstance(int id) {
Quest ret = quests.get(id);
if (ret == null) {
ret = new MapleQuest(id);
ret = new Quest(id);
quests.put(id, ret);
}
return ret;
}
public static MapleQuest getInstanceFromInfoNumber(int infoNumber) {
public static Quest getInstanceFromInfoNumber(int infoNumber) {
Integer id = infoNumberQuests.get(infoNumber);
if (id == null) {
id = infoNumber;
}
return getInstance(id);
}
public boolean isSameDayRepeatable() {
if(!repeatable) return false;
if (!repeatable) {
return false;
}
IntervalRequirement ir = (IntervalRequirement) startReqs.get(MapleQuestRequirementType.INTERVAL);
return ir.getInterval() < YamlConfig.config.server.QUEST_POINT_REPEATABLE_INTERVAL * 60 * 60 * 1000;
}
public boolean canStartQuestByStatus(Character chr) {
QuestStatus mqs = chr.getQuest(this);
return !(!mqs.getStatus().equals(Status.NOT_STARTED) && !(mqs.getStatus().equals(Status.COMPLETED) && repeatable));
}
public boolean canQuestByInfoProgress(Character chr) {
QuestStatus mqs = chr.getQuest(this);
List<String> ix = mqs.getInfoEx();
@@ -216,37 +221,33 @@ public class MapleQuest {
if (infoNumber <= 0) {
infoNumber = questid; // on default infoNumber mimics questid
}
int ixSize = ix.size();
for (int i = 0; i < ixSize; i++) {
String progress = chr.getAbstractPlayerInteraction().getQuestProgress(infoNumber, i);
String ixProgress = ix.get(i);
if (!progress.contentEquals(ixProgress)) {
return false;
}
}
}
return true;
}
public boolean canStart(Character chr, int npcid) {
if (!canStartQuestByStatus(chr)) {
return false;
}
for (MapleQuestRequirement r : startReqs.values()) {
if (!r.check(chr, npcid)) {
return false;
}
}
if (!canQuestByInfoProgress(chr)) {
return false;
}
return true;
return canQuestByInfoProgress(chr);
}
public boolean canComplete(Character chr, Integer npcid) {
@@ -254,18 +255,14 @@ public class MapleQuest {
if (!mqs.getStatus().equals(Status.STARTED)) {
return false;
}
for (MapleQuestRequirement r : completeReqs.values()) {
if (!r.check(chr, npcid)) {
return false;
}
}
if (!canQuestByInfoProgress(chr)) {
return false;
}
return true;
return canQuestByInfoProgress(chr);
}
public void start(Character chr, int npc) {
@@ -325,23 +322,23 @@ public class MapleQuest {
public boolean forceStart(Character chr, int npc) {
QuestStatus newStatus = new QuestStatus(this, QuestStatus.Status.STARTED, npc);
QuestStatus oldStatus = chr.getQuest(this.getId());
for (Entry<Integer, String> e : oldStatus.getProgress().entrySet()) {
newStatus.setProgress(e.getKey(), e.getValue());
}
if(id / 100 == 35 && YamlConfig.config.server.TOT_MOB_QUEST_REQUIREMENT > 0) {
if (id / 100 == 35 && YamlConfig.config.server.TOT_MOB_QUEST_REQUIREMENT > 0) {
int setProg = 999 - Math.min(999, YamlConfig.config.server.TOT_MOB_QUEST_REQUIREMENT);
for(Integer pid : newStatus.getProgress().keySet()) {
if(pid >= 8200000 && pid <= 8200012) {
for (Integer pid : newStatus.getProgress().keySet()) {
if (pid >= 8200000 && pid <= 8200012) {
String pr = StringUtil.getLeftPaddedStr(Integer.toString(setProg), '0', 3);
newStatus.setProgress(pid, pr);
}
}
}
newStatus.setForfeited(chr.getQuest(this).getForfeited());
newStatus.setCompleted(chr.getQuest(this).getCompleted());
@@ -353,9 +350,9 @@ public class MapleQuest {
newStatus.setExpirationTime(System.currentTimeMillis() + timeLimit2);
chr.questTimeLimit2(this, newStatus.getExpirationTime());
}
chr.updateQuestStatus(newStatus);
return true;
}
@@ -363,13 +360,13 @@ public class MapleQuest {
if (timeLimit > 0) {
chr.sendPacket(PacketCreator.removeQuestTimeLimit(id));
}
QuestStatus newStatus = new QuestStatus(this, QuestStatus.Status.COMPLETED, npc);
newStatus.setForfeited(chr.getQuest(this).getForfeited());
newStatus.setCompleted(chr.getQuest(this).getCompleted());
newStatus.setCompletionTime(System.currentTimeMillis());
chr.updateQuestStatus(newStatus);
chr.sendPacket(PacketCreator.showSpecialEffect(9)); // Quest completion
chr.getMap().broadcastMessage(chr, PacketCreator.showForeignEffect(chr.getId(), 9), false); //use 9 instead of 12 for both
return true;
@@ -385,26 +382,29 @@ public class MapleQuest {
public int getStartItemAmountNeeded(int itemid) {
MapleQuestRequirement req = startReqs.get(MapleQuestRequirementType.ITEM);
if(req == null)
return Integer.MIN_VALUE;
if (req == null) {
return Integer.MIN_VALUE;
}
ItemRequirement ireq = (ItemRequirement) req;
return ireq.getItemAmountNeeded(itemid, false);
}
public int getCompleteItemAmountNeeded(int itemid) {
MapleQuestRequirement req = completeReqs.get(MapleQuestRequirementType.ITEM);
if(req == null)
return Integer.MAX_VALUE;
if (req == null) {
return Integer.MAX_VALUE;
}
ItemRequirement ireq = (ItemRequirement) req;
return ireq.getItemAmountNeeded(itemid, true);
}
public int getMobAmountNeeded(int mid) {
MapleQuestRequirement req = completeReqs.get(MapleQuestRequirementType.MOB);
if(req == null)
if (req == null) {
return 0;
}
MobRequirement mreq = (MobRequirement) req;
@@ -435,7 +435,7 @@ public class MapleQuest {
return "";
}
}
public List<String> getInfoEx(Status qs) {
boolean checkEnd = qs.equals(Status.STARTED);
Map<MapleQuestRequirementType, MapleQuestRequirement> reqs = !checkEnd ? startReqs : completeReqs;
@@ -448,215 +448,215 @@ public class MapleQuest {
}
}
public int getTimeLimit() {
return timeLimit;
}
public static void clearCache(int quest) {
public int getTimeLimit() {
return timeLimit;
}
public static void clearCache(int quest) {
quests.remove(quest);
}
public static void clearCache() {
quests.clear();
}
private MapleQuestRequirement getRequirement(MapleQuestRequirementType type, Data data) {
MapleQuestRequirement ret = null;
switch(type) {
case END_DATE:
ret = new EndDateRequirement(this, data);
break;
case JOB:
ret = new JobRequirement(this, data);
break;
case QUEST:
ret = new QuestRequirement(this, data);
break;
case FIELD_ENTER:
ret = new FieldEnterRequirement(this, data);
break;
case INFO_NUMBER:
ret = new InfoNumberRequirement(this, data);
break;
case INFO_EX:
ret = new InfoExRequirement(this, data);
break;
case INTERVAL:
ret = new IntervalRequirement(this, data);
break;
case COMPLETED_QUEST:
ret = new CompletedQuestRequirement(this, data);
break;
case ITEM:
ret = new ItemRequirement(this, data);
break;
case MAX_LEVEL:
ret = new MaxLevelRequirement(this, data);
break;
case MESO:
ret = new MesoRequirement(this, data);
break;
case MIN_LEVEL:
ret = new MinLevelRequirement(this, data);
break;
case MIN_PET_TAMENESS:
ret = new MinTamenessRequirement(this, data);
break;
case MOB:
ret = new MobRequirement(this, data);
break;
case MONSTER_BOOK:
ret = new MonsterBookCountRequirement(this, data);
break;
case NPC:
ret = new NpcRequirement(this, data);
break;
case PET:
ret = new PetRequirement(this, data);
break;
case BUFF:
ret = new BuffRequirement(this, data);
break;
case EXCEPT_BUFF:
ret = new BuffExceptRequirement(this, data);
break;
case SCRIPT:
ret = new ScriptRequirement(this, data);
break;
case NORMAL_AUTO_START:
case START:
case END:
break;
default:
//FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, "Unhandled Requirement Type: " + type.toString() + " QuestID: " + this.getId());
break;
}
return ret;
}
private MapleQuestAction getAction(MapleQuestActionType type, Data data) {
MapleQuestAction ret = null;
switch(type) {
case BUFF:
ret = new BuffAction(this, data);
break;
case EXP:
ret = new ExpAction(this, data);
break;
case FAME:
ret = new FameAction(this, data);
break;
case ITEM:
ret = new ItemAction(this, data);
break;
case MESO:
ret = new MesoAction(this, data);
break;
case NEXTQUEST:
ret = new NextQuestAction(this, data);
break;
case PETSKILL:
ret = new PetSkillAction(this, data);
break;
case QUEST:
ret = new QuestAction(this, data);
break;
case SKILL:
ret = new SkillAction(this, data);
break;
case PETTAMENESS:
ret = new PetTamenessAction(this, data);
break;
case PETSPEED:
ret = new PetSpeedAction(this, data);
break;
case INFO:
ret = new InfoAction(this, data);
break;
default:
//FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, "Unhandled Action Type: " + type.toString() + " QuestID: " + this.getId());
break;
}
return ret;
}
public boolean restoreLostItem(Character chr, int itemid) {
if (chr.getQuest(this).getStatus().equals(QuestStatus.Status.STARTED)) {
ItemAction itemAct = (ItemAction) startActs.get(MapleQuestActionType.ITEM);
if (itemAct != null) {
return itemAct.restoreLostItem(chr, itemid);
}
}
return false;
}
public static void clearCache() {
quests.clear();
}
private MapleQuestRequirement getRequirement(MapleQuestRequirementType type, Data data) {
MapleQuestRequirement ret = null;
switch (type) {
case END_DATE:
ret = new EndDateRequirement(this, data);
break;
case JOB:
ret = new JobRequirement(this, data);
break;
case QUEST:
ret = new QuestRequirement(this, data);
break;
case FIELD_ENTER:
ret = new FieldEnterRequirement(this, data);
break;
case INFO_NUMBER:
ret = new InfoNumberRequirement(this, data);
break;
case INFO_EX:
ret = new InfoExRequirement(this, data);
break;
case INTERVAL:
ret = new IntervalRequirement(this, data);
break;
case COMPLETED_QUEST:
ret = new CompletedQuestRequirement(this, data);
break;
case ITEM:
ret = new ItemRequirement(this, data);
break;
case MAX_LEVEL:
ret = new MaxLevelRequirement(this, data);
break;
case MESO:
ret = new MesoRequirement(this, data);
break;
case MIN_LEVEL:
ret = new MinLevelRequirement(this, data);
break;
case MIN_PET_TAMENESS:
ret = new MinTamenessRequirement(this, data);
break;
case MOB:
ret = new MobRequirement(this, data);
break;
case MONSTER_BOOK:
ret = new MonsterBookCountRequirement(this, data);
break;
case NPC:
ret = new NpcRequirement(this, data);
break;
case PET:
ret = new PetRequirement(this, data);
break;
case BUFF:
ret = new BuffRequirement(this, data);
break;
case EXCEPT_BUFF:
ret = new BuffExceptRequirement(this, data);
break;
case SCRIPT:
ret = new ScriptRequirement(this, data);
break;
case NORMAL_AUTO_START:
case START:
case END:
break;
default:
//FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, "Unhandled Requirement Type: " + type.toString() + " QuestID: " + this.getId());
break;
}
public int getMedalRequirement() {
Integer medalid = medals.get(id);
return medalid != null ? medalid : -1;
return ret;
}
private MapleQuestAction getAction(MapleQuestActionType type, Data data) {
MapleQuestAction ret = null;
switch (type) {
case BUFF:
ret = new BuffAction(this, data);
break;
case EXP:
ret = new ExpAction(this, data);
break;
case FAME:
ret = new FameAction(this, data);
break;
case ITEM:
ret = new ItemAction(this, data);
break;
case MESO:
ret = new MesoAction(this, data);
break;
case NEXTQUEST:
ret = new NextQuestAction(this, data);
break;
case PETSKILL:
ret = new PetSkillAction(this, data);
break;
case QUEST:
ret = new QuestAction(this, data);
break;
case SKILL:
ret = new SkillAction(this, data);
break;
case PETTAMENESS:
ret = new PetTamenessAction(this, data);
break;
case PETSPEED:
ret = new PetSpeedAction(this, data);
break;
case INFO:
ret = new InfoAction(this, data);
break;
default:
//FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, "Unhandled Action Type: " + type.toString() + " QuestID: " + this.getId());
break;
}
public int getNpcRequirement(boolean checkEnd) {
Map<MapleQuestRequirementType, MapleQuestRequirement> reqs = !checkEnd ? startReqs : completeReqs;
MapleQuestRequirement mqr = reqs.get(MapleQuestRequirementType.NPC);
if (mqr != null) {
return ((NpcRequirement) mqr).get();
} else {
return -1;
}
}
public boolean hasScriptRequirement(boolean checkEnd) {
Map<MapleQuestRequirementType, MapleQuestRequirement> reqs = !checkEnd ? startReqs : completeReqs;
MapleQuestRequirement mqr = reqs.get(MapleQuestRequirementType.SCRIPT);
if (mqr != null) {
return ((ScriptRequirement) mqr).get();
} else {
return false;
}
}
public boolean hasNextQuestAction() {
Map<MapleQuestActionType, MapleQuestAction> acts = completeActs;
MapleQuestAction mqa = acts.get(MapleQuestActionType.NEXTQUEST);
return mqa != null;
}
public String getName() {
return name;
}
public String getParentName() {
return parent;
}
public static boolean isExploitableQuest(short questid) {
return exploitableQuests.contains(questid);
}
public static List<MapleQuest> getMatchedQuests(String search) {
List<MapleQuest> ret = new LinkedList<>();
search = search.toLowerCase();
for (MapleQuest mq : quests.values()) {
if (mq.name.toLowerCase().contains(search) || mq.parent.toLowerCase().contains(search)) {
ret.add(mq);
}
}
return ret;
return ret;
}
public boolean restoreLostItem(Character chr, int itemid) {
if (chr.getQuest(this).getStatus().equals(QuestStatus.Status.STARTED)) {
ItemAction itemAct = (ItemAction) startActs.get(MapleQuestActionType.ITEM);
if (itemAct != null) {
return itemAct.restoreLostItem(chr, itemid);
}
}
return false;
}
public int getMedalRequirement() {
Integer medalid = medals.get(id);
return medalid != null ? medalid : -1;
}
public int getNpcRequirement(boolean checkEnd) {
Map<MapleQuestRequirementType, MapleQuestRequirement> reqs = !checkEnd ? startReqs : completeReqs;
MapleQuestRequirement mqr = reqs.get(MapleQuestRequirementType.NPC);
if (mqr != null) {
return ((NpcRequirement) mqr).get();
} else {
return -1;
}
}
public boolean hasScriptRequirement(boolean checkEnd) {
Map<MapleQuestRequirementType, MapleQuestRequirement> reqs = !checkEnd ? startReqs : completeReqs;
MapleQuestRequirement mqr = reqs.get(MapleQuestRequirementType.SCRIPT);
if (mqr != null) {
return ((ScriptRequirement) mqr).get();
} else {
return false;
}
}
public boolean hasNextQuestAction() {
Map<MapleQuestActionType, MapleQuestAction> acts = completeActs;
MapleQuestAction mqa = acts.get(MapleQuestActionType.NEXTQUEST);
return mqa != null;
}
public String getName() {
return name;
}
public String getParentName() {
return parent;
}
public static boolean isExploitableQuest(short questid) {
return exploitableQuests.contains(questid);
}
public static List<Quest> getMatchedQuests(String search) {
List<Quest> ret = new LinkedList<>();
search = search.toLowerCase();
for (Quest mq : quests.values()) {
if (mq.name.toLowerCase().contains(search) || mq.parent.toLowerCase().contains(search)) {
ret.add(mq);
}
}
return ret;
}
public static void loadAllQuests() {
final Map<Integer, MapleQuest> loadedQuests = new HashMap<>();
final Map<Integer, Quest> loadedQuests = new HashMap<>();
final Map<Integer, Integer> loadedInfoNumberQuests = new HashMap<>();
for (Data quest : questInfo.getChildren()) {
int questID = Integer.parseInt(quest.getName());
MapleQuest q = new MapleQuest(questID);
Quest q = new Quest(questID);
loadedQuests.put(questID, q);
int infoNumber;
@@ -672,7 +672,7 @@ public class MapleQuest {
}
}
MapleQuest.quests = loadedQuests;
MapleQuest.infoNumberQuests = loadedInfoNumberQuests;
Quest.quests = loadedQuests;
Quest.infoNumberQuests = loadedInfoNumberQuests;
}
}

View File

@@ -25,8 +25,8 @@ import client.Character;
import provider.Data;
import provider.DataTool;
import server.MapleItemInformationProvider;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
import server.quest.Quest;
/**
*
@@ -35,7 +35,7 @@ import server.quest.MapleQuestActionType;
public class BuffAction extends MapleQuestAction {
int itemEffect;
public BuffAction(MapleQuest quest, Data data) {
public BuffAction(Quest quest, Data data) {
super(MapleQuestActionType.BUFF, quest);
processData(data);
}

View File

@@ -25,8 +25,8 @@ import client.Character;
import config.YamlConfig;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
import server.quest.Quest;
/**
*
@@ -35,7 +35,7 @@ import server.quest.MapleQuestActionType;
public class ExpAction extends MapleQuestAction {
int exp;
public ExpAction(MapleQuest quest, Data data) {
public ExpAction(Quest quest, Data data) {
super(MapleQuestActionType.EXP, quest);
processData(data);
}

View File

@@ -24,8 +24,8 @@ package server.quest.actions;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
import server.quest.Quest;
/**
*
@@ -34,7 +34,7 @@ import server.quest.MapleQuestActionType;
public class FameAction extends MapleQuestAction {
int fame;
public FameAction(MapleQuest quest, Data data) {
public FameAction(Quest quest, Data data) {
super(MapleQuestActionType.FAME, quest);
questID = quest.getId();
processData(data);

View File

@@ -22,8 +22,8 @@ package server.quest.actions;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
import server.quest.Quest;
/**
*
@@ -34,7 +34,7 @@ public class InfoAction extends MapleQuestAction {
private String info;
private int questID;
public InfoAction(MapleQuest quest, Data data) {
public InfoAction(Quest quest, Data data) {
super(MapleQuestActionType.INFO, quest);
questID = quest.getId();
processData(data);

View File

@@ -30,8 +30,8 @@ import constants.inventory.ItemConstants;
import provider.Data;
import provider.DataTool;
import server.MapleItemInformationProvider;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
import server.quest.Quest;
import tools.FilePrinter;
import tools.PacketCreator;
import tools.Pair;
@@ -50,7 +50,7 @@ import java.util.List;
public class ItemAction extends MapleQuestAction {
List<ItemData> items = new ArrayList<>();
public ItemAction(MapleQuest quest, Data data) {
public ItemAction(Quest quest, Data data) {
super(MapleQuestActionType.ITEM, quest);
processData(data);
}

View File

@@ -20,8 +20,8 @@ package server.quest.actions;
import client.Character;
import provider.Data;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
import server.quest.Quest;
import java.util.ArrayList;
import java.util.List;
@@ -34,7 +34,7 @@ public abstract class MapleQuestAction {
private final MapleQuestActionType type;
protected int questID;
public MapleQuestAction(MapleQuestActionType action, MapleQuest quest) {
public MapleQuestAction(MapleQuestActionType action, Quest quest) {
this.type = action;
this.questID = quest.getId();
}

View File

@@ -25,8 +25,8 @@ import client.Character;
import config.YamlConfig;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
import server.quest.Quest;
/**
*
@@ -35,7 +35,7 @@ import server.quest.MapleQuestActionType;
public class MesoAction extends MapleQuestAction {
int mesos;
public MesoAction(MapleQuest quest, Data data) {
public MesoAction(Quest quest, Data data) {
super(MapleQuestActionType.MESO, quest);
questID = quest.getId();
processData(data);

View File

@@ -25,8 +25,8 @@ import client.Character;
import client.QuestStatus;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
import server.quest.Quest;
import tools.PacketCreator;
/**
@@ -36,7 +36,7 @@ import tools.PacketCreator;
public class NextQuestAction extends MapleQuestAction {
int nextQuest;
public NextQuestAction(MapleQuest quest, Data data) {
public NextQuestAction(Quest quest, Data data) {
super(MapleQuestActionType.NEXTQUEST, quest);
processData(data);
}
@@ -49,7 +49,7 @@ public class NextQuestAction extends MapleQuestAction {
@Override
public void run(Character chr, Integer extSelection) {
QuestStatus status = chr.getQuest(MapleQuest.getInstance(questID));
QuestStatus status = chr.getQuest(Quest.getInstance(questID));
chr.sendPacket(PacketCreator.updateQuestFinish((short) questID, status.getNpc(), (short) nextQuest));
}
}

View File

@@ -26,8 +26,8 @@ import client.QuestStatus;
import constants.inventory.ItemConstants;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
import server.quest.Quest;
/**
*
@@ -36,7 +36,7 @@ import server.quest.MapleQuestActionType;
public class PetSkillAction extends MapleQuestAction {
int flag;
public PetSkillAction(MapleQuest quest, Data data) {
public PetSkillAction(Quest quest, Data data) {
super(MapleQuestActionType.PETSKILL, quest);
questID = quest.getId();
processData(data);
@@ -50,7 +50,7 @@ public class PetSkillAction extends MapleQuestAction {
@Override
public boolean check(Character chr, Integer extSelection) {
QuestStatus status = chr.getQuest(MapleQuest.getInstance(questID));
QuestStatus status = chr.getQuest(Quest.getInstance(questID));
if(!(status.getStatus() == QuestStatus.Status.NOT_STARTED && status.getForfeited() > 0))
return false;

View File

@@ -23,8 +23,8 @@ import client.Character;
import client.Client;
import client.inventory.Pet;
import provider.Data;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
import server.quest.Quest;
/**
*
@@ -32,7 +32,7 @@ import server.quest.MapleQuestActionType;
*/
public class PetSpeedAction extends MapleQuestAction {
public PetSpeedAction(MapleQuest quest, Data data) {
public PetSpeedAction(Quest quest, Data data) {
super(MapleQuestActionType.PETTAMENESS, quest);
questID = quest.getId();
}

View File

@@ -24,8 +24,8 @@ import client.Client;
import client.inventory.Pet;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
import server.quest.Quest;
/**
*
@@ -34,7 +34,7 @@ import server.quest.MapleQuestActionType;
public class PetTamenessAction extends MapleQuestAction {
int tameness;
public PetTamenessAction(MapleQuest quest, Data data) {
public PetTamenessAction(Quest quest, Data data) {
super(MapleQuestActionType.PETTAMENESS, quest);
questID = quest.getId();
processData(data);

View File

@@ -25,8 +25,8 @@ import client.Character;
import client.QuestStatus;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
import server.quest.Quest;
import java.util.HashMap;
import java.util.Map;
@@ -39,7 +39,7 @@ public class QuestAction extends MapleQuestAction {
int mesos;
Map<Integer, Integer> quests = new HashMap<>();
public QuestAction(MapleQuest quest, Data data) {
public QuestAction(Quest quest, Data data) {
super(MapleQuestActionType.QUEST, quest);
questID = quest.getId();
processData(data);
@@ -59,7 +59,7 @@ public class QuestAction extends MapleQuestAction {
public void run(Character chr, Integer extSelection) {
for(Integer questID : quests.keySet()) {
int stat = quests.get(questID);
chr.updateQuestStatus(new QuestStatus(MapleQuest.getInstance(questID), QuestStatus.Status.getById(stat)));
chr.updateQuestStatus(new QuestStatus(Quest.getInstance(questID), QuestStatus.Status.getById(stat)));
}
}
}

View File

@@ -27,8 +27,8 @@ import client.Skill;
import client.SkillFactory;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
import server.quest.Quest;
import java.util.ArrayList;
import java.util.HashMap;
@@ -43,7 +43,7 @@ public class SkillAction extends MapleQuestAction {
int itemEffect;
Map<Integer, SkillData> skillData = new HashMap<>();
public SkillAction(MapleQuest quest, Data data) {
public SkillAction(Quest quest, Data data) {
super(MapleQuestActionType.SKILL, quest);
processData(data);
}

View File

@@ -18,12 +18,12 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package server.quest.requirements;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
/**
*
@@ -32,7 +32,7 @@ import server.quest.MapleQuestRequirementType;
public class BuffExceptRequirement extends MapleQuestRequirement {
private int buffId = -1;
public BuffExceptRequirement(MapleQuest quest, Data data) {
public BuffExceptRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.BUFF);
processData(data);
}

View File

@@ -22,8 +22,8 @@ package server.quest.requirements;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
/**
*
@@ -32,7 +32,7 @@ import server.quest.MapleQuestRequirementType;
public class BuffRequirement extends MapleQuestRequirement {
private int buffId = 1;
public BuffRequirement(MapleQuest quest, Data data) {
public BuffRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.BUFF);
processData(data);
}

View File

@@ -24,8 +24,8 @@ package server.quest.requirements;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
/**
*
@@ -35,7 +35,7 @@ public class CompletedQuestRequirement extends MapleQuestRequirement {
private int reqQuest;
public CompletedQuestRequirement(MapleQuest quest, Data data) {
public CompletedQuestRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.COMPLETED_QUEST);
processData(data);
}

View File

@@ -24,8 +24,8 @@ package server.quest.requirements;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
import java.util.Calendar;
@@ -37,7 +37,7 @@ public class EndDateRequirement extends MapleQuestRequirement {
private String timeStr;
public EndDateRequirement(MapleQuest quest, Data data) {
public EndDateRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.END_DATE);
processData(data);
}

View File

@@ -24,8 +24,8 @@ package server.quest.requirements;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
/**
*
@@ -35,7 +35,7 @@ public class FieldEnterRequirement extends MapleQuestRequirement {
private int mapId = -1;
public FieldEnterRequirement(MapleQuest quest, Data data) {
public FieldEnterRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.FIELD_ENTER);
processData(data);
}

View File

@@ -24,8 +24,8 @@ package server.quest.requirements;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
import java.util.ArrayList;
import java.util.List;
@@ -39,7 +39,7 @@ public class InfoExRequirement extends MapleQuestRequirement {
private int questID;
public InfoExRequirement(MapleQuest quest, Data data) {
public InfoExRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.INFO_EX);
questID = quest.getId();
processData(data);

View File

@@ -22,8 +22,8 @@ package server.quest.requirements;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
/**
*
@@ -34,7 +34,7 @@ public class InfoNumberRequirement extends MapleQuestRequirement {
private short infoNumber;
private int questID;
public InfoNumberRequirement(MapleQuest quest, Data data) {
public InfoNumberRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.INFO_NUMBER);
questID = quest.getId();
processData(data);

View File

@@ -25,8 +25,8 @@ import client.Character;
import client.QuestStatus;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
/**
*
@@ -36,7 +36,7 @@ public class IntervalRequirement extends MapleQuestRequirement {
private int interval = -1;
private int questID;
public IntervalRequirement(MapleQuest quest, Data data) {
public IntervalRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.INTERVAL);
questID = quest.getId();
processData(data);
@@ -54,7 +54,7 @@ public class IntervalRequirement extends MapleQuestRequirement {
private static String getIntervalTimeLeft(Character chr, IntervalRequirement r) {
StringBuilder str = new StringBuilder();
long futureTime = chr.getQuest(MapleQuest.getInstance(r.questID)).getCompletionTime() + r.getInterval();
long futureTime = chr.getQuest(Quest.getInstance(r.questID)).getCompletionTime() + r.getInterval();
long leftTime = futureTime - System.currentTimeMillis();
byte mode = 0;
@@ -84,8 +84,8 @@ public class IntervalRequirement extends MapleQuestRequirement {
@Override
public boolean check(Character chr, Integer npcid) {
boolean check = !chr.getQuest(MapleQuest.getInstance(questID)).getStatus().equals(QuestStatus.Status.COMPLETED);
boolean check2 = chr.getQuest(MapleQuest.getInstance(questID)).getCompletionTime() <= System.currentTimeMillis() - interval;
boolean check = !chr.getQuest(Quest.getInstance(questID)).getStatus().equals(QuestStatus.Status.COMPLETED);
boolean check2 = chr.getQuest(Quest.getInstance(questID)).getCompletionTime() <= System.currentTimeMillis() - interval;
if (check || check2) {
return true;

View File

@@ -28,8 +28,8 @@ import constants.inventory.ItemConstants;
import provider.Data;
import provider.DataTool;
import server.MapleItemInformationProvider;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
import java.util.HashMap;
import java.util.Map;
@@ -42,7 +42,7 @@ public class ItemRequirement extends MapleQuestRequirement {
Map<Integer, Integer> items = new HashMap<>();
public ItemRequirement(MapleQuest quest, Data data) {
public ItemRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.ITEM);
processData(data);
}

View File

@@ -25,8 +25,8 @@ import client.Character;
import client.Job;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
import java.util.ArrayList;
import java.util.List;
@@ -38,7 +38,7 @@ import java.util.List;
public class JobRequirement extends MapleQuestRequirement {
List<Integer> jobs = new ArrayList<>();
public JobRequirement(MapleQuest quest, Data data) {
public JobRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.JOB);
processData(data);
}

View File

@@ -24,8 +24,8 @@ package server.quest.requirements;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
/**
*
@@ -35,7 +35,7 @@ public class MaxLevelRequirement extends MapleQuestRequirement {
private int maxLevel;
public MaxLevelRequirement(MapleQuest quest, Data data) {
public MaxLevelRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.MAX_LEVEL);
processData(data);
}

View File

@@ -22,8 +22,8 @@ package server.quest.requirements;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
/**
*
@@ -32,7 +32,7 @@ import server.quest.MapleQuestRequirementType;
public class MesoRequirement extends MapleQuestRequirement {
private int meso = 0;
public MesoRequirement(MapleQuest quest, Data data) {
public MesoRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.MESO);
processData(data);
}

View File

@@ -24,8 +24,8 @@ package server.quest.requirements;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
/**
*
@@ -35,7 +35,7 @@ public class MinLevelRequirement extends MapleQuestRequirement {
private int minLevel;
public MinLevelRequirement(MapleQuest quest, Data data) {
public MinLevelRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.MIN_LEVEL);
processData(data);
}

View File

@@ -25,8 +25,8 @@ import client.Character;
import client.inventory.Pet;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
/**
*
@@ -36,7 +36,7 @@ public class MinTamenessRequirement extends MapleQuestRequirement {
private int minTameness;
public MinTamenessRequirement(MapleQuest quest, Data data) {
public MinTamenessRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.MIN_PET_TAMENESS);
processData(data);
}

View File

@@ -25,8 +25,8 @@ import client.Character;
import client.QuestStatus;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
import tools.FilePrinter;
import java.util.HashMap;
@@ -40,7 +40,7 @@ public class MobRequirement extends MapleQuestRequirement {
Map<Integer, Integer> mobs = new HashMap<>();
private int questID;
public MobRequirement(MapleQuest quest, Data data) {
public MobRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.MOB);
questID = quest.getId();
processData(data);
@@ -62,7 +62,7 @@ public class MobRequirement extends MapleQuestRequirement {
@Override
public boolean check(Character chr, Integer npcid) {
QuestStatus status = chr.getQuest(MapleQuest.getInstance(questID));
QuestStatus status = chr.getQuest(Quest.getInstance(questID));
for(Integer mobID : mobs.keySet()) {
int countReq = mobs.get(mobID);
int progress;

View File

@@ -24,8 +24,8 @@ package server.quest.requirements;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
/**
*
@@ -35,7 +35,7 @@ public class MonsterBookCountRequirement extends MapleQuestRequirement {
private int reqCards;
public MonsterBookCountRequirement(MapleQuest quest, Data data) {
public MonsterBookCountRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.MONSTER_BOOK);
processData(data);
}

View File

@@ -24,8 +24,8 @@ package server.quest.requirements;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
/**
*
@@ -34,7 +34,7 @@ import server.quest.MapleQuestRequirementType;
public class NpcRequirement extends MapleQuestRequirement {
private int reqNPC;
public NpcRequirement(MapleQuest quest, Data data) {
public NpcRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.NPC);
processData(data);
}

View File

@@ -25,8 +25,8 @@ import client.Character;
import client.inventory.Pet;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
import java.util.ArrayList;
import java.util.List;
@@ -39,7 +39,7 @@ public class PetRequirement extends MapleQuestRequirement {
List<Integer> petIDs = new ArrayList<>();
public PetRequirement(MapleQuest quest, Data data) {
public PetRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.PET);
processData(data);
}

View File

@@ -22,8 +22,8 @@ import client.Character;
import client.QuestStatus;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
import java.util.HashMap;
import java.util.Map;
@@ -35,7 +35,7 @@ import java.util.Map;
public class QuestRequirement extends MapleQuestRequirement {
Map<Integer, Integer> quests = new HashMap<>();
public QuestRequirement(MapleQuest quest, Data data) {
public QuestRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.QUEST);
processData(data);
}
@@ -58,7 +58,7 @@ public class QuestRequirement extends MapleQuestRequirement {
public boolean check(Character chr, Integer npcid) {
for(Integer questID : quests.keySet()) {
int stateReq = quests.get(questID);
QuestStatus qs = chr.getQuest(MapleQuest.getInstance(questID));
QuestStatus qs = chr.getQuest(Quest.getInstance(questID));
if(qs == null && QuestStatus.Status.getById(stateReq).equals(QuestStatus.Status.NOT_STARTED))
continue;

View File

@@ -18,12 +18,12 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package server.quest.requirements;
import client.Character;
import provider.Data;
import provider.DataTool;
import server.quest.MapleQuest;
import server.quest.MapleQuestRequirementType;
import server.quest.Quest;
/**
*
@@ -32,7 +32,7 @@ import server.quest.MapleQuestRequirementType;
public class ScriptRequirement extends MapleQuestRequirement {
private boolean reqScript;
public ScriptRequirement(MapleQuest quest, Data data) {
public ScriptRequirement(Quest quest, Data data) {
super(MapleQuestRequirementType.BUFF);
processData(data);
}