More PQ-esque script modules + HP Bar on some bosses

Completed (hopefully, now!) implementation of automated modules for PQ
scripting. Added HP bar for some bosses that wouldn't display it before
(like King Slime, Alishar and CRog).
This commit is contained in:
ronancpl
2017-05-09 20:02:10 -03:00
parent da00345aec
commit 73557f0d61
59 changed files with 943 additions and 608 deletions

View File

@@ -1,11 +1,11 @@
var windowTime = 10 * 1000;
function enter(pi) {
var em = pi.getEventManager("PiratePQ");
var level = em.getProperty("level");
if(em.getProperty("stage2b") == "0") {
var eim = pi.getEventInstance();
var level = eim.getProperty("level");
if(eim.getProperty("stage2b") == "0") {
pi.getMap(925100202).spawnAllMonstersFromMapSpawnList(level, true);
em.setProperty("stage2b", "1");
eim.setProperty("stage2b", "1");
}
pi.warp(925100202,0);

View File

@@ -1,11 +1,11 @@
var windowTime = 10 * 1000;
function enter(pi) {
var em = pi.getEventManager("PiratePQ");
var level = em.getProperty("level");
if(em.getProperty("stage3b") == "0") {
var eim = pi.getEventInstance();
var level = eim.getProperty("level");
if(eim.getProperty("stage3b") == "0") {
pi.getMap(925100302).spawnAllMonstersFromMapSpawnList(level, true);
em.setProperty("stage3b", "1");
eim.setProperty("stage3b", "1");
}
pi.warp(925100302,0);

View File

@@ -1,49 +1,9 @@
/*
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/>.
*/
/***********
@Author Jvlaple
***********/
function enter(pi) {
var nextMap = 925100100;
var eim = pi.getPlayer().getEventInstance();
var party = eim.getPlayers();
var target = eim.getMapInstance(nextMap);
var targetPortal = target.getPortal("sp");
var mobCount = pi.countMonster();
var playerS = pi.isLeader();
// only let people through if the eim is ready
if (playerS == false) {
// do nothing; send message to player
pi.getPlayer().dropMessage(6, "Only the party leader may enter this portal.");
return false;
}else if (mobCount < 1) {
eim.setProperty("entryTimeStamp", 1000 * 60 * 6);
for(var g=0; g<party.size(); g++) {
party.get(g).changeMap(target, targetPortal);
}
return true;
}else {
pi.getPlayer().dropMessage(6, "You need to kill all monsters before proceeding.");
return false;
}
if (pi.getMap().getMonsters().size() == 0) {
pi.warp(925100100,0); //next
return(true);
} else {
pi.playerMessage(5, "The portal is not opened yet.");
return(false);
}
}

View File

@@ -1,7 +1,7 @@
function enter(pi) {
try {
var em = pi.getEventManager("PiratePQ");
if (em != null && em.getProperty("stage2").equals("3")) {
var eim = pi.getEventInstance();
if (eim != null && eim.getProperty("stage2").equals("3")) {
pi.warp(925100200,0); //next
return(true);
} else {

View File

@@ -1,27 +1,26 @@
importPackage(Packages.server.life);
function enter(pi) {
if (pi.getMap().getReactorByName("sMob1").getState() >= 1 && pi.getMap().getReactorByName("sMob2").getState() >= 1 && pi.getMap().getReactorByName("sMob3").getState() >= 1 && pi.getMap().getReactorByName("sMob4").getState() >= 1) {
if (pi.isLeader()) {
var em = pi.getEventManager("PiratePQ");
var level = parseInt(em.getProperty("level"));
var chests = parseInt(em.getProperty("openedChests"));
if (pi.getMap().getReactorByName("sMob1").getState() >= 1 && pi.getMap().getReactorByName("sMob2").getState() >= 1 && pi.getMap().getReactorByName("sMob3").getState() >= 1 && pi.getMap().getReactorByName("sMob4").getState() >= 1 && pi.getMap().getMonsters().size() == 0) {
var eim = pi.getEventInstance();
if(eim.getProperty("spawnedBoss") == null) {
var level = parseInt(eim.getProperty("level"));
var chests = parseInt(eim.getProperty("openedChests"));
var boss;
if(chests == 0) boss = MapleLifeFactory.getMonster(9300119); //lord pirate
else if(chests == 1) boss = MapleLifeFactory.getMonster(9300105); //angry lord pirate
else boss = MapleLifeFactory.getMonster(9300106); //enraged lord pirate
boss.changeDifficulty(level, true);
pi.getMap(925100500).spawnMonsterOnGroundBelow(boss, new java.awt.Point(777, 140));
pi.warpParty(925100500); //next
return(true);
} else {
pi.playerMessage(5, "The leader must be here.");
return(false);
}
eim.setProperty("spawnedBoss", "true");
}
pi.warp(925100500, 0);
return(true);
} else {
pi.playerMessage(5, "The portal is not opened yet.");
return(false);

View File

@@ -2,7 +2,6 @@ function enter(pi) {
if ((pi.getMap().getMonsters().size() == 0 || pi.getMap().getMonsterById(9300183) != null) && (pi.getMap().getReactorByName("") == null || pi.getMap().getReactorByName("").getState() == 1)) {
if(pi.isLeader()) {
pi.getEventInstance().clearPQ();
pi.getEventInstance().warpEventTeam(930000800);
return true;
}
else {

View File

@@ -28,7 +28,7 @@ function enter(pi) {
var evLevel = ((pi.getMapId() - 1) % 5) + 1;
if(pi.getPlayer().getEventInstance().isLeader(pi.getPlayer()) && pi.getPlayer().getEventInstance().getPlayerCount() > 1) {
pi.message("Being the party leader, you cannot leave before your teammates leave first.");
pi.message("Being the party leader, you cannot leave before your teammates leave first or you pass leadership.");
return false;
}

View File

@@ -28,8 +28,8 @@ function enter(pi) {
if(pi.getMap().getMonsters().isEmpty()) {
var nextStage;
if(pi.getMapId() % 500 != 0) nextStage = pi.getMapId() + 100;
else nextStage = 970030001 + ((pi.getMapId() - 970030100) / 500);
if(pi.getMapId() % 500 >= 100) nextStage = pi.getMapId() + 100;
else nextStage = 970030001 + (Math.floor((pi.getMapId() - 970030100) / 500));
pi.warp(nextStage);
return true;

View File

@@ -1,4 +1,8 @@
function enter(pi) {
pi.warp(100000000,0);
var map = pi.getPlayer().getSavedLocation("BOSSPQ");
if (map == -1)
map = 100000000;
pi.warp(map,0);
return true;
}