Abstract channel schedulers + Mob animation track + More portal SFX
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.
This commit is contained in:
@@ -40,7 +40,8 @@ function enter(pi) {
|
||||
// do nothing; send message to player
|
||||
pi.getPlayer().dropMessage(6, "Horntail\'s Seal is Blocking this Door.");
|
||||
return false;
|
||||
}else {
|
||||
} else {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, targetPortal);
|
||||
return true;
|
||||
}
|
||||
@@ -56,7 +57,8 @@ function enter(pi) {
|
||||
// do nothing; send message to player
|
||||
pi.getPlayer().dropMessage(6, "Horntail\'s Seal is Blocking this Door.");
|
||||
return false;
|
||||
}else {
|
||||
} else {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, targetPortal);
|
||||
return true;
|
||||
}
|
||||
@@ -72,7 +74,8 @@ function enter(pi) {
|
||||
// do nothing; send message to player
|
||||
pi.getPlayer().dropMessage(6, "Horntail\'s Seal is Blocking this Door.");
|
||||
return false;
|
||||
}else {
|
||||
} else {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, targetPortal);
|
||||
return true;
|
||||
}
|
||||
@@ -88,7 +91,8 @@ function enter(pi) {
|
||||
// do nothing; send message to player
|
||||
pi.getPlayer().dropMessage(6, "Horntail\'s Seal is Blocking this Door.");
|
||||
return false;
|
||||
}else {
|
||||
} else {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, targetPortal);
|
||||
return true;
|
||||
}
|
||||
@@ -104,6 +108,7 @@ function enter(pi) {
|
||||
if (pi.haveItem(4001092) && pi.isEventLeader()) {
|
||||
eim.showClearEffect();
|
||||
pi.getPlayer().dropMessage(6, "The leader's key break the seal for a flash...");
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, targetPortal);
|
||||
eim.setIntProperty("5stageclear", 1);
|
||||
return true;
|
||||
@@ -111,7 +116,8 @@ function enter(pi) {
|
||||
pi.getPlayer().dropMessage(6, "Horntail\'s Seal is blocking this door. Only the leader with the key can lift this seal.");
|
||||
return false;
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, targetPortal);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ function enter(pi) {
|
||||
return false;
|
||||
}
|
||||
|
||||
pi.playPortalSound();
|
||||
eim.warpEventTeam(target);
|
||||
return true;
|
||||
} else {
|
||||
|
||||
@@ -28,6 +28,7 @@ function enter(pi) {
|
||||
var target = eim.getMapInstance(103000801);
|
||||
|
||||
if (eim.getProperty("1stageclear") != null) {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, target.getPortal("st00"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ function enter(pi) {
|
||||
var eim = pi.getPlayer().getEventInstance();
|
||||
var target = eim.getMapInstance(103000802);
|
||||
if (eim.getProperty("2stageclear") != null) {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, target.getPortal("st00"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ function enter(pi) {
|
||||
var eim = pi.getPlayer().getEventInstance();
|
||||
var target = eim.getMapInstance(103000803);
|
||||
if (eim.getProperty("3stageclear") != null) {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, target.getPortal("st00"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ function enter(pi) {
|
||||
var eim = pi.getPlayer().getEventInstance();
|
||||
var target = eim.getMapInstance(103000804);
|
||||
if (eim.getProperty("4stageclear") != null) {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, target.getPortal("st00"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ function enter(pi) {
|
||||
var eim = pi.getPlayer().getEventInstance();
|
||||
var target = eim.getMapInstance(103000805);
|
||||
if (eim.getProperty("5stageclear") != null) {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, target.getPortal("st00"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ function enter(pi) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, targetPortal);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ function enter(pi) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, targetPortal);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ function enter(pi) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, targetPortal);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ function enter(pi) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, targetPortal);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ function enter(pi) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, targetPortal);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ function enter(pi) {
|
||||
if(eim.getProperty("6stageclear") == null) {
|
||||
eim.setProperty("6stageclear", "true");
|
||||
}
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, targetPortal);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ function enter(pi) {
|
||||
var eim = pi.getPlayer().getEventInstance();
|
||||
var target = eim.getMapInstance(922010800);
|
||||
if (eim.getProperty("7stageclear") != null) {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, target.getPortal("st00"));
|
||||
return true;
|
||||
} else
|
||||
|
||||
@@ -37,6 +37,7 @@ function enter(pi) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
pi.playPortalSound();
|
||||
pi.getPlayer().changeMap(target, targetPortal);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
function enter(pi) {
|
||||
if (pi.getPlayer().getParty() != null && pi.isEventLeader() && pi.haveItem(4001055,1)) {
|
||||
pi.playPortalSound();
|
||||
pi.getEventInstance().warpEventTeam(920010100);
|
||||
return true;
|
||||
} else {
|
||||
|
||||
@@ -3,6 +3,7 @@ function enter(pi) {
|
||||
|
||||
if (eim.isEventCleared()) {
|
||||
if(pi.isEventLeader()) {
|
||||
pi.playPortalSound();
|
||||
eim.warpEventTeam(930000800);
|
||||
return true;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user