Fixed chair exploit & beholder issue + Mini-dungeon revamp

Fixed an (quite amusing) exploit with map chairs stacking "extra healing" schedules on certain conditions. Fixed mini-dungeon not disposing players properly in some cases. Refactored the mini-dungeon structure. Fixed an issue on CASH inventory merging same items when trying to swap them. Fixed Beholder crash issue when trying to enter Cash Shop.
This commit is contained in:
ronancpl
2017-10-16 15:13:42 -02:00
parent 1ec7487bd3
commit 57c29603d1
96 changed files with 632 additions and 434 deletions

View File

@@ -51,4 +51,12 @@ function action(mode, type, selection) {
cm.dispose();
}
}
}
function generateSelectionMenu(array) { // nice tool for generating a string for the sendSimple functionality
var menu = "";
for (var i = 0; i < array.length; i++) {
menu += "#L" + i + "#" + array[i] + "l\r\n";
}
return menu;
}

View File

@@ -27,28 +27,28 @@ var dungeons = 30;
function enter(pi) {
if (pi.getMapId() == baseid) {
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
} else {
pi.playPortalSound();
pi.warp(baseid, "MD00");

View File

@@ -29,28 +29,28 @@ var dungeons = 30;
function enter(pi) {
if (pi.getMapId() == baseid) {
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
} else {
pi.playPortalSound();
pi.warp(baseid, "MD00");

View File

@@ -29,35 +29,31 @@ var dungeons = 19;
function enter(pi) {
if (pi.getMapId() == baseid) {
if (pi.getPlayer().getFame() < 10) {
pi.playerMessage(5, "You need 10 Fame to enter.");
return;
}
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
}
} else {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
} else {
pi.playPortalSound();
pi.warp(baseid, "MD00");
return true;
pi.playPortalSound();
pi.warp(baseid, "MD00");
return true;
}
}

View File

@@ -29,28 +29,28 @@ var dungeons = 30;
function enter(pi) {
if (pi.getMapId() == baseid) {
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
} else {
pi.playPortalSound();
pi.warp(baseid, "MD00");

View File

@@ -29,28 +29,28 @@ var dungeons = 30;
function enter(pi) {
if (pi.getMapId() == baseid) {
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
} else {
pi.playPortalSound();
pi.warp(baseid, "MD00");

View File

@@ -27,28 +27,28 @@ var dungeons = 19;
function enter(pi) {
if (pi.getMapId() == baseid) {
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
} else {
pi.playPortalSound();
pi.warp(baseid, "MD00");

View File

@@ -27,28 +27,28 @@ var dungeons = 30;
function enter(pi) {
if (pi.getMapId() == baseid) {
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
} else {
pi.playPortalSound();
pi.warp(baseid, "MD00");

View File

@@ -27,28 +27,28 @@ var dungeons = 19;
function enter(pi) {
if (pi.getMapId() == baseid) {
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
} else {
pi.playPortalSound();
pi.warp(baseid, "MD00");

View File

@@ -19,7 +19,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
MiniDungeon - Rabbit
MiniDungeon - Round Table
*/
var baseid = 240020500;
var dungeonid = 240020512;
@@ -27,28 +27,28 @@ var dungeons = 30;
function enter(pi) {
if (pi.getMapId() == baseid) {
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
} else {
pi.playPortalSound();
pi.warp(baseid, "MD00");

View File

@@ -27,28 +27,28 @@ var dungeons = 34;
function enter(pi) {
if (pi.getMapId() == baseid) {
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
} else {
pi.playPortalSound();
pi.warp(baseid, "MD00");

View File

@@ -27,28 +27,28 @@ var dungeons = 30;
function enter(pi) {
if (pi.getMapId() == baseid) {
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if (pi.getPlayerCount(dungeonid + i) == 0) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
if (pi.getParty() != null) {
if (pi.isLeader()) {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warpParty(dungeonid + i);
return true;
}
}
} else {
pi.playerMessage(5, "Only solo or party leaders are supposed to enter the Mini-Dungeon.");
return false;
}
} else {
for (var i = 0; i < dungeons; i++) {
if(pi.startDungeonInstance(dungeonid + i)) {
pi.warp(dungeonid + i);
return true;
}
}
}
pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later.");
return false;
} else {
pi.playPortalSound();
pi.warp(baseid, "MD00");

View File

@@ -1,5 +1,6 @@
function enter(pi) {
if (pi.isQuestStarted(2301) || pi.isQuestCompleted(2301)
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)
@@ -13,6 +14,6 @@ function enter(pi) {
pi.warp(106020000, 0);
return true;
}
pi.playerMessage(5, "A strange force is blocking you from enetering");
pi.playerMessage(5, "A strange force is blocking you from entering.");
return false;
}