WK charges fix + Job level cap + MapleQuestItemFetcher

Fixed WK charges not overriding one another and some concurrency issues within MapleMap and EventInstanceManager.
New feature: job level cap, limits EXP gain until job advancement is done.
New tool: MapleQuestItemFetcher, searches through the server files for missing quest items and reports the results.
This commit is contained in:
ronancpl
2017-11-07 10:44:00 -02:00
parent 1fead59c57
commit 624aca375e
164 changed files with 26482 additions and 35341 deletions

View File

@@ -27,7 +27,6 @@ importPackage(Packages.tools);
var entryMap = 922000010;
var exitMap = 221024400;
var eventTime = 10; //10 minutes
var eim;
function init() {
em.setProperty("noEntry","false");

View File

@@ -1,7 +1,6 @@
var minPlayers = 1;
var timeLimit = 10; //10 minutes
var timeLimit = 1; //10 minutes
var eventTimer = 1000 * 60 * timeLimit;
var entryMap = 910510001;
var exitMap = 105070300;
var eventMap = 910510000;
@@ -18,12 +17,7 @@ function setup(difficulty, lobbyId){
function afterSetup(eim){}
function respawn(eim){
var map = eim.getMapInstance(entryMap);
map.allowSummonState(true);
map.instanceMapRespawn();
eim.schedule("respawn", 10000);
}
function respawn(eim){}
function playerEntry(eim, player){
var cave = eim.getMapInstance(eventMap);
@@ -43,7 +37,7 @@ function playerRevive(eim, player){
player.setHp(50);
player.setStance(0);
eim.unregisterPlayer(player);
player.changeMap(entryMap);
player.changeMap(exitMap);
return false;
}
@@ -65,19 +59,7 @@ function monsterValue(eim, mobId){
return -1;
}
function leftParty(eim, player){
var party = eim.getPlayers();
if(party.size() < minPlayers){
for(var i = 0; i < party.size(); i++){
playerExit(eim, party.get(i));
}
eim.dispose();
}
else{
playerExit(eim, player);
}
}
function leftParty(eim, player){}
function disbandParty(eim){}
@@ -85,11 +67,11 @@ function playerUnregistered(eim, player){}
function playerExit(eim, player){
eim.unregisterPlayer(player);
player.changeMap(entryMap, 2);
player.changeMap(exitMap);
}
function moveMap(eim, player){
if(player.getMap().getId() == exitMap || player.getMap().getId() == entryMap){
function changedMap(eim, player){
if(player.getMap().getId() < eventMap || player.getMap().getId() > next){
removePlayer(eim, player);
eim.stopEventTimer();
eim.setEventCleared();
@@ -100,7 +82,7 @@ function moveMap(eim, player){
function removePlayer(eim, player){
eim.unregisterPlayer(player);
player.getMap().removePlayer(player);
player.setMap(entryMap);
player.setMap(exitMap);
}
function cancelSchedule(){}

View File

@@ -0,0 +1,11 @@
importPackage(Packages.server.life);
function start(ms){
var mobId = 9300344;
var player = ms.getPlayer();
var map = player.getMap();
if(map.countMonster(mobId) == 0) {
map.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(mobId), new java.awt.Point(680, 258));
}
}

33
scripts/npc/1063016.js Normal file
View File

@@ -0,0 +1,33 @@
/* Strange Looking Statue
Puppeteer's Secret Passage (910510100)
Puppeteer JQ.
*/
var status;
function start() {
status = -1;
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == -1) {
cm.dispose();
} else {
if (mode == 0 && type > 0) {
cm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if(status == 0) {
cm.sendYesNo("Will you exit this trial?");
} else {
cm.warp(105040201, 2);
cm.dispose();
}
}
}

38
scripts/npc/1063017.js Normal file
View File

@@ -0,0 +1,38 @@
/* Monstrous Looking Statue
Puppeteer's Secret Passage (910510100)
Puppeteer JQ.
*/
var status;
function start() {
status = -1;
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == -1) {
cm.dispose();
} else {
if (mode == 0 && type > 0) {
cm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if(status == 0) {
cm.sendYesNo("Ahead awaits the Master himself. Are you ready to face him?");
} else {
if(cm.getClient().getChannelServer().getMapFactory().getMap(925020010).getCharacters().size() > 0) {
cm.sendOk("Someone is already challenging the Master. Try again later.");
} else {
cm.warp(910510202, 0);
}
cm.dispose();
}
}
}

View File

@@ -15,8 +15,6 @@ function action(mode, type, selection){
else
status++;
if(status == 0){
cm.sendNext("What the... you don't belong here!");
}

View File

@@ -5,7 +5,16 @@
var status = -1;
function start() {
action(1, 0, 0);
}
function action(mode, type, selection) {
if(mode == -1 || mode == 0 && type > 0) {
cm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
@@ -16,8 +25,8 @@ function action(mode, type, selection) {
} else if (status == 1) {
cm.sendNextPrev("#b(The Black Wings? Huh? Who are they? And how is all this related to the Black Mage? Hm, maybe you should report this info to Tru.)#k", 3);
} else if (status == 2) {
cm.startQuest(21760);
cm.warp(105040200, 3);//104000004
cm.dispose();
cm.startQuest(21760);
cm.warp(105040200, 3);//104000004
cm.dispose();
}
}

View File

@@ -79,9 +79,9 @@ function action(mode, type, selection) {
cm.sendNext("Haha! Who are you trying to impress with a heart like that?\r\nGo back home where you belong!");
} else {
if(cm.getClient().getChannelServer().getMapFactory().getMap(925020010).getCharacters().size() > 0) {
cm.sendOk("Someone is already in Dojo");
cm.dispose();
return;
cm.sendOk("Someone is already in Dojo.");
cm.dispose();
return;
}
cm.warp(925020010, 0);
cm.getPlayer().setFinishedDojoTutorial();

View File

@@ -22,11 +22,10 @@ function action(mode, type, selection){
}
else if(status == 1){
if(cm.getText() == "Francis is a genius Puppeteer!"){
if(cm.isQuestCompleted(20730) || !cm.isQuestStarted(20730) || (cm.isQuestStarted(20730) && cm.getQuestProgress(20730, 9300285) > 0))
cm.warp(910510000, 1);
else if(cm.isQuestStarted(20730))
if(cm.isQuestStarted(20730) && cm.getQuestProgress(20730, 9300285) == 0)
cm.warp(910510001, 1);
else
cm.playerMessage(5, "Although you said the right answer, some mysterious forces is blocking the way in.");
cm.dispose();
}

View File

@@ -0,0 +1,12 @@
function enter(pi) {
if(pi.isQuestCompleted(20730) || pi.isQuestCompleted(21731)) { // puppeteer defeated, newfound secret path
pi.warp(105070300,3);
return true;
} else if(pi.isQuestStarted(21731)) {
pi.warp(910510100,0);
return true;
} else {
pi.message("An ominous power prevents you from passing here.");
return false;
}
}

View File

@@ -1,4 +1,9 @@
function enter(pi) {
if(pi.isQuestCompleted(20730) || pi.isQuestCompleted(21731)) { // puppeteer defeated, newfound secret path
pi.warp(105040201,2);
return true;
}
pi.openNpc(1063011, "PupeteerPassword");
return false;
}