Masteria NPCs & Quests

Added more NPCs for the Phantom Woods and Crimsonwood areas. Enabled
more quests on that area.
This commit is contained in:
ronancpl
2017-07-10 23:42:24 -03:00
parent b7c0bb6c07
commit 57125a70ce
43 changed files with 776 additions and 80 deletions

View File

@@ -233,13 +233,17 @@ public class AbstractPlayerInteraction {
c.getPlayer().updateQuest(status);
}
public MapleQuestStatus.Status getQuestStatus(int id) {
return c.getPlayer().getQuest(MapleQuest.getInstance(id)).getStatus();
public int getQuestStatus(int id) {
return c.getPlayer().getQuest(MapleQuest.getInstance(id)).getStatus().getId();
}
private MapleQuestStatus.Status getQuestStat(int id) {
return c.getPlayer().getQuest(MapleQuest.getInstance(id)).getStatus();
}
public boolean isQuestCompleted(int quest) {
try {
return getQuestStatus(quest) == MapleQuestStatus.Status.COMPLETED;
return getQuestStat(quest) == MapleQuestStatus.Status.COMPLETED;
} catch (NullPointerException e) {
e.printStackTrace();
return false;
@@ -252,7 +256,7 @@ public class AbstractPlayerInteraction {
public boolean isQuestStarted(int quest) {
try {
return getQuestStatus(quest) == MapleQuestStatus.Status.STARTED;
return getQuestStat(quest) == MapleQuestStatus.Status.STARTED;
} catch (NullPointerException e) {
e.printStackTrace();
return false;

View File

@@ -38,6 +38,7 @@ import provider.MapleDataProviderFactory;
import scripting.AbstractPlayerInteraction;
import server.MapleItemInformationProvider;
import server.MapleStatEffect;
import server.MapleShopFactory;
import server.events.gm.MapleEvent;
import server.gachapon.MapleGachapon;
import server.gachapon.MapleGachapon.MapleGachaponItem;
@@ -315,6 +316,10 @@ public class NPCConversationManager extends AbstractPlayerInteraction {
public void resetStats() {
getPlayer().resetStats();
}
public void openShopNPC(int id) {
MapleShopFactory.getInstance().getShop(id).sendShop(c);
}
public void maxMastery() {
for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) {

View File

@@ -50,11 +50,11 @@ public class NPCScriptManager extends AbstractScriptManager {
return instance;
}
public void start(MapleClient c, int npc, MapleCharacter chr) {
start(c, npc, null, chr);
public boolean start(MapleClient c, int npc, MapleCharacter chr) {
return start(c, npc, null, chr);
}
public void start(MapleClient c, int npc, String fileName, MapleCharacter chr) {
public boolean start(MapleClient c, int npc, String fileName, MapleCharacter chr) {
try {
NPCConversationManager cm = new NPCConversationManager(c, npc, fileName);
if (cms.containsKey(c)) {
@@ -69,12 +69,9 @@ public class NPCScriptManager extends AbstractScriptManager {
if (iv == null) {
iv = getInvocable("npc/" + npc + ".js", c);
}
if (iv == null) {
FilePrinter.printError(FilePrinter.NPC_UNCODED, "NPC " + MapleLifeFactory.getNPC(npc).getName() + "(" + npc + ") is not coded.\r\n");
}
if (iv == null || NPCScriptManager.getInstance() == null) {
dispose(c);
return;
return false;
}
engine.put("cm", cm);
scripts.put(c, iv);
@@ -91,12 +88,18 @@ public class NPCScriptManager extends AbstractScriptManager {
} else {
c.announce(MaplePacketCreator.enableActions());
}
return true;
} catch (final UndeclaredThrowableException | ScriptException ute) {
FilePrinter.printError(FilePrinter.NPC + npc + ".txt", ute);
dispose(c);
return false;
} catch (final Exception e) {
FilePrinter.printError(FilePrinter.NPC + npc + ".txt", e);
dispose(c);
return false;
}
}