Ludibrium PQ + MapleIdRetriever

Implemented LPQ. New application tool that realizes fetches by names and
returns respective ids, over all items depicted in the GM handbook.
This commit is contained in:
ronancpl
2017-05-13 15:24:02 -03:00
parent ed6121dd5f
commit b26469301d
94 changed files with 36729 additions and 1186 deletions

View File

@@ -20,7 +20,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
@ Author : Raz
@ Author : Raz, Ronan
@
@ NPC = Green Balloon
@ Map = Hidden-Street <Stage 5>
@@ -28,89 +28,65 @@
@ Function = LPQ - 5th Stage
@
*/
importPackage(Packages.tools);
var status = 0;
var party;
var preamble;
var gaveItems;
var curMap, stage;
function start() {
curMap = cm.getMapId();
stage = Math.floor((curMap - 922010100) / 100) + 1;
status = -1;
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == -1) {
cm.dispose();//ExitChat
}else if (mode == 0){
cm.dispose();//No
}else{ //Regular Talk
if (mode == 1)
status++;
else
status--;
var eim = cm.getPlayer().getEventInstance();
var nthtext = "5th";
if (status == 0) {
party = eim.getPlayers();
preamble = eim.getProperty("leader" + nthtext + "preamble");
gaveItems = eim.getProperty("leader" + nthtext + "gaveItems");
if (preamble == null) {
cm.sendNext("Hi. Welcome to the " + nthtext + " stage. This is the 2nd stage, but everyone has to cooperate. There are 6 portals here. One is guarded by undefeatable monsters, and one is very high. I'd like you and your party to go in each one and break the boxes inside. Bring back the drops -- there should be 24.");//not 24!
eim.setProperty("leader" + nthtext + "preamble","done");
cm.dispose();
}else{
if(!isLeader()){
if(gaveItems == null){
cm.sendOk("Please tell your #bParty-Leader#k to come talk to me.");
cm.dispose();
}else{
cm.sendOk("Hurry, goto the next stage, the portal is open!");
cm.dispose();
}
}else{
if(gaveItems == null){
if(cm.getPlayer().getMap().getCharacters().size() != eim.getPlayers().size()) {
cm.sendOk("Please wait for all of your party members to get here.");
cm.dispose();
} else if(cm.itemQuantity(4001022) >= 24){
cm.sendOk("Good job! you have collected all 24 #b#t4001022#'s#k");
}else{
cm.sendOk("Sorry you don't have all 24 #b#t4001022#'s#k");
cm.dispose();
}
}else{
cm.sendOk("Hurry, goto the next stage, the portal is open!");
cm.dispose();
}
}}
}else if (status == 1){
cm.removeAll(4001022);
var map = eim.getMapInstance(cm.getPlayer().getMapId());
map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear"));
map.broadcastMessage(MaplePacketCreator.playSound("Party1/Clear"));
map.broadcastMessage(MaplePacketCreator.environmentChange("gate", 2));
cm.givePartyExp("LudiPQ5th");
eim.setProperty("5stageclear","true");
eim.setProperty("leader" + nthtext + "gaveItems","done");
cm.dispose();
}
}
function clearStage(stage, eim, curMap) {
eim.setProperty(stage + "stageclear", "true");
eim.showClearEffect(true);
eim.linkToNextStage(stage, "lpq", curMap); //opens the portal to the next map
}
function isLeader(){
if(cm.getParty() == null){
return false;
}else{
return cm.isLeader();
}
function action(mode, type, selection) {
if (mode == -1) {
cm.dispose();
} else if (mode == 0){
cm.dispose();
} else {
if (mode == 1)
status++;
else
status--;
var eim = cm.getPlayer().getEventInstance();
if(eim.getProperty(stage.toString() + "stageclear") != null) {
cm.sendNext("Hurry, goto the next stage, the portal is open!");
}
else {
if (eim.isLeader(cm.getPlayer())) {
var state = eim.getIntProperty("statusStg" + stage);
if(state == -1) { // preamble
cm.sendOk("Hi. Welcome to the #bstage " + stage + "#k. This is the 2nd stage, but everyone has to cooperate. There are 6 portals here. One is guarded by undefeatable monsters, and one is very high. I'd like you and your party to go in each one and break the boxes inside. Bring back the drops -- there should be 24.");
eim.setProperty("statusStg" + stage, 0);
}
else { // check stage completion
if (cm.haveItem(4001022, 24)) {
cm.sendOk("Good job! you have collected all 24 #b#t4001022#'s.#k");
cm.gainItem(4001022, -24);
eim.setProperty("statusStg" + stage, 1);
clearStage(stage, eim, curMap);
} else {
cm.sendNext("Sorry you don't have all 24 #b#t4001022#'s.#k");
}
}
} else {
cm.sendNext("Please tell your #bParty-Leader#k to come talk to me.");
}
}
cm.dispose();
}
}