Autopot & Steal patch + Friendly mob drops + Portal update fix

Adjusted pet autopot to use temporary variables instead of the current player's HP, MP. This seems to have solved a race condition issue where the pet would instantly use up all the pots of the assigned itemid the player had on the inventory.
Steal now uses the effective chance it is supposed to use.
Reworked Steal so that it determines which item to drop accordingly with the drop rates of each available item. It won't drop Quest nor Party Quest items.
Reworked friendly mob drops to act on the same way common mobs drops items.
Fixed issues with scripted portals introduced on the Portal Soundeffect update patch. There is expected to have no more syntax errors on the portal scripts.
Improved quality of the strings used on the Expedition scripts.
New command: reach. Warps the caller to the area where the targeted player is.
This commit is contained in:
ronancpl
2018-02-20 18:37:32 -03:00
parent 8f76e7be25
commit a4973b8254
45 changed files with 517 additions and 210 deletions

View File

@@ -40,7 +40,7 @@ function cancelSchedule() {
}
function start() {
var mapObj = em.getChannelServer().getMapFactory().getMap(800020120);
var mapObj = em.getChannelServer().getMapFactory().getMap(800020120); // original mapid was 251010101
var mobObj = Packages.server.life.MapleLifeFactory.getMonster(6090002);
if(mapObj.getMonsterById(6090002) != null) {

View File

@@ -222,7 +222,7 @@ function scheduledTimeout(eim) {
function changedMap(eim, player, mapid) {
if (mapid < minMapId || mapid > maxMapId) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
eim.unregisterPlayer(player);
end(eim);
}
@@ -279,7 +279,7 @@ function playerDead(eim, player) {}
function playerRevive(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.unregisterPlayer(player);
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
end(eim);
}
else {
@@ -290,7 +290,7 @@ function playerRevive(eim, player) {
function playerDisconnected(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
eim.unregisterPlayer(player);
end(eim);
}

View File

@@ -107,7 +107,7 @@ function scheduledTimeout(eim) {
function changedMap(eim, player, mapid) {
if (mapid < minMapId || mapid > maxMapId) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
eim.unregisterPlayer(player);
end(eim);
}
@@ -125,7 +125,7 @@ function playerDead(eim, player) {}
function playerRevive(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.unregisterPlayer(player);
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
end(eim);
}
else {
@@ -136,7 +136,7 @@ function playerRevive(eim, player) {
function playerDisconnected(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
eim.unregisterPlayer(player);
end(eim);
}

View File

@@ -109,7 +109,7 @@ function scheduledTimeout(eim) {
function changedMap(eim, player, mapid) {
if (mapid < minMapId || mapid > maxMapId) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue this expedition.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
eim.unregisterPlayer(player);
end(eim);
}
@@ -144,7 +144,7 @@ function playerRevive(eim, player) {
function playerDisconnected(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue this expedition.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
eim.unregisterPlayer(player);
end(eim);
}

View File

@@ -93,7 +93,7 @@ function scheduledTimeout(eim) {
function changedMap(eim, player, mapid) {
if (mapid < minMapId || mapid > maxMapId) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
eim.unregisterPlayer(player);
end(eim);
}
@@ -111,7 +111,7 @@ function playerDead(eim, player) {}
function playerRevive(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.unregisterPlayer(player);
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
end(eim);
}
else {
@@ -122,7 +122,7 @@ function playerRevive(eim, player) {
function playerDisconnected(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
eim.unregisterPlayer(player);
end(eim);
}

View File

@@ -99,7 +99,7 @@ function scheduledTimeout(eim) {
function changedMap(eim, player, mapid) {
if (mapid < minMapId || mapid > maxMapId) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
eim.unregisterPlayer(player);
end(eim);
}
@@ -117,7 +117,7 @@ function playerDead(eim, player) {}
function playerRevive(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.unregisterPlayer(player);
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
end(eim);
}
else {
@@ -128,7 +128,7 @@ function playerRevive(eim, player) {
function playerDisconnected(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
eim.unregisterPlayer(player);
end(eim);
}

View File

@@ -95,7 +95,7 @@ function scheduledTimeout(eim) {
function changedMap(eim, player, mapid) {
if (mapid < minMapId || mapid > maxMapId) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
eim.unregisterPlayer(player);
end(eim);
}
@@ -113,7 +113,7 @@ function playerDead(eim, player) {}
function playerRevive(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.unregisterPlayer(player);
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
end(eim);
}
else {
@@ -124,7 +124,7 @@ function playerRevive(eim, player) {
function playerDisconnected(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
eim.unregisterPlayer(player);
end(eim);
}

View File

@@ -3,7 +3,6 @@ importPackage(Packages.server.events);
var status = 0;
var dispose = false;
function start(){
status == 0;
action(1, 0, 0);
}

47
scripts/npc/1092015.js Normal file
View File

@@ -0,0 +1,47 @@
/*
This file is part of the HeavenMS (MapleSolaxiaV2) MapleStory Server
Copyleft (L) 2017 RonanLana
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* Water Filter */
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.sendOk("I'm bored! Someone come play with me!");
cm.dispose();
}
}
}

View File

@@ -37,8 +37,9 @@ function action(mode, type, selection) {
status++;
if (status == 0) {
if(!hasCoupon) {
var display = "";
for(var i=0; i < menu.length; i++) {
var display = "\r\n#L"+i+"##b Victoria Island (1000 mesos)#k";
display += "\r\n#L"+i+"##b Victoria Island (1000 mesos)#k";
}
cm.sendSimple("Eh, Hello...again. Do you want to leave Ereve and go somewhere else? If so, you've come to the right place. I operate a ferry that goes from #bEreve#k to #bVictoria Island#k, I can take you to #bVictoria Island#k if you want... You'll have to pay a fee of #b1000#k Mesos.\r\n"+display);
} else {

View File

@@ -31,8 +31,9 @@ function action(mode, type, selection) {
}
status++;
if (status == 0) {
var display = "";
for (var i = 0; i < menu.length; i++) {
var display = "\r\n#L" + i + "##b Orbis (1000 mesos)#k";
display += "\r\n#L" + i + "##b Orbis (1000 mesos)#k";
}
cm.sendSimple("Hmm... The winds are favorable. Are you thinking of leaving ereve and going somwhere else? This ferry sails to Orbis on the Ossyria Continent, Have you taking care of everything you needed to in Ereve? If you happen to be headed toward #bOrbis#k i can take you there. What do you day? Are you going to go to Orbis?\r\n" + display);

View File

@@ -32,10 +32,11 @@ function action(mode, type, selection) {
}
status++;
if (status == 0) {
for(var i=0; i < menu.length; i++) {
var display = "\r\n#L"+i+"##b Ereve (1000 mesos)#k";
}
cm.sendSimple("Eh... So... Um... Are you trying to leave Victoria to go to a different region? You can take this boat to #bEreve#k. There, you will see bright sunlight shinning on the leaves and feel a gentle breeze on your skin. It's where Shinsoo and Empress Cygnus are. Would you like to go to Ereve? It will take about #b2 Minutes#k, and it will cost you #b1000#k mesos.\r\n"+display);
var display = "";
for(var i=0; i < menu.length; i++) {
display += "\r\n#L"+i+"##b Ereve (1000 mesos)#k";
}
cm.sendSimple("Eh... So... Um... Are you trying to leave Victoria to go to a different region? You can take this boat to #bEreve#k. There, you will see bright sunlight shinning on the leaves and feel a gentle breeze on your skin. It's where Shinsoo and Empress Cygnus are. Would you like to go to Ereve? It will take about #b2 Minutes#k, and it will cost you #b1000#k mesos.\r\n"+display);
} else if(status == 1) {
if(cm.getMeso() < 1000) {

View File

@@ -32,8 +32,9 @@ function action(mode, type, selection) {
}
status++;
if (status == 0) {
var display = "";
for(var i=0; i < menu.length; i++) {
var display = "\r\n#L"+i+"##b Ereve (1000 mesos)#k";
display += "\r\n#L"+i+"##b Ereve (1000 mesos)#k";
}
cm.sendSimple("This ship will head towards #bEreve#k, an island where you'll find crimson leaves soaking up the sun, the gentle breeze that glides past the stream, and the Empress of Maple Cygnus. If you're interested in joining the Cygnus Knights, Then you should definitly pay a visit here. Are you interested in visiting Ereve?, The Trip will cost you #b1000#k Mesos\r\n"+display);

View File

@@ -32,8 +32,9 @@ function action(mode, type, selection) {
}
status++;
if (status == 0) {
var display = "";
for(var i=0; i < menu.length; i++) {
var display = "\r\n#L"+i+"##b Lith Harbor (800 mesos)#k";
display += "\r\n#L"+i+"##b Lith Harbor (800 mesos)#k";
}
cm.sendSimple("Are you trying to leave Rien? Board this ship and I'll take you from #bRien#k to #bLith Harbor#k and back. for a #bfee of 800#k Mesos. Would you like to head over to Lith Harbor now? It'll take about a minute to get there.\r\n"+display);

View File

@@ -32,8 +32,9 @@ function action(mode, type, selection) {
}
status++;
if (status == 0) {
var display = "";
for(var i=0; i < menu.length; i++) {
var display = "\r\n#L"+i+"##b Rien (800 mesos)#k";
display += "\r\n#L"+i+"##b Rien (800 mesos)#k";
}
cm.sendSimple("Are you thinking about leaving Victoria Island and heading to our town? If you board this ship, I can take you from #bLith Harbor#k to #bRien#k and back. But you must pay a #bfee of 800#k Mesos. Would you like to go to Rien? It'll take about a minute to get there.\r\n"+display);

View File

@@ -101,7 +101,7 @@ function action(mode, type, selection) {
} else {
if(cm.haveItem(4031061) && cm.haveItem(4031062)) {
if(!cm.haveItem(4000082, 30)) {
cm.sendOk("You have completed the trials, however there still the need of #b30 #t4000082##k to forge the #t4001017#.");
cm.sendOk("You have completed the trials, however there's still the need of #b30 #t4000082##k to forge the #t4001017#.");
} else {
cm.completeQuest(100201);
cm.gainItem(4031061, -1);
@@ -109,7 +109,7 @@ function action(mode, type, selection) {
cm.gainItem(4000082, -30);
cm.gainItem(4001017, 1);
cm.sendNext("You have completed the trials, from now on having my approval to challenge Zakum.");
cm.sendNext("You #rhave completed the trials#k, from now on having my approval to challenge Zakum.");
}
cm.dispose();

View File

@@ -79,9 +79,9 @@ function action(mode, type, selection) {
else {
gotAllDocs = cm.haveItem(4001015, 30);
if (!gotAllDocs) { //documents
cm.sendYesNo("So, you brought the fire ore with you? In that case, I can give you and your party a piece of it that should be more than enough to make the core of Zakum. Make sure your whole party has room in their inventory before proceeding.");
cm.sendYesNo("So, you brought the fire ore with you? In that case, I can give to you and to each member of your party a piece of it, that should be more than enough to make the core of Zakum. Make sure your whole party has room in their inventory before proceeding.");
} else {
cm.sendYesNo("So, you brought the fire ore and the documents with you? In that case, I can give you and your party a piece of it that should be more than enough to make the core of Zakum. As well, since you brought the documents with you, I can also give you a special item which will #bbring you to the mine's entrance at any time#k. Make sure your whole party has room in their inventory before proceeding.");
cm.sendYesNo("So, you brought the fire ore and the documents with you? In that case, I can give to you and to each member of your party a piece of it, that should be more than enough to make the core of Zakum. As well, since you #rbrought the documents#k with you, I can also provide you a special item which will #bbring you to the mine's entrance at any time#k. Make sure your whole party has room in their inventory before proceeding.");
}
}
} else if (selection == 2)

View File

@@ -38,7 +38,7 @@ function action(mode, type, selection) {
status++;
if (status == 0) {
cm.sendNext("Congratulations on getting this far! Well, I suppose I'd better give you your #bBreath of Fire#k. You've certainly earned it!");
cm.sendNext("Congratulations on getting this far! Well, I suppose I'd better give you the #bBreath of Fire#k. You've certainly earned it!");
} else if (status == 1) {
if(!cm.canHold(4031062)) {
cm.sendOk("Try freeing a slot to receive the #b#t4031062##k.");

View File

@@ -143,7 +143,7 @@ function action(mode, type, selection) {
cost = costSet[selectedItem];
}
//Ludi fee is -10%, array not changed unlike 2040016 and 2040020
cost *= .9;
cost *= 0.9;
var prompt = "You want me to make a #t" + item + "#? In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b";
if(stimulator)
prompt += "\r\n#i"+stimID+"# 1 #t" + stimID + "#";

47
scripts/npc/9000007.js Normal file
View File

@@ -0,0 +1,47 @@
/*
This file is part of the HeavenMS (MapleSolaxiaV2) MapleStory Server
Copyleft (L) 2017 RonanLana
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* Chun Ji */
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.sendOk("Just a kid... Don't talk to me...");
cm.dispose();
}
}
}

View File

@@ -1,9 +1,14 @@
/**
*9201083 - T-1337
*9201101 - T-1337
*@author Ronan
*/
function start() {
cm.sendOk("The patrol in New Leaf City is always ready. No creatures are able to break through to the city.");
if(Packages.server.MapleShopFactory.getInstance().getShop(9201101) != null) {
cm.openShopNPC(9201101);
} else {
cm.sendOk("The patrol in New Leaf City is always ready. No creatures are able to break through to the city.");
}
cm.dispose();
}

View File

@@ -30,13 +30,20 @@ function action(mode, type, selection) {
if (status == 0) {
var greeting = "Hello, I'm #p9209000#, the Skill & Mastery Book announcer! ";
var jobrank = cm.getJob().getId() % 10;
if(jobrank < 2) {
cm.sendOk(greeting + "Keep training yourself until you reach the #r4th job#k of your class. New opportunities for improvement will arrive when you reach that feat!");
cm.dispose();
return;
}
skillbook = cm.getAvailableSkillBooks();
masterybook = cm.getAvailableMasteryBooks();
if(skillbook.length == 0 && masterybook.length == 0) {
cm.sendOk(greeting + "There are no more books available to further improve your job skills for now. Either you #bmaxed out everything#k or #byou didn't reach the minimum requisites to use some skill books#k yet.");
cm.sendOk(greeting + "There are no books available to further improve your job skills for now. Either you #bmaxed out everything#k or #byou didn't reach the minimum requisites to use some skill books#k yet.");
cm.dispose();
} else if(skillbook.length > 0 && masterybook.length > 0) {
var sendStr = greeting + "New opportunities for skill improvement have been located for you to improve your skills! Pick a type to take a look onto.\r\n\r\n#b";
@@ -51,7 +58,7 @@ function action(mode, type, selection) {
selected = 2;
cm.sendNext(greeting + "New opportunities for skill improvement have been located for you to improve your skills! Only skill upgrades available.");
}
} else if(status == 1) {
var sendStr = "The following books are currently available:\r\n\r\n";
if(selected == 0) selected = selection;

View File

@@ -166,6 +166,7 @@ function writeSolaxiaCommandsLv2() { //JrGM
addCommand("warp", "");
addCommand("warpto", "");
addCommand("warphere", "");
addCommand("reach", "");
addCommand("gmshop", "");
addCommand("heal", "");
addCommand("item", "");

View File

@@ -1,4 +1,4 @@
F/*
/*
This file is part of the OdinMS Maple Story Server
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>

View File

@@ -1,15 +1,15 @@
function enter(pi) {
if (pi.isQuestStarted(2300) || pi.isQuestCompleted(2300)
|| pi.isQuestStarted(2301) || pi.isQuestCompleted(2301)
|| pi.isQuestStarted(2302) || pi.isQuestCompleted(2302)
|| pi.isQuestStarted(2303) || pi.isQuestCompleted(2303)
|| pi.isQuestStarted(2304) || pi.isQuestCompleted(2304)
|| pi.isQuestStarted(2305) || pi.isQuestCompleted(2305)
|| pi.isQuestStarted(2306) || pi.isQuestCompleted(2306)
|| pi.isQuestStarted(2307) || pi.isQuestCompleted(2307)
|| pi.isQuestStarted(2308) || pi.isQuestCompleted(2308)
|| pi.isQuestStarted(2309) || pi.isQuestCompleted(2309)
|| pi.isQuestStarted(2310) || pi.isQuestCompleted(2310)) {
if (pi.isQuestStarted(2300) || pi.isQuestCompleted(2300) ||
pi.isQuestStarted(2301) || pi.isQuestCompleted(2301) ||
pi.isQuestStarted(2302) || pi.isQuestCompleted(2302) ||
pi.isQuestStarted(2303) || pi.isQuestCompleted(2303) ||
pi.isQuestStarted(2304) || pi.isQuestCompleted(2304) ||
pi.isQuestStarted(2305) || pi.isQuestCompleted(2305) ||
pi.isQuestStarted(2306) || pi.isQuestCompleted(2306) ||
pi.isQuestStarted(2307) || pi.isQuestCompleted(2307) ||
pi.isQuestStarted(2308) || pi.isQuestCompleted(2308) ||
pi.isQuestStarted(2309) || pi.isQuestCompleted(2309) ||
pi.isQuestStarted(2310) || pi.isQuestCompleted(2310)) {
pi.playPortalSound();
pi.warp(106020000, 0);
return true;

View File

@@ -30,7 +30,7 @@ function enter(pi) {
}
if (!pi.isQuestCompleted(100201)) {
pi.getPlayer().dropMessage(5,"You do not have completed all the trials yet. You may not attempt the boss right now.");
pi.getPlayer().dropMessage(5,"You haven't completed all the trials yet. You may not attempt the boss right now.");
return false;
}

View File

@@ -1,13 +1,13 @@
function enter(pi) {
if (pi.isQuestStarted(1041))
pi.warp(1010100, 4);
else if (pi.isQuestStarted(1042))
pi.warp(1010200, 4);
else if (pi.isQuestStarted(1043))
pi.warp(1010300, 4);
else if (pi.isQuestStarted(1044))
if (pi.isQuestStarted(1041)) {
pi.playPortalSound(); pi.warp(1010100, 4);
} else if (pi.isQuestStarted(1042)) {
pi.playPortalSound(); pi.warp(1010200, 4);
} else if (pi.isQuestStarted(1043)) {
pi.playPortalSound(); pi.warp(1010300, 4);
} else if (pi.isQuestStarted(1044)) {
pi.playPortalSound(); pi.warp(1010400, 4);
else {
} else {
pi.message("Only the adventurers that have been trained by Mai may enter.");
return false;
}

View File

@@ -23,13 +23,19 @@
* @author Jvlaple
*/
function enter(pi) {
var nextMap;
var eim;
var target;
var targetPortal;
var avail;
if (pi.getPlayer().getMapId() == 240050101) {
var nextMap = 240050102;
var eim = pi.getPlayer().getEventInstance()
var target = eim.getMapInstance(nextMap);
var targetPortal = target.getPortal("sp");
nextMap = 240050102;
eim = pi.getPlayer().getEventInstance();
target = eim.getMapInstance(nextMap);
targetPortal = target.getPortal("sp");
// only let people through if the eim is ready
var avail = eim.getProperty("1stageclear");
avail = eim.getProperty("1stageclear");
if (avail == null) {
// do nothing; send message to player
pi.getPlayer().dropMessage(6, "Horntail\'s Seal is Blocking this Door.");
@@ -40,12 +46,12 @@ function enter(pi) {
}
}
else if (pi.getPlayer().getMapId() == 240050102) {
var nextMap = 240050103;
var eim = pi.getPlayer().getEventInstance()
var target = eim.getMapInstance(nextMap);
var targetPortal = target.getPortal("sp");
nextMap = 240050103;
eim = pi.getPlayer().getEventInstance();
target = eim.getMapInstance(nextMap);
targetPortal = target.getPortal("sp");
// only let people through if the eim is ready
var avail = eim.getProperty("2stageclear");
avail = eim.getProperty("2stageclear");
if (avail == null) {
// do nothing; send message to player
pi.getPlayer().dropMessage(6, "Horntail\'s Seal is Blocking this Door.");
@@ -56,12 +62,12 @@ function enter(pi) {
}
}
else if (pi.getPlayer().getMapId() == 240050103) {
var nextMap = 240050104;
var eim = pi.getPlayer().getEventInstance()
var target = eim.getMapInstance(nextMap);
var targetPortal = target.getPortal("sp");
nextMap = 240050104;
eim = pi.getPlayer().getEventInstance();
target = eim.getMapInstance(nextMap);
targetPortal = target.getPortal("sp");
// only let people through if the eim is ready
var avail = eim.getProperty("3stageclear");
avail = eim.getProperty("3stageclear");
if (avail == null) {
// do nothing; send message to player
pi.getPlayer().dropMessage(6, "Horntail\'s Seal is Blocking this Door.");
@@ -72,12 +78,12 @@ function enter(pi) {
}
}
else if (pi.getPlayer().getMapId() == 240050104) {
var nextMap = 240050105;
var eim = pi.getPlayer().getEventInstance()
var target = eim.getMapInstance(nextMap);
var targetPortal = target.getPortal("sp");
nextMap = 240050105;
eim = pi.getPlayer().getEventInstance();
target = eim.getMapInstance(nextMap);
targetPortal = target.getPortal("sp");
// only let people through if the eim is ready
var avail = eim.getProperty("4stageclear");
avail = eim.getProperty("4stageclear");
if (avail == null) {
// do nothing; send message to player
pi.getPlayer().dropMessage(6, "Horntail\'s Seal is Blocking this Door.");
@@ -88,15 +94,15 @@ function enter(pi) {
}
}
else if (pi.getPlayer().getMapId() == 240050105) {
var nextMap = 240050100;
var eim = pi.getPlayer().getEventInstance()
var target = eim.getMapInstance(nextMap);
var targetPortal = target.getPortal("st00");
nextMap = 240050100;
eim = pi.getPlayer().getEventInstance();
target = eim.getMapInstance(nextMap);
targetPortal = target.getPortal("st00");
var avail = eim.getProperty("5stageclear");
avail = eim.getProperty("5stageclear");
if (avail == null) {
if (pi.haveItem(4001092) && pi.isEventLeader()) {
pi.getEventInstance().showClearEffect();
eim.showClearEffect();
pi.getPlayer().dropMessage(6, "The leader's key break the seal for a flash...");
pi.getPlayer().changeMap(target, targetPortal);
eim.setIntProperty("5stageclear", 1);

View File

@@ -26,7 +26,7 @@ LudiPQ - 1 - 2 Portal
function enter(pi) {
var nextMap = 922010700;
var eim = pi.getPlayer().getEventInstance()
var eim = pi.getPlayer().getEventInstance();
var target = eim.getMapInstance(nextMap);
var targetPortal = target.getPortal("st00");
// only let people through if the eim is ready

View File

@@ -8,7 +8,7 @@ function enter(pi) {
var questProgress = pi.getQuestProgress(2330, 3300005) + pi.getQuestProgress(2330, 3300006) + pi.getQuestProgress(2330, 3300007); //3 Yetis
if(questProgress == 3 && !pi.hasItem(4032388)) {
if(pi.canHold(4032388)){
pi.getPlayer().message("You have aquired a key to the Wedding Hall. King Pepe must have dropped it.")
pi.getPlayer().message("You have aquired a key to the Wedding Hall. King Pepe must have dropped it.");
pi.gainItem(4032388, 1);
pi.playPortalSound();

View File

@@ -26,6 +26,6 @@
*/
function act(){
rm.playerMessage(5, "An unknown force has returned you to the starting point.");
rm.playerMessage(5, "An unknown force has moved you to the starting point.");
rm.warp(280010000, 0);
}

View File

@@ -0,0 +1,28 @@
/*
This file is part of the OdinMS Maple Story Server
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>
Jan Christian Meyer <vimes@odinms.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*2612004.js - Queen's treasure room
*@author Ronan
*/
function act() {
rm.dropItems();
}