Implemented an improved scheduler system for channels, on where Runnables objects are "registered in" to run on a scheduled future time (effective run time will depend on the proc time of the worker acting under-the-hood). Implemented a channel scheduler for detecting "mobs currently on animation state". This allows the server to send info to the client about whether a mob should cast a skill or not at that moment. Improved concurrent protection on MapleMonster listeners registry. Improved resource deallocation when destroying a monster object. Added a server flag to allow clean slates to be used on equipments even on the "only successfully used scroll slots" case. Fixed a critical deadlock case with MapleServerHandler. Added the portal SFX for many scripted portals that still lacked the sound effect.
43 lines
1.5 KiB
JavaScript
43 lines
1.5 KiB
JavaScript
/*
|
|
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 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/>.
|
|
*/
|
|
/*
|
|
LudiPQ - 1 - 2 Portal
|
|
@author Jvlaple
|
|
*/
|
|
|
|
function enter(pi) {
|
|
var nextMap = 922010400;
|
|
var eim = pi.getPlayer().getEventInstance();
|
|
var target = eim.getMapInstance(nextMap);
|
|
var targetPortal = target.getPortal("st00");
|
|
// only let people through if the eim is ready
|
|
var avail = eim.getProperty("3stageclear");
|
|
if (avail == null) {
|
|
// can't go thru eh?
|
|
pi.getPlayer().dropMessage(5, "Some seal is blocking this door.");
|
|
return false;
|
|
}
|
|
else {
|
|
pi.playPortalSound();
|
|
pi.getPlayer().changeMap(target, targetPortal);
|
|
return true;
|
|
}
|
|
} |