Portal sound effects + Improved skillbook drops
Added portal crossing sound effect on several scripted portals which were missing it. Added a few more scrolls on Spindle. Added several skill/mastery book drops, making "4th job skill questing" somewhat more viable.
This commit is contained in:
@@ -38,22 +38,19 @@ var totalcost;
|
||||
var item = new Array(2050003,2050004,4006000,4006001);
|
||||
var cost = new Array(300,400,5000,5000);
|
||||
var msg = new Array("that cures the state of being sealed and cursed","that cures all",", possessing magical power, that is used for high-quality skills",", possessing the power of summoning that is used for high-quality skills");
|
||||
var status;
|
||||
|
||||
function start() {
|
||||
if (cm.isQuestCompleted(3035)) {
|
||||
var selStr;
|
||||
for (var i = 0; i < item.length; i++){
|
||||
selStr += "\r\n#L" + i + "# #b#t" + item[i] + "# (Price: "+cost[i]+" mesos)#k#l";
|
||||
}
|
||||
cm.sendSimple("Thanks to you #b#t4031056##k is safely sealed. Of course, also as a result, I used up about half of the power I have accumulated over the last 800 years or so...but now I can die in peace. Oh, by the way... are you looking for rare items by any chance? As a sign of appreciation for your hard work, I'll sell some items I have to you, and ONLY you. Pick out the one you want!"+selStr);
|
||||
}
|
||||
else {
|
||||
cm.sendNext("If you decide to help me out, then in return, I'll make the item available for sale.");
|
||||
cm.dispose();
|
||||
}
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
if (!cm.isQuestCompleted(3035)) {
|
||||
cm.sendNext("If you decide to help me out, then in return, I'll make the item available for sale.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if(mode == 0 && status == 2) {
|
||||
cm.sendNext("I see. Understand that I have many different items here. Take a look around. I'm only selling these items to you, so I won't be ripping you off in any way shape or form.");
|
||||
cm.dispose();
|
||||
@@ -63,8 +60,16 @@ function action(mode, type, selection) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
status++;
|
||||
if (status == 1) {
|
||||
if (status == 0) {
|
||||
var selStr = "";
|
||||
for (var i = 0; i < item.length; i++){
|
||||
selStr += "\r\n#L" + i + "# #b#t" + item[i] + "# (Price: "+cost[i]+" mesos)#k#l";
|
||||
}
|
||||
cm.sendSimple("Thanks to you #b#t4031056##k is safely sealed. Of course, also as a result, I used up about half of the power I have accumulated over the last 800 years or so...but now I can die in peace. Oh, by the way... are you looking for rare items by any chance? As a sign of appreciation for your hard work, I'll sell some items I have to you, and ONLY you. Pick out the one you want!"+selStr);
|
||||
}
|
||||
else if (status == 1) {
|
||||
selected = selection;
|
||||
cm.sendGetNumber("Is #b#t"+item[selected]+"##k really the item that you need? It's the item "+msg[selected]+". It may not be the easiest item to acquire, but I'll give you a good deal on it. It'll cost you #b"+cost[selected]+" mesos#k per item. How many would you like to purchase?", 0, 1, 100);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* @author: Ronan
|
||||
* @npc: Abdula
|
||||
* @map: Multiple cities on Maplestory
|
||||
* @map: Multiple towns on Maplestory
|
||||
* @func: Job Skill / Mastery Book Drop Announcer
|
||||
*/
|
||||
|
||||
@@ -19,7 +19,7 @@ function action(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0 && status == 0) {
|
||||
if (mode == 0 && type > 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ function enter(pi) {
|
||||
if (pi.isLeader()) {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warpParty(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
@@ -42,6 +43,7 @@ function enter(pi) {
|
||||
} else {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warp(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ function enter(pi) {
|
||||
if (pi.isLeader()) {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warpParty(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
@@ -44,6 +45,7 @@ function enter(pi) {
|
||||
} else {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warp(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ function enter(pi) {
|
||||
if (pi.isLeader()) {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warpParty(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
@@ -44,6 +45,7 @@ function enter(pi) {
|
||||
} else {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warp(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ function enter(pi) {
|
||||
if (pi.isLeader()) {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warpParty(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
@@ -44,6 +45,7 @@ function enter(pi) {
|
||||
} else {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warp(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ function enter(pi) {
|
||||
if (pi.isLeader()) {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warpParty(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
@@ -44,6 +45,7 @@ function enter(pi) {
|
||||
} else {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warp(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ function enter(pi) {
|
||||
if (pi.isLeader()) {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warpParty(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
@@ -44,6 +45,7 @@ function enter(pi) {
|
||||
} else {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warp(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ function enter(pi) {
|
||||
if (pi.isLeader()) {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warpParty(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
@@ -42,6 +43,7 @@ function enter(pi) {
|
||||
} else {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warp(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ function enter(pi) {
|
||||
if (pi.isLeader()) {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warpParty(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
@@ -42,6 +43,7 @@ function enter(pi) {
|
||||
} else {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warp(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ function enter(pi) {
|
||||
if (pi.isLeader()) {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warpParty(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
@@ -42,6 +43,7 @@ function enter(pi) {
|
||||
} else {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warp(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ function enter(pi) {
|
||||
if (pi.isLeader()) {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warpParty(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
@@ -42,6 +43,7 @@ function enter(pi) {
|
||||
} else {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warp(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ function enter(pi) {
|
||||
if (pi.isLeader()) {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warpParty(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
@@ -42,6 +43,7 @@ function enter(pi) {
|
||||
} else {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warp(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ function enter(pi) {
|
||||
if (pi.isLeader()) {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warpParty(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
@@ -42,6 +43,7 @@ function enter(pi) {
|
||||
} else {
|
||||
for (var i = 0; i < dungeons; i++) {
|
||||
if(pi.startDungeonInstance(dungeonid + i)) {
|
||||
pi.playPortalSound();
|
||||
pi.warp(dungeonid + i);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
function enter(pi) {
|
||||
if (pi.getPlayer().getEvents().getGagaRescue().fallAndGet() > 3) {
|
||||
pi.warp(922240200, 0);
|
||||
pi.playPortalSound(); pi.warp(922240200, 0);
|
||||
pi.getPlayer().cancelEffect(2360002);
|
||||
} else
|
||||
pi.playPortalSound(); pi.warp(pi.getPlayer().getMapId(), 0);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
function enter(pi) {
|
||||
if (pi.getPlayer().getEvents().getGagaRescue().fallAndGet() > 3) {
|
||||
pi.warp(922240200, 0);
|
||||
pi.playPortalSound(); pi.warp(922240200, 0);
|
||||
pi.getPlayer().cancelEffect(2360002);
|
||||
} else
|
||||
pi.playPortalSound(); pi.warp(pi.getPlayer().getMapId(), 0);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
function enter(pi) {
|
||||
if (pi.getPlayer().getEvents().getGagaRescue().fallAndGet() > 3) {
|
||||
pi.warp(922240200, 0);
|
||||
pi.playPortalSound(); pi.warp(922240200, 0);
|
||||
pi.getPlayer().cancelEffect(2360002);
|
||||
} else
|
||||
pi.playPortalSound(); pi.warp(pi.getPlayer().getMapId(), 0);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
function enter(pi) {
|
||||
if (pi.getPlayer().getEvents().getGagaRescue().fallAndGet() > 3) {
|
||||
pi.warp(922240200, 0);
|
||||
pi.playPortalSound(); pi.warp(922240200, 0);
|
||||
pi.getPlayer().cancelEffect(2360002);
|
||||
} else
|
||||
pi.playPortalSound(); pi.warp(pi.getPlayer().getMapId(), 0);
|
||||
|
||||
@@ -24,5 +24,6 @@ function enter(pi) {
|
||||
}
|
||||
}
|
||||
|
||||
pi.message("A mysterious force won't let you in.");
|
||||
return false;
|
||||
}
|
||||
@@ -53,11 +53,11 @@ function enter(pi) {
|
||||
}
|
||||
} else {
|
||||
pi.getPlayer().message("You received " + pi.getPlayer().addDojoPointsByMap(pi.getMapId()) + " training points. Your total training points score is now " + pi.getPlayer().getDojoPoints() + ".");
|
||||
pi.warp(pi.getPlayer().getMap().getId() + 100, 0);
|
||||
pi.playPortalSound(); pi.warp(pi.getPlayer().getMap().getId() + 100, 0);
|
||||
}
|
||||
} else {
|
||||
pi.getPlayer().message("You received " + pi.getPlayer().addDojoPointsByMap(pi.getMapId()) + " training points. Your total training points score is now " + pi.getPlayer().getDojoPoints() + ".");
|
||||
pi.warp(pi.getPlayer().getMap().getId() + 100, 0);
|
||||
pi.playPortalSound(); pi.warp(pi.getPlayer().getMap().getId() + 100, 0);
|
||||
}
|
||||
} else {
|
||||
pi.playPortalSound(); pi.warp(925020003, 0);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
function enter(pi) {
|
||||
if(pi.isQuestCompleted(20730) || pi.isQuestCompleted(21734)) { // puppeteer defeated, newfound secret path
|
||||
pi.warp(105070300,3);
|
||||
pi.playPortalSound(); pi.warp(105070300,3);
|
||||
return true;
|
||||
} else if(pi.isQuestStarted(21734)) {
|
||||
pi.playPortalSound(); pi.warp(910510100,0);
|
||||
|
||||
@@ -9,7 +9,7 @@ function enter(pi) {
|
||||
|
||||
mapobj2.spawnMonsterOnGroundBelow(Packages.server.life.MapleLifeFactory.getMonster(9300348), new Packages.java.awt.Point(591, -34));
|
||||
|
||||
pi.warp(920030000,2);
|
||||
pi.playPortalSound(); pi.warp(920030000,2);
|
||||
return true;
|
||||
} else {
|
||||
pi.message("Someone is already challenging the area.");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
function enter(pi) {
|
||||
pi.playPortalSound();
|
||||
pi.playPortalSound();
|
||||
pi.warp(100030200, "east00");
|
||||
return true;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
function enter(pi) {
|
||||
pi.playPortalSound();
|
||||
pi.playPortalSound();
|
||||
pi.warp(100030102, "in00");
|
||||
return true;
|
||||
}
|
||||
@@ -2,7 +2,7 @@ function enter(pi) {
|
||||
var map = pi.getPlayer().getMap();
|
||||
if(pi.getPortal().getName() == "female00") {
|
||||
if (pi.getPlayer().getGender() == 1) {
|
||||
pi.warp(map.getId(), "female01");
|
||||
pi.playPortalSound(); pi.warp(map.getId(), "female01");
|
||||
return true;
|
||||
} else {
|
||||
pi.message("This portal leads to the girls' area, try the portal at the other side.");
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
function enter(pi) {
|
||||
if (pi.getPlayer().getMapId() == 240060000) {
|
||||
if(pi.getEventInstance().getIntProperty("defeatedHead") >= 1) {
|
||||
pi.warp(240060100, 0);
|
||||
pi.playPortalSound(); pi.warp(240060100, 0);
|
||||
return true;
|
||||
} else {
|
||||
pi.getPlayer().dropMessage(6, "Horntail\'s Seal is Blocking this Door.");
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
function enter(pi) {
|
||||
if(!pi.isQuestStarted(3309) || pi.haveItem(4031708, 1)) {
|
||||
pi.warp(261020700, "down00");
|
||||
pi.playPortalSound(); pi.warp(261020700, "down00");
|
||||
} else {
|
||||
pi.playPortalSound(); pi.warp(926120000, "out00");
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
function enter(pi) {
|
||||
try {
|
||||
var toMap = pi.getPlayer().getSavedLocation("FREE_MARKET");
|
||||
pi.warp(toMap, pi.getMarketPortalId(toMap));
|
||||
pi.playPortalSound(); pi.warp(toMap, pi.getMarketPortalId(toMap));
|
||||
} catch(err) {
|
||||
pi.playPortalSound(); pi.warp(100000000, 0);
|
||||
}
|
||||
|
||||
@@ -25,11 +25,11 @@ function enter(pi) {
|
||||
return false;
|
||||
}
|
||||
if (pi.getPlayer().getMapId() == 240010100) {
|
||||
pi.gainItem(4031346, -1);
|
||||
pi.warp(101010000, "minar00");
|
||||
pi.gainItem(4031346, -1);
|
||||
pi.playPortalSound(); pi.warp(101010000, "minar00");
|
||||
return true;
|
||||
} else if (pi.getPlayer().getMapId() == 101010000) {
|
||||
pi.gainItem(4031346, -1);
|
||||
pi.gainItem(4031346, -1);
|
||||
pi.playPortalSound(); pi.warp(240010100, "elli00");
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -9,21 +9,21 @@ function enter(pi) {
|
||||
pi.warp(130000100, 4); //or 130000101
|
||||
break;
|
||||
case 140010100:
|
||||
pi.warp(140010110, 0); //or 140010111
|
||||
break;
|
||||
pi.warp(140010110, 0); //or 140010111
|
||||
break;
|
||||
case 120000101:
|
||||
pi.warp(120000105, 0);
|
||||
break;
|
||||
pi.warp(120000105, 0);
|
||||
break;
|
||||
case 103000003:
|
||||
pi.warp(103000008, 0); //or 103000009
|
||||
break;
|
||||
pi.warp(103000008, 0); //or 103000009
|
||||
break;
|
||||
case 100000201:
|
||||
pi.warp(100000204, 0); //or 100000205
|
||||
break;
|
||||
pi.warp(100000204, 0); //or 100000205
|
||||
break;
|
||||
default:
|
||||
pi.warp(pi.getMapId() + 1, 0); //or + 2
|
||||
break;
|
||||
pi.warp(pi.getMapId() + 1, 0); //or + 2
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
@@ -27,7 +27,7 @@ function enter(pi) {
|
||||
if(pi.isQuestStarted(6134)) {
|
||||
if(pi.canHold(4031448)) {
|
||||
pi.gainItem(4031448, 1);
|
||||
pi.warp(220070400, 3);
|
||||
pi.playPortalSound(); pi.warp(220070400, 3);
|
||||
|
||||
return true;
|
||||
} else {
|
||||
|
||||
44
scripts/quest/3108.js
Normal file
44
scripts/quest/3108.js
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
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/>.
|
||||
*/
|
||||
|
||||
var status = -1;
|
||||
|
||||
function start(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
qm.dispose();
|
||||
} else {
|
||||
if(mode == 0 && type > 0) {
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if (status == 0) {
|
||||
qm.sendNext("(As you peek into the shattered statue, you might have found a clue about what happened. Better talk with #rScadur#k about this.)");
|
||||
qm.forceCompleteQuest();
|
||||
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user