Reworked equip lvlup + Reactor quest item drop + ToT quests fix

Rebalanced the way equipment exp is gained (about 100~200 same-level
range mobs to pass equip level 1 to 2). Fixed reactors dropping quest
items to player if they don't have the quest started. Fixed broken
Temple of Time quests.
This commit is contained in:
ronancpl
2017-08-16 14:06:59 -03:00
parent e0a27e00ab
commit c8e36c10e7
129 changed files with 744 additions and 448 deletions

View File

@@ -1,4 +1,4 @@
#Fri, 11 Aug 2017 12:31:17 -0300
#Wed, 16 Aug 2017 14:03:06 -0300
C\:\\Nexon\\MapleSolaxia\\MapleSolaxiaV2=

BIN
dist/MapleSolaxia.jar vendored

Binary file not shown.

View File

@@ -438,4 +438,17 @@ Resolvido problema com GMs de level alto recebendo bloqueio MWLB.
07 - 10 Agosto 2017,
Adicionada Magatia PQ.
Resolvido bug no Dojo impedindo mesma party de tentar entrar de novo se saiu sem acabá-la.
Resolvido bugs nos scripts de 2nd job.
Resolvido bugs nos scripts de 2nd job.
14 Agosto 2017,
Resolvidos alguns bugs em alguns NPCs e mapa de Mu Lung.
Resolvido algumas inconsistências entre MapleCharacter <-> MaplePartyCharacter, ocasionando infos erroneas em Guilds.
15 Agosto 2017,
Rebalanceado ganho de equip exp.
Atualizado amostra na tela de lvup stats de equips para os jogadores.
Reactors agora dropam itens de quest somente se o player possui a mesma ativada.
16 Agosto 2017,
Consertado corrente de quests da Temple of Time. Agora Pink Bean é alcancável.
Adicionadas algumas chairs ao SQL.

View File

@@ -21,9 +21,7 @@ ToDo / Missing features list:
---------------------------
** Basic PQs **
- Zakum Party Quest
- Amoria Party Quest
- Magatia Party Quest
---------------------------
@@ -51,8 +49,6 @@ ToDo / Missing features list:
---------------------------
** GM/ADMIN **
- Create a Gm/admin command list
- Set level for Gm and Admin commands. Example: Player = 0 / Donator = 1 / JuniorGm = 2 / Gm = 3 / SuperGm = 4 / Developer = 5 / Admin = 6
---------------------------
====================================

View File

@@ -3,7 +3,11 @@
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="1"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/scripting/event/EventInstanceManager.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/inventory/Equip.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/command/Commands.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/sql/db_database.sql</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/constants/ServerConstants.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/sql/db_shopupdate.sql</file>
</group>
</open-files>
</project-private>

View File

@@ -44,8 +44,8 @@ function scheduleNew() {
function stopentry() {
em.setProperty("entry","false");
Orbis_Boat_Cabin.resetReactors(); //boxes
Ellinia_Boat_Cabin.resetReactors();
Orbis_Boat_Cabin.clearMapObjects(); //boxes
Ellinia_Boat_Cabin.clearMapObjects();
}
function takeoff() {

View File

@@ -10,9 +10,7 @@ var map;
var timeOnRide = 60; //Seconds
var onRide;
function init() {
}
function init() {}
function setup() {
var eim = em.newInstance("Hak_" + + em.getProperty("player"));

View File

@@ -53,7 +53,7 @@ function action(mode, type, selection) {
if (mode == 0) {
cm.sendNext("#b(As I took my hand off the bulletin board, the mysterious energy that was covering my disappeared as well.)");
} else {
cm.getPlayer().saveLocation("DOJO");
cm.getPlayer().saveLocation("MIRROR");
cm.warp(925020000, 4);
}
cm.dispose();

View File

@@ -41,7 +41,7 @@ function action(mode, type, selection) {
if(cm.isQuestStarted(3900) && cm.getPlayer().getQuestInfo(3900) != 5) {
cm.sendOk("#b(You drink the water from the oasis and feel refreshed.)", 2);
//TODO: Update quest progress.
cm.getPlayer().updateQuestInfo(3900, 5);
cm.getPlayer().updateQuestInfo(3900, "5");
}
cm.dispose();
}

View File

@@ -1,249 +1,11 @@
/* @Author SharpAceX / Ronan
/* @Author SharpAceX
Name: Steward
Map(s): Foyer
Info: Steward / Commands
Info: Steward
NPC ID: 9201143.js
*/
var status;
var comm_lv6 = [];
var desc_lv6 = [];
var comm_lv5 = [];
var desc_lv5 = [];
var comm_lv4 = [];
var desc_lv4 = [];
var comm_lv3 = [];
var desc_lv3 = [];
var comm_lv2 = [];
var desc_lv2 = [];
var comm_lv1 = [];
var desc_lv1 = [];
var levels = ["Common", "Donator", "JrGM", "GM", "SuperGM", "Developer", "Admin"];
var comm_cursor, desc_cursor;
function addCommand(comm, desc) {
comm_cursor.add(comm);
desc_cursor.add(desc);
}
function writeSolaxiaCommandsLv6() { //Admin
comm_cursor = comm_lv6;
desc_cursor = desc_lv6;
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
}
function writeSolaxiaCommandsLv5() { //Developer
comm_cursor = comm_lv5;
desc_cursor = desc_lv5;
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
}
function writeSolaxiaCommandsLv4() { //SuperGM
comm_cursor = comm_lv4;
desc_cursor = desc_lv4;
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
}
function writeSolaxiaCommandsLv3() { //GM
comm_cursor = comm_lv3;
desc_cursor = desc_lv3;
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
addCommand("", "");
}
function writeSolaxiaCommandsLv2() { //JrGM
comm_cursor = comm_lv2;
desc_cursor = desc_lv2;
addCommand("hide", "");
addCommand("unhide", "");
addCommand("sp", "");
addCommand("ap", "");
addCommand("empowerme", "");
addCommand("buffmap", "");
addCommand("buff", "");
addCommand("bomb", "");
addCommand("dc", "");
addCommand("cleardrops", "");
addCommand("clearslot", "");
addCommand("warp", "");
addCommand("warpto", "");
addCommand("summon", "");
addCommand("gmshop", "");
addCommand("heal", "");
addCommand("item", "");
addCommand("level", "");
addCommand("levelpro", "");
addCommand("setstat", "");
addCommand("maxstat", "");
addCommand("maxskill", "");
addCommand("mesos", "");
addCommand("search", "");
addCommand("jail", "");
addCommand("unjail", "");
addCommand("unbug", "");
}
function writeSolaxiaCommandsLv1() { //Donator
comm_cursor = comm_lv1;
desc_cursor = desc_lv1;
addCommand("buffme", "");
addCommand("goto", "");
addCommand("recharge", "");
addCommand("whereami", "");
}
function writeSolaxiaCommandsLv0() { //Common
comm_cursor = comm_lv0;
desc_cursor = desc_lv0;
addCommand("commands", "");
addCommand("time", "");
addCommand("staff", "");
addCommand("uptime", "");
addCommand("gacha", "");
addCommand("whatdropsfrom", "");
addCommand("whodrops", "");
addCommand("dispose", "");
addCommand("equiplv", "");
addCommand("rates", "");
addCommand("online", "");
addCommand("gm", "");
addCommand("bug", "");
addCommand("joinevent", "");
addCommand("leaveevent", "");
addCommand("bosshp", "");
addCommand("ranks", "");
}
function writeSolaxiaCommands() {
writeSolaxiaCommandsLv0(); //Common
writeSolaxiaCommandsLv1(); //Donator
writeSolaxiaCommandsLv2(); //JrGM
writeSolaxiaCommandsLv3(); //GM
writeSolaxiaCommandsLv4(); //Developer
writeSolaxiaCommandsLv5(); //SuperGM
writeSolaxiaCommandsLv6(); //Admin
}
function start() {
if(cm.getPlayer.getCS()) {
writeSolaxiaCommands();
action(1, 0, 0);
} else {
cm.sendNext("At your service, my friend.");
cm.dispose();
}
}
function action(mode, type, selection) {
if (mode == -1) {
cm.dispose();
} else {
if (mode == 0 && status == 0) {
cm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
var sendStr = "There are all available commands for you:\r\n\r\n#b";
for(var i = 0; i < cm.getGmLevel(); i++) {
sendStr += "#L" + i + "#" + levels[i] + "#l\r\n";
}
cm.sendSimple(sendStr);
} else if(status == 1) {
var lvComm, lvDesc;
if(selection == 0) {
lvComm = comm_lv1;
lvDesc = desc_lv1;
} else if(selection == 1) {
lvComm = comm_lv2;
lvDesc = desc_lv2;
} else if(selection == 2) {
lvComm = comm_lv3;
lvDesc = desc_lv3;
} else if(selection == 3) {
lvComm = comm_lv4;
lvDesc = desc_lv4;
} else if(selection == 4) {
lvComm = comm_lv5;
lvDesc = desc_lv5;
} else {
lvComm = comm_lv6;
lvDesc = desc_lv6;
}
var sendStr = "The following commands are available for #b" + levels[selection] + "#k:\r\n\r\n";
for(var i = 0; i < lvComm.length; i++) {
sendStr += " #L" + i + "# " + lvComm[i] + " - " + lvDesc[i];
sendStr += "#l\r\n";
}
cm.sendPrev(sendStr);
}
}
cm.sendNext("At your service, my friend.");
cm.dispose();
}

288
scripts/npc/commands.js Normal file
View File

@@ -0,0 +1,288 @@
/* @Author Ronan
* @Author Vcoc
Name: Steward
Map(s): Foyer
Info: Commands
Script: commands.js
*/
/*
Please, keep the commands organized!
*/
var status;
var comm_lv6 = [];
var desc_lv6 = [];
var comm_lv5 = [];
var desc_lv5 = [];
var comm_lv4 = [];
var desc_lv4 = [];
var comm_lv3 = [];
var desc_lv3 = [];
var comm_lv2 = [];
var desc_lv2 = [];
var comm_lv1 = [];
var desc_lv1 = [];
var comm_lv0 = [];
var desc_lv0 = [];
var levels = ["Common", "Donator", "JrGM", "GM", "SuperGM", "Developer", "Admin"];
var comm_cursor, desc_cursor;
function addCommand(comm, desc) {
comm_cursor.push(comm);
desc_cursor.push(desc);
}
function writeSolaxiaCommandsLv6() { //Admin
comm_cursor = comm_lv6;
desc_cursor = desc_lv6;
addCommand("warpworld", "");
addCommand("saveall", "");
addCommand("dcall", "");
addCommand("mapplayers", "");
addCommand("getacc", "");
addCommand("shutdown", "");
addCommand("shutdownnow", "");
addCommand("clearquestcache", "");
addCommand("clearquest", "");
}
function writeSolaxiaCommandsLv5() { //Developer
comm_cursor = comm_lv5;
desc_cursor = desc_lv5;
addCommand("debugmonster", "");
addCommand("debugpacket", "");
addCommand("debugnearestportal", "");
addCommand("debugnearestspawnpoint", "");
addCommand("debugpos", "");
addCommand("debugmap", "");
addCommand("debugmobsp", "");
addCommand("debugevent", "");
addCommand("debugareas", "");
addCommand("debugreactors", "");
addCommand("debugcoupons", "");
addCommand("debugplayercoupons", "");
addCommand("debugtimer", "");
}
function writeSolaxiaCommandsLv4() { //SuperGM
comm_cursor = comm_lv4;
desc_cursor = desc_lv4;
addCommand("servermessage", "");
addCommand("proitem", "");
addCommand("seteqstat", "");
addCommand("exprate", "");
addCommand("mesorate", "");
addCommand("droprate", "");
addCommand("bossdroprate", "");
addCommand("itemvac", "");
addCommand("forcevac", "");
addCommand("zakum", "");
addCommand("horntail", "");
addCommand("pinkbean", "");
addCommand("pap", "");
addCommand("pianus", "");
addCommand("playernpc", "");
addCommand("face", "");
addCommand("hair", "");
}
function writeSolaxiaCommandsLv3() { //GM
comm_cursor = comm_lv3;
desc_cursor = desc_lv3;
addCommand("spawn", "");
addCommand("mutemap", "");
addCommand("checkdmg", "");
addCommand("inmap", "");
addCommand("reloadevents", "");
addCommand("reloaddrops", "");
addCommand("reloadportals", "");
addCommand("reloadmap", "");
addCommand("hpmp", "");
addCommand("music", "");
addCommand("monitor", "");
addCommand("monitors", "");
addCommand("ignore", "");
addCommand("ignored", "");
addCommand("pos", "");
addCommand("togglecoupon", "");
addCommand("chat", "");
addCommand("fame", "");
addCommand("giftnx", ""); //Ronan, muda esse comando para "givenx", faz mais sentido. XD
addCommand("vp", ""); //Ronan, muda esse comando para "givevp", faz mais sentido. XD
addCommand("id", "");
addCommand("expeds", "");
addCommand("kill", "");
addCommand("seed", "");
addCommand("killall", "");
addCommand("notice", "");
addCommand("rip", "");
addCommand("openportal", "");
addCommand("closeportals", "");
addCommand("pe", "");
addCommand("startevent", "");
addCommand("endevent", "");
addCommand("online2", "");
addCommand("warpsnowball", "");
addCommand("ban", "");
addCommand("unban", "");
addCommand("healmap", "");
addCommand("healperson", "");
addCommand("hurt", "");
addCommand("killmap", "");
addCommand("night", "");
addCommand("npc", "");
}
function writeSolaxiaCommandsLv2() { //JrGM
comm_cursor = comm_lv2;
desc_cursor = desc_lv2;
addCommand("hide", "");
addCommand("unhide", "");
addCommand("sp", "");
addCommand("ap", "");
addCommand("empowerme", "");
addCommand("buffmap", "");
addCommand("buff", "");
addCommand("bomb", "");
addCommand("dc", "");
addCommand("cleardrops", "");
addCommand("clearslot", "");
addCommand("warp", "");
addCommand("warpto", "");
addCommand("warphere", "");
addCommand("gmshop", "");
addCommand("heal", "");
addCommand("item", "");
addCommand("level", "");
addCommand("levelpro", "");
addCommand("setstat", "");
addCommand("maxstat", "");
addCommand("maxskill", "");
addCommand("mesos", "");
addCommand("search", "");
addCommand("jail", "");
addCommand("unjail", "");
addCommand("job", "");
addCommand("unbug", "");
}
function writeSolaxiaCommandsLv1() { //Donator
comm_cursor = comm_lv1;
desc_cursor = desc_lv1;
addCommand("buffme", "");
addCommand("goto", "");
addCommand("recharge", "");
addCommand("whereami", "");
}
function writeSolaxiaCommandsLv0() { //Common
comm_cursor = comm_lv0;
desc_cursor = desc_lv0;
addCommand("commands", "");
addCommand("time", "");
addCommand("staff", "");
addCommand("uptime", "");
addCommand("gacha", "");
addCommand("whatdropsfrom", "");
addCommand("whodrops", "");
addCommand("dispose", "");
addCommand("equiplv", "");
addCommand("rates", "");
addCommand("online", "");
addCommand("gm", "");
addCommand("bug", "");
// addCommand("points", ""); //Caso for usar o comando @points, a linha ja foi adicionada, basta remover os //
addCommand("joinevent", "");
addCommand("leaveevent", "");
addCommand("bosshp", "");
addCommand("ranks", "");
}
function writeSolaxiaCommands() {
writeSolaxiaCommandsLv0(); //Common
writeSolaxiaCommandsLv1(); //Donator
writeSolaxiaCommandsLv2(); //JrGM
writeSolaxiaCommandsLv3(); //GM
writeSolaxiaCommandsLv4(); //Developer
writeSolaxiaCommandsLv5(); //SuperGM
writeSolaxiaCommandsLv6(); //Admin
}
function start() {
status = -1;
writeSolaxiaCommands();
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) {
var sendStr = "There are all available commands for you:\r\n\r\n#b";
for(var i = 0; i < cm.getPlayer().gmLevel(); i++) {
sendStr += "#L" + i + "#" + levels[i] + "#l\r\n";
}
cm.sendSimple(sendStr);
} else if(status == 1) {
var lvComm, lvDesc;
if(selection == 0) {
lvComm = comm_lv1;
lvDesc = desc_lv1;
} else if(selection == 1) {
lvComm = comm_lv2;
lvDesc = desc_lv2;
} else if(selection == 2) {
lvComm = comm_lv3;
lvDesc = desc_lv3;
} else if(selection == 3) {
lvComm = comm_lv4;
lvDesc = desc_lv4;
} else if(selection == 4) {
lvComm = comm_lv5;
lvDesc = desc_lv5;
} else {
lvComm = comm_lv6;
lvDesc = desc_lv6;
}
var sendStr = "The following commands are available for #b" + levels[selection] + "#k:\r\n\r\n";
for(var i = 0; i < lvComm.length; i++) {
sendStr += " #L" + i + "# " + lvComm[i] + " - " + lvDesc[i];
sendStr += "#l\r\n";
}
cm.sendPrev(sendStr);
} else {
cm.dispose();
}
}
}

View File

@@ -43,10 +43,13 @@ function enter(pi) {
pi.warp(270040100, "out00");
} else {
if(map > 200) {
pi.playerMessage(5, "As the time starts to flow oddly, you are transported back to a safe lane.");
pi.warp(270030000, "in00");
} else if(map > 100) {
pi.playerMessage(5, "As the time starts to flow oddly, you are transported back to a safe lane.");
pi.warp(270020000, "in00");
} else {
pi.playerMessage(5, "As the time starts to flow oddly, you are transported back to a safe lane.");
pi.warp(270010000, "in00");
}
}

10
scripts/quest/3507.js Normal file
View File

@@ -0,0 +1,10 @@
function end(mode, type, selection) {
if(qm.isQuestCompleted(3523) || qm.isQuestCompleted(3524) || qm.isQuestCompleted(3525) || qm.isQuestCompleted(3526) || qm.isQuestCompleted(3527) || qm.isQuestCompleted(3539)) {
qm.completeQuest();
qm.sendOk("You are now filled with all of your memories again.. You are now allowed to go to #m270020000#.");
} else {
qm.sendOk("You have not yet checked with your first teacher about your memories?");
}
qm.dispose();
}

View File

@@ -23,12 +23,46 @@
* The sorcerer who sells emotions
*/
importPackage(Packages.client);
function start(mode, type, selection) {
if(qm.getPlayer().getMeso() >= 1000000) {
if(qm.canHold(2022337, 1)) {
qm.gainItem(2022337, 1);
qm.gainMeso(-1000000);
//qm.sendOk("Nice doing business with you~~.");
qm.startQuest(3514);
} else {
qm.sendOk("Check out for a slot on your USE inventory first.");
}
} else {
qm.sendOk("Oy, you don't have the money. I charge #r1,000,000 mesos#k for the emotion potion. No money, no deal.");
}
qm.dispose();
}
function usedPotion(ch) {
return ch.getBuffSource(MapleBuffStat.HPREC) == 2022337;
}
function end(mode, type, selection) {
if(qm.haveItem(2022337)) {
qm.sendOk("Are you scared to drink the potion? I can assure you it's only a minor #rside effect#k.");
if(!usedPotion(qm.getPlayer())) {
if(qm.haveItem(2022337)) {
qm.sendOk("Are you scared to drink the potion? I can assure you it has only a minor #rside effect#k.");
} else {
if(qm.canHold(2022337)) {
qm.gainItem(2022337, 1);
qm.sendOk("Lost it? Luckily for you I managed to recover it back. Take it.");
} else {
qm.sendOk("Lost it? Luckily for you I managed to recover it back. Make a room to get it.");
}
}
} else {
qm.sendOk("It seems the potion worked and your emotions are no longer frozen.");
qm.sendOk("It seems the potion worked and your emotions are no longer frozen. And, oh, my... You're ailing bad, #bpurge#k that out quickly.");
qm.gainExp(891500 * qm.getPlayer().getExpRate());
qm.completeQuest(3514);
}
qm.dispose();
qm.dispose();
}

View File

@@ -25,8 +25,8 @@
function start(mode, type, selection) {
qm.startQuest();
qm.getPlayer().updateQuestInfo(3507, 1);
//qm.getPlayer().updateQuestInfo(3507, "1");
qm.completeQuest();
qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#.");
qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass.");
qm.dispose();
}

View File

@@ -25,8 +25,8 @@
function start(mode, type, selection) {
qm.startQuest();
qm.getPlayer().updateQuestInfo(3507, 1);
//qm.getPlayer().updateQuestInfo(3507, "1");
qm.completeQuest();
qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#.");
qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass.");
qm.dispose();
}

View File

@@ -25,8 +25,8 @@
function start(mode, type, selection) {
qm.startQuest();
qm.getPlayer().updateQuestInfo(3507, 1);
//qm.getPlayer().updateQuestInfo(3507, "1");
qm.completeQuest();
qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#.");
qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass.");
qm.dispose();
}

View File

@@ -25,8 +25,8 @@
function start(mode, type, selection) {
qm.startQuest();
qm.getPlayer().updateQuestInfo(3507, 1);
//qm.getPlayer().updateQuestInfo(3507, "1");
qm.completeQuest();
qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#.");
qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass.");
qm.dispose();
}

Some files were not shown because too many files have changed in this diff Show More